symm-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@symm-mcpdispatch a claude_code task to review my auth changes, then poll for results"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
symm-mcp
Symm is a lightweight asynchronous MCP channel for handing work between independent agents and re-entering it with fresh attention.
The work persists. The viewpoint changes.
Any MCP client can dispatch a task to another agent, keep working, and later observe the result and record a resolution: Dispatch → Observe → Resolve → Repeat. Symm does not decide who implements and who reviews; that is expressed in the prompt.
Status
Pre-release (0.1.0.dev0). The v0.1 task tools are implemented; publishing to PyPI and the
MCP Registry is not done yet, so install from Git for now.
Related MCP server: Think MCP Server
Tools
Tool | What it does |
| Dispatch a prompt to a registered agent. Returns as soon as the agent process is running. |
| Current state: execution |
| Events after |
| Record |
| Terminate a running agent's whole process group. A finished task is returned unchanged. |
Execution status (running, succeeded, failed, cancelled) says what happened to the
process. Resolution says what a caller concluded about the result. succeeded never implies
accepted.
Registered agents: claude_code (Claude Code in print mode, streaming JSON output). Its
options are limited to model, effort, permission_mode, and allowed_tools. Symm adds
no permission flags of its own: an agent that must edit files or run commands without a human
at the keyboard needs you to pass, for example, {"permission_mode": "acceptEdits"} or an
allowed_tools list.
Errors are tool errors whose text contains <code>: <message>, with codes unknown_agent,
invalid_request, task_not_found, and invalid_transition.
Use
Requires uv, and the claude CLI on PATH for the
claude_code agent. Register Symm with an MCP client, for example Claude Code:
claude mcp add symm -- uvx --from git+https://github.com/tacticaldoll/symm-mcp symm-mcpOr in a client's JSON configuration:
{
"mcpServers": {
"symm": {
"command": "uvx",
"args": ["--from", "git+https://github.com/tacticaldoll/symm-mcp", "symm-mcp"]
}
}
}A typical loop, as the calling agent sees it:
spawn_task(agent="claude_code", prompt="Review the authentication changes in this workspace and list concrete flaws.", workspace="/path/to/repo")returns atask_idwhile the reviewer starts working.Continue with other work.
get_events(task_id, after_seq=<cursor>)to follow progress;get_task(task_id)oncestatusis terminal.resolve_task(task_id, resolution="needs_followup", note="two findings to fix"), then dispatch the next task, possibly with the reviewer and implementer roles swapped.
Agents run in the given workspace (default: the server's working directory) with the server's environment. Symm does not copy, isolate, or clean workspaces.
v0.1 Scope and Limitations
stdio only, process-local task ledger. Each MCP client launches its own Symm server, and each server sees only the tasks it dispatched.
stdio + in-memory = process-local task ledger.In memory only. Task state is lost when the server process exits. There is no recovery.
No output caps or retention policy yet. Every output line is kept as an event; long, high-output tasks grow server memory.
Tools only. No MCP resources or subscriptions yet; observe by polling
get_eventswith its cursor.No orphans. When the client disconnects or the server receives SIGTERM, SIGINT, or SIGHUP, every running agent's process group is terminated before the server exits.
Your environment, your permissions. Symm never escalates an agent's permissions; dependencies, secrets, sandboxing, and workspace cleanliness are the caller's responsibility.
POSIX only. Process groups and signals; Windows is not supported.
Rationale: ADR 0003.
Run Locally
From a checkout:
uv run symm-mcpThe command speaks MCP over stdio, so it is meant to be launched by an MCP client rather than used interactively.
Development
This project uses OpenSpec; read AGENTS.md before changing anything. The Definition of Done:
uv sync
uv run python -m compileall -q src tests
uv run python -m pytest
uv run ruff check .
uv run ruff format --check .
./scripts/changelog-guard.shLicense
Licensed under either of Apache-2.0 or MIT, at your option.
This server cannot be deployed
Maintenance
Related MCP Connectors
Cron-as-a-service MCP. Schedule prompts; when the cron fires we POST to your callback URL.
Generate contextual prompts and reusable agent skills, evaluate prompts with the 16-dimension Prompt Score, and manage saved work in PromptDrive. Twelve MCP tools also provide authorized access to private Memory for source-grounded answers. Connect over Streamable HTTP using OAuth 2.1 and PKCE. Generation consumes account quota and automatically saves successful results; Memory access follows account permissions and plan limits.
Discover and call AI agents via MCP. Supports A2A agents and platform agents with async tasks.
Hosted MCP memory and agent control plane for durable conversations, jobs, and operations.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables delegation of immediate conversational messages and long-running background tasks to OpenClaw agents. It allows users to spawn research or monitoring tasks, check execution status, and manage active agent sessions within MCP-compatible clients.-
- AlicenseNot gradedqualityCmaintenanceProvides prompt management, resource management, and tool call capabilities (content analysis, article analysis) based on the MCP protocol.3MIT
- AlicenseAqualityDmaintenanceEnables storage, versioning, and retrieval of prompts with rich metadata via MCP tools, supporting stdio and SSE transports.38 npm3ISC
- AlicenseAqualityDmaintenanceEnables MCP agents to submit content for human review via LoopQuest, returning verdicts asynchronously.27 npmMIT