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.
| Feature | Server | What it provides |
|---|---|---|
coding | CodingMcp | File read/write/edit, bash, grep, ast_grep structural search, find, LSP integration, web fetch/search |
skills | SkillsMcp | Slash commands and reusable skill prompts |
tasks | TasksMcp | Hierarchical task management with dependencies |
subagents | SubAgentsMcp | Spawn and orchestrate sub-agents |
survey | SurveyMcp | Human-in-the-loop elicitation (ask the user questions) |
plan | PlanMcp | Submit markdown plans for approval via native elicitation |
§Table of Contents
§Documentation
Full API documentation is available on docs.rs.
Key entry points:
CodingMcp– file I/O, shell, search, and LSP toolsCodingTools– trait for custom tool backendsLspRegistry– manages LSP daemon connectionsTasksMcp– hierarchical task managementSkillsMcp– skill prompts and slash commandsSubAgentsMcp– sub-agent orchestrationSurveyMcp– structured user input collectionPlanMcp– plan review and approval workflowMcpBuilderExt– register all servers in one call
§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:
| Server | Flag | Default | Description |
|---|---|---|---|
coding | --root-dir <path> | cwd | Workspace root for LSP and file operations |
coding | --rules-dir <path> (repeatable) | none | Explicit prompt directories for automatic read-triggered rules |
coding | --disable-lsp | enabled | Disable LSP-backed tools and aether-lspd daemon connections |
skills | --dir <path> (repeatable) + --notes-dir <path> | required | Prompt 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 serverscoding– file ops, bash, LSP, web toolsskills– slash commands and promptstasks– task tracking (no dependency oncoding)subagents– sub-agent spawning (impliescoding,skills,tasks,survey,plan)survey– structured human elicitation toolingplan– markdown plan submission and approval workflowall– 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;