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 tools CodingTools-- trait for custom tool backendsLspRegistry-- manages LSP daemon connectionsTasksMcp-- hierarchical task managementSkillsMcp-- skill prompts and slash commandsSubAgentsMcp-- sub-agent orchestrationReviewMcp-- Markdown artifact review and feedback workflow- [
McpBuilderExt] -- 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:
Each server key must match a factory registered with McpBuilder::register_in_memory_server(). Config loading only records a cloneable in-memory server specification and expands its variables. The factory is invoked exactly once during McpBuilder::spawn, after the runtime MCP handle exists. It receives the specification plus RuntimeServices containing the live McpHandle, root directory, and AgentDeps. 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) |
required | Prompt directories to scan |
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 |
review |
--root-dir <path> |
workspace root | Base for relative artifact paths |
To register factories and load the config:
use mcp;
use McpBuilderExt;
let builder = mcp
.with_agent_deps
.with_builtin_servers
.from_json_files?;
// Built-in factories have not run yet. They receive RuntimeServices here.
let runtime = builder.spawn.await?;
Custom factories use the same lazy signature:
builder.register_in_memory_server;
Programmatic Usage
Add to your Cargo.toml:
# Everything
= { = "../mcp-servers" }
# Just coding tools
= { = "../mcp-servers", = false, = ["coding"] }
Create and start servers directly:
use ;
use ServiceExt;
// Create a coding server
let server = new
.with_root_dir
.into_dyn;
// Or with LSP support
let server = new
.with_root_dir
.with_lsp
.into_dyn;
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