manifestation-mcp
Enables coding agents to design first by interviewing users, refining specs in digestible chunks, producing bite-sized TDD plans, and autonomously executing them through subagents with a server-verified red/green testing gate.
README
manifestation-mcp
An MCP server that makes a coding agent design-first. The moment you want to build something, it doesn't lunge into code — it steps back and interviews you, teases out a spec and shows it back in digestible chunks, turns your sign-off into a bite-sized red/green TDD plan, and then runs a subagent-driven development loop (implementer → reviewer → quality gate) that can grind through the plan on its own.
It's a portable Python MCP server: the server is the brain (a five-phase state
machine + your spec/plan + a skills library) and it runs its own subagents
internally via the Claude Agent SDK — so one run call can work autonomously for
a long stretch without drifting from the plan.
The five phases
DISCOVERY → interview you; do NOT write code
SPEC → draft a spec; sign off chunk-by-chunk
PLAN → bite-sized red/green TDD task list (YAGNI, DRY)
EXECUTE → per task: implementer subagent → reviewer subagent → gate
DONE → artifacts left under .manifestation/ in your repo
State lives as inspectable files in the target repo:
<repo>/.manifestation/<project-id>/{state.json, spec.md, plan.md}.
Requirements
- Python 3.10+
uv(brew install uv)- For live execution (
run): the Claude Code CLI on yourPATHand Claude credentials (ANTHROPIC_API_KEYor an existing Claude Code login). The Agent SDK drives it to run the implementer/reviewer subagents. gitin the target repo — the TDD gate usesgit worktreeto verify that a real failing test preceded the implementation.
Setup
cd manifestation-mcp
uv sync
uv run pytest # 96 tests, no network required (1 live smoke skipped)
Run it
Recommended local launcher (robust against uv's editable-install quirk):
uv run python run_server.py
Register it with Claude Code:
claude mcp add manifestation -- uv run --project /ABS/PATH/TO/manifestation-mcp python /ABS/PATH/TO/manifestation-mcp/run_server.py
(For a packaged install via uvx/pipx, the manifestation-mcp console script
works directly.)
Auto-trigger (optional)
Copy skill-shim/SKILL.md into your Claude Code skills (e.g.
~/.claude/skills/manifestation/SKILL.md). Its description fires on "build /
implement / add a feature", so the workflow starts itself — you don't have to
invoke anything. Without it, kick off manually with the /manifestation prompt or
by calling the start_project tool.
The tools
| Tool | What it does |
|---|---|
start_project(brief, repo_path) |
Create a project (validates the repo path); returns interview questions. |
submit_answers(project_id, answers) |
Feed answers; asks more or advances to SPEC. |
next_spec_chunk(project_id) |
Next digestible spec chunk to review (bounded in size). |
review_spec_chunk(project_id, decision, feedback?) |
approve / revise a chunk. |
make_plan(project_id) |
Generate the repo-aware TDD plan; returns full task bodies. Does not start execution. |
approve_plan(project_id) |
Record the user's sign-off and advance to EXECUTE. |
run(project_id, until?, max_agent_calls?, max_budget_usd?) |
Subagent-driven loop with a server-verified TDD gate; checkpoints per step; streams progress; reports agent_calls/cost_usd. |
reset_task(project_id, task_id) |
Unblock a BLOCKED task so run can retry it. |
status(project_id) / list_projects() |
Inspect progress (per-task attempts, findings, approval state). |
Prompt: /manifestation <brief>. Resources: skills://all, skill://<name>.
Model selection
Nothing is hard-coded to a dated model. By default the server inherits the
model the Claude Code CLI is configured with. Override globally with the
MANIFESTATION_MODEL env var (e.g. MANIFESTATION_MODEL=claude-opus-5), or
per-invocation in code via AgentSDKClient(model=...).
Safety model (read before using run)
run executes real subagents in your repo, so understand the trust boundary:
- The implementer gets write +
Bash. That is arbitrary code execution in the target repo by design — run it only against repos you trust, and prefer a container/VM for untrusted work. There is no sandbox. - The reviewer and planner are read-only two ways: mutating tools are in
the SDK's
disallowed_tools, and acan_use_toolpermission callback denies every tool not on their allowlist — covering tools we didn't enumerate (WebFetch, Task, MCP tools). Safe even in an untrusted repo. - TDD is verified server-side, not trusted from prose. After the implementer
runs, the server runs the task's declared test command itself: it must pass at
HEAD(real GREEN), and it must fail when re-run against the implementer's test-only commit (HEAD~1) in a throwaway git worktree (real RED). Fabricated or reordered evidence is caught; fail-closed if git/test can't confirm it. - A PASS verdict with any trailing findings is treated as a contradiction and fails the task.
runrequires an approved plan, checkpoints after every step (and resumes a crashed attempt at the review step rather than re-running the implementer, so edits aren't duplicated), keeps a full audit trail, and is always bounded —max_agent_calls/max_budget_usd(both exposed via MCP), or a built-in default cap.- Mutating tool calls are serialized per project by an in-process lock and a cross-process file lock.
- Prompt injection via the brief/answers/spec still flows into subagent prompts — treat project inputs as untrusted.
How it stays honest (and testable)
Every LLM interaction goes through one injectable seam (LLMClient). Unit tests
inject a FakeLLMClient, so the whole state machine — discovery, spec chunking,
plan generation, and the execute loop with its retries and review gates — is
verified with zero network calls. The real AgentSDKClient sits behind that
seam and is only exercised by the opt-in live smoke test.
Architecture
src/manifestation_mcp/
server.py # MCP tools/prompts/resources (thin wiring)
state.py # Project/Phase/Task model + file persistence + registry
llm.py # LLMClient seam: FakeLLMClient (tests) + AgentSDKClient (real)
agents.py # implementer / reviewer / planner subagent presets
runner.py # CommandRunner seam: SubprocessRunner (real) + FakeCommandRunner
phases/ # discovery, spec, plan, execute, verify (server-side TDD check)
skills/ # bundled Markdown skills, injected into subagent prompts
run_server.py # bulletproof local launcher
skill-shim/ # optional Claude Code auto-trigger skill
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。