Skip to main content

Crate mcp_servers

Crate mcp_servers 

Source
Expand description

§mcp-servers

Pre-built MCP tool servers for Aether agents. Each server runs in-process and is gated behind a feature flag so you only compile what you need.

FeatureServerWhat it provides
codingCodingMcpFile read/write/edit, bash, LSP integration, web fetch/search
skillsSkillsMcpSlash commands and reusable skill prompts
tasksTasksMcpHierarchical task management with dependencies
subagentsSubAgentsMcpSpawn concurrent sub-agents in the foreground or as an MCP Task
reviewReviewMcpReview agent-authored Markdown via native elicitation

§Table of Contents

§Documentation

Full API documentation is available on docs.rs.

Key entry points:

§Using with Aether (mcp.json)

These servers use Aether’s in-memory transport type – they run inside your agent process, not as separate subprocesses. Wire them up in mcp.json:

{
  "servers": {
    "coding": {
      "type": "in-memory",
      "args": ["--rules-dir", ".aether/skills"]
    },
    "skills": {
      "type": "in-memory",
      "args": ["--dir", ".aether/skills"]
    },
    "tasks": {
      "type": "in-memory"
    },
    "subagents": {
      "type": "in-memory",
      "args": ["--project-root", "."]
    },
    "review": {
      "type": "in-memory"
    }
  }
}

Each server key must match a factory registered with McpBuilder::register_in_memory_server(). Loading the config only expands the server’s variables. The factory is invoked exactly once during McpBuilder::spawn, after the deferred-tools endpoint is bound. It receives the server’s args, with variables expanded, plus RuntimeServices containing the root directory, AgentDeps, and the deferred-tools socket path (when any server defers its tools). The args array is parsed as CLI flags by each server, with relative paths resolved against the root directory. Invalid args fail spawn with McpSpawnError::ServerFactory rather than falling back to defaults:

ServerFlagDefaultDescription
coding--root-dir <path>workspace rootWorkspace root for LSP and file operations
coding--rules-dir <path> (repeatable)noneExplicit prompt directories for automatic read-triggered rules
coding--permission-mode <mode>always-allowalways-allow, auto, or always-ask
coding--disable-lspenabledDisable LSP-backed tools and aether-lspd daemon connections
skills--dir <path> (repeatable)requiredPrompt directories to scan
tasks--dir <path>session-scoped temp dirBase directory for persistent task storage (creates .aether-tasks/ inside)
subagents--project-root <path> (alias: --dir)workspace rootProject root containing optional .aether/settings.json authored agents
review--root-dir <path>workspace rootBase for relative artifact paths

To register factories and load the config:

ⓘ
use aether_core::mcp::mcp;
use mcp_servers::McpBuilderExt;
use aether_core::mcp::McpConfig;

let builder = mcp("/my/project")
    .with_agent_deps(deps)
    .with_builtin_servers()
    .with_config(McpConfig::from_json_file("mcp.json")?)?;

// Built-in factories have not run yet. They receive RuntimeServices here.
let runtime = builder.spawn()?;

Custom factories use the same lazy signature and return an error for invalid args:

ⓘ
builder.register_in_memory_server("custom", |args, services| {
    Ok(McpServer::new(CustomMcp::from_args(args, &services.root_dir)?))
});

§Programmatic Usage

Add to your Cargo.toml:

# Everything
mcp-servers = { path = "../mcp-servers" }

# Just coding tools
mcp-servers = { path = "../mcp-servers", default-features = false, features = ["coding"] }

Create and start servers directly:

ⓘ
use mcp_servers::{CodingMcp, SkillsMcp, TasksMcp};
use mcp_utils::server::McpServer;

// Create a coding server
let server = McpServer::new(CodingMcp::new("/my/project"));

// Or with LSP support
let server = McpServer::new(CodingMcp::new("/my/project").with_lsp());

server.serve_stdio().await?;

§Server Documentation


§Feature Flags

  • default – coding, skills, tasks, subagents, and review servers
  • coding – file ops, bash, LSP, web tools
  • skills – slash commands and prompts
  • tasks – task tracking (no dependency on coding)
  • subagents – sub-agent spawning (implies coding, skills, tasks, review)
  • review – Markdown artifact review through elicitation
  • all – explicit alias enabling all built-in servers

Re-exports§

pub use setup::Builtin;
pub use setup::McpBuilderExt;
pub use setup::agent_mcp;
pub use coding::CodingMcp;
pub use coding::CodingMcpArgs;
pub use coding::PermissionMode;
pub use lsp::LspRegistry;
pub use skills::SkillsMcp;
pub use skills::SkillsMcpArgs;
pub use tasks::TasksMcp;
pub use tasks::TasksMcpArgs;
pub use subagents::SubAgentsMcp;
pub use subagents::SubAgentsMcpArgs;
pub use review::ArtifactFormat;
pub use review::ArtifactSource;
pub use review::HtmlAnnotation;
pub use review::ReviewArtifactInput;
pub use review::ReviewArtifactOutput;
pub use review::ReviewMcp;
pub use review::ReviewMcpArgs;

Modules§

coding
file_ops
lsp
review
setup
skills
subagents
tasks
Task management for deep research agent workflows.
testing
Shared fakes and builders for exercising aether-mcp-servers without real I/O.
workspace_paths

Structs§

Displayed