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, grep, ast_grep structural search, find, LSP integration, web fetch/search
skillsSkillsMcpSlash commands and reusable skill prompts
tasksTasksMcpHierarchical task management with dependencies
subagentsSubAgentsMcpSpawn and orchestrate sub-agents
surveySurveyMcpHuman-in-the-loop elicitation (ask the user questions)
planPlanMcpSubmit markdown plans for approval 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", "--notes-dir", ".aether/notes"]
    },
    "tasks": {
      "type": "in-memory"
    },
    "subagents": {
      "type": "in-memory",
      "args": ["--project-root", "."]
    },
    "plan": {
      "type": "in-memory"
    }
  }
}

Each server key must match a factory registered with McpBuilder::register_in_memory_server(). The args array is parsed as CLI flags by each server:

ServerFlagDefaultDescription
coding--root-dir <path>cwdWorkspace root for LSP and file operations
coding--rules-dir <path> (repeatable)noneExplicit prompt directories for automatic read-triggered rules
coding--disable-lspenabledDisable LSP-backed tools and aether-lspd daemon connections
skills--dir <path> (repeatable) + --notes-dir <path>requiredPrompt directories to scan and directory for persisted notes
tasks--dir <path>.Base directory for task storage (creates .aether-tasks/ inside)
subagents--project-root <path> (alias: --dir).Project root containing optional .aether/settings.json authored agents

To register factories and load the config:

ⓘ
use aether_core::mcp::mcp;
use futures::FutureExt;
use mcp_servers::{CodingMcp, PlanMcp, SkillsMcp, SubAgentsMcp, TasksMcp};

let builder = mcp()
    .register_in_memory_server("coding", Box::new(|_args| {
        async move { CodingMcp::new().into_dyn() }.boxed()
    }))
    .register_in_memory_server("skills", Box::new(|args| {
        async move { SkillsMcp::from_args(args).unwrap().into_dyn() }.boxed()
    }))
    .register_in_memory_server("tasks", Box::new(|args| {
        async move { TasksMcp::from_args(args).unwrap().into_dyn() }.boxed()
    }))
    .register_in_memory_server("subagents", Box::new(|args| {
        async move { SubAgentsMcp::from_args(args).unwrap().into_dyn() }.boxed()
    }))
    .register_in_memory_server("plan", Box::new(|_args| {
        async move { PlanMcp::new().into_dyn() }.boxed()
    }));

// Load mcp.json -- matches server keys to registered factories
let builder = builder.from_json_files(&["mcp.json"]).await?;

§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 rmcp::ServiceExt;

// Create a coding server
let server = CodingMcp::new()
    .with_root_dir("/my/project".into())
    .into_dyn();

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

§Server Documentation


§Feature Flags

  • default – coding, skills, tasks, subagents, and plan 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, survey, plan)
  • survey – structured human elicitation tooling
  • plan – markdown plan submission and approval workflow
  • all – explicit alias enabling all built-in servers

Re-exports§

pub use setup::McpBuilderExt;
pub use coding::CodingMcp;
pub use coding::CodingMcpArgs;
pub use coding::CodingTools;
pub use coding::DefaultCodingTools;
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 survey::SurveyMcp;
pub use plan::DEFAULT_PLAN_PROMPT;
pub use plan::PlanMcp;
pub use plan::PlanMcpArgs;

Modules§

coding
error
file_ops
lsp
plan
setup
skills
subagents
survey
tasks
Task management for deep research agent workflows.
workspace_paths