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, LSP integration, web fetch/search |
skills | SkillsMcp | Slash commands and reusable skill prompts |
tasks | TasksMcp | Hierarchical task management with dependencies |
subagents | SubAgentsMcp | Spawn concurrent sub-agents in the foreground or as an MCP Task |
review | ReviewMcp | Review agent-authored Markdown 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 toolsLspRegistry– manages LSP daemon connectionsTasksMcp– hierarchical task managementSkillsMcp– skill prompts and slash commandsSubAgentsMcp– sub-agent orchestrationReviewMcp– Markdown artifact review and feedback 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"]
},
"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:
| Server | Flag | Default | Description |
|---|---|---|---|
coding | --root-dir <path> | workspace root | Workspace root for LSP and file operations |
coding | --rules-dir <path> (repeatable) | none | Explicit prompt directories for automatic read-triggered rules |
coding | --permission-mode <mode> | always-allow | always-allow, auto, or always-ask |
coding | --disable-lsp | enabled | Disable LSP-backed tools and aether-lspd daemon connections |
skills | --dir <path> (repeatable) | required | Prompt directories to scan |
tasks | --dir <path> | session-scoped temp dir | Base directory for persistent task storage (creates .aether-tasks/ inside) |
subagents | --project-root <path> (alias: --dir) | workspace root | Project root containing optional .aether/settings.json authored agents |
review | --root-dir <path> | workspace root | Base 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 serverscoding– file ops, bash, LSP, web toolsskills– slash commands and promptstasks– task tracking (no dependency oncoding)subagents– sub-agent spawning (impliescoding,skills,tasks,review)review– Markdown artifact review through elicitationall– 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-serverswithout real I/O. - workspace_
paths