Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Coach first Zeus Client app to green (stdio MCP).
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
ZEUS_URL, ZEUS_BUCKET, ZEUS_SCOPE, ZEUS_USERNAME, ZEUS_PASSWORD, ZEUS_BEARER_TOKEN, ZEUS_CHAT_REQUEST_DIR, GITHUB_TOKEN, DEMO_TRAVEL_SAMPLE_DIR, ZEUS_DEV_HELPER_TOOLSETS标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"zeus-dev-helper": {
"command": "uvx",
"args": [
"zeus-dev-helper-mcp"
],
"env": {
"ZEUS_URL": "your-value",
"ZEUS_BUCKET": "your-value",
"ZEUS_SCOPE": "your-value",
"ZEUS_USERNAME": "your-value",
"ZEUS_PASSWORD": "your-value",
"ZEUS_BEARER_TOKEN": "your-value",
"ZEUS_CHAT_REQUEST_DIR": "your-value",
"GITHUB_TOKEN": "your-value",
"DEMO_TRAVEL_SAMPLE_DIR": "your-value",
"ZEUS_DEV_HELPER_TOOLSETS": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add zeus-dev-helper --env ZEUS_URL=your-value --env ZEUS_BUCKET=your-value --env ZEUS_SCOPE=your-value --env ZEUS_USERNAME=your-value --env ZEUS_PASSWORD=your-value --env ZEUS_BEARER_TOKEN=your-value --env ZEUS_CHAT_REQUEST_DIR=your-value --env GITHUB_TOKEN=your-value --env DEMO_TRAVEL_SAMPLE_DIR=your-value --env ZEUS_DEV_HELPER_TOOLSETS=your-value -- uvx zeus-dev-helper-mcp运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"zeus-dev-helper": {
"command": "uvx",
"args": [
"zeus-dev-helper-mcp"
],
"env": {
"ZEUS_URL": "your-value",
"ZEUS_BUCKET": "your-value",
"ZEUS_SCOPE": "your-value",
"ZEUS_USERNAME": "your-value",
"ZEUS_PASSWORD": "your-value",
"ZEUS_BEARER_TOKEN": "your-value",
"ZEUS_CHAT_REQUEST_DIR": "your-value",
"GITHUB_TOKEN": "your-value",
"DEMO_TRAVEL_SAMPLE_DIR": "your-value",
"ZEUS_DEV_HELPER_TOOLSETS": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"zeus-dev-helper": {
"type": "stdio",
"command": "uvx",
"args": [
"zeus-dev-helper-mcp"
],
"env": {
"ZEUS_URL": "your-value",
"ZEUS_BUCKET": "your-value",
"ZEUS_SCOPE": "your-value",
"ZEUS_USERNAME": "your-value",
"ZEUS_PASSWORD": "your-value",
"ZEUS_BEARER_TOKEN": "your-value",
"ZEUS_CHAT_REQUEST_DIR": "your-value",
"GITHUB_TOKEN": "your-value",
"DEMO_TRAVEL_SAMPLE_DIR": "your-value",
"ZEUS_DEV_HELPER_TOOLSETS": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
ZEUS_URL envZEUS_BUCKET envZEUS_SCOPE envZEUS_CHAT_REQUEST_DIR envDEMO_TRAVEL_SAMPLE_DIR envZEUS_DEV_HELPER_TOOLSETS env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日
注册名称已通过 GitHub 账户 koten-ai 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:ZEUS_USERNAME, ZEUS_PASSWORD, ZEUS_BEARER_TOKEN, GITHUB_TOKEN
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.7.12)于3天前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Commonly
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Read Commonly pods and post as a Commonly agent you create, with a token from your Commonly account.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Stdio MCP server that coaches a coding agent and a human to a first successful Zeus Client app turn.
This is not a data-plane MCP. It does not run Explore/Verify verbs on your behalf, invent contract hashes, or perform Hub admin mutations. After the first-green smokes pass, data-plane and multi-agent work are handoffs only.
| Package | zeus-dev-helper-mcp |
| Registry name | io.github.koten-ai/zeus-dev-helper |
| Transport | stdio |
| Python | 3.11+ |
| MCP SDK | mcp (FastMCP on 1.x / MCPServer on 2.x) |
The server walks a first-app checklist: prereqs, live readiness on the public Zeus API, catalog templates, contract bind (copy a stamped hash only), surface/verb coaching, config lint, and smoke tests. Prefer a live Zeus stamp for catalogs. fetch_chat_request is always template only.
Hard constraints the tools enforce:
contract_hashverify_local_setup and smoke_test_agent import zeus_client in this Helper process. Install the agent extra into that environment. The app .venv does not satisfy the check.
pip install "zeus-dev-helper-mcp[agent]"
uvx --from 'zeus-dev-helper-mcp[agent]' zeus-dev-helper-mcp
zeus-dev-helper-mcp
python -m zeus_dev_helper_mcp
Prefer the published console script (uvx / pip install) so hosts do not need a source checkout.
Set ZEUS_URL to your Zeus public API on port 8080 (never Hub :9091). Prefer the remote host you actually use. Use http://localhost:8080 only when Zeus runs on the same machine as the MCP host.
# Remote Zeus (typical lab / shared engine) — put your host here
export ZEUS_URL=http://192.168.0.219:8080
#
If the user names a URL or sample in chat, call `set_prereq` with that zeus_url / bucket / scope (do not keep a stale localhost default). doctor reports stored vs effective URL routing (see ZDM-3).
grok mcp add treats flags like -m as its own unless they come after `--`. The uvx argument is the PyPI package zeus-dev-helper-mcp, not the MCP server id zeus-dev-helper.
grok mcp add zeus-dev-helper \
-e ZEUS_URL=http://192.168.0.219:8080 \ -- uvx --from 'zeus-dev-helper-mcp[agent]' zeus-dev-helper-mcp
From a local checkout after pip install -e ".[dev,agent]", point command at this tree’s venv so the host can start the server even when it was launched without the venv activated:
grok mcp add zeus-dev-helper \
-e ZEUS_URL=http://192.168.0.219:8080 \ -- "$(pwd)/.venv/bin/python" -m zeus_dev_helper_mcp
Equivalent config:
[mcp_servers.zeus-dev-helper]
command = "uvx" args = ["--from", "zeus-dev-helper-mcp[agent]", "zeus-dev-helper-mcp"] env = { ZEUS_URL = "http://192.168.0.219:8080" } enabled = true
Then refresh MCP servers, or grok mcp doctor zeus-dev-helper.
Common failures:
unexpected argument '-m' — missing -- before the python commanduvx zeus-dev-helper / No solution found — wrong package name; use `uvx --from 'zeus-dev-helper-mcp[agent]' zeus-dev-helper-mcp`No module named 'zeus_client' — this Helper process has no agent extra. Installing kotenai-zeus-client into the app .venv leaves the check red. Restart the MCP server after installing the extra into the Helper environment.No module named 'zeus_dev_helper_mcp' / python: No such file or directory — the host did not inherit the venv; use the .venv/bin/python path aboveNo module named 'mcp.server.fastmcp' — mcp 2.x renamed FastMCP; use Helper 0.6.0+ (mcp>=1.8.0,<3){
"mcpServers": { "zeus-dev-helper": { "command": "uvx", "args": ["--from", "zeus-dev-helper-mcp[agent]", "zeus-dev-helper-mcp"], "env": { "ZEUS_URL": "http://192.168.0.219:8080" } } } }
Add (or merge) .cursor/mcp.json in the project (or use Cursor’s global MCP settings):
{
"mcpServers": { "zeus-dev-helper": { "command": "uvx", "args": ["--from", "zeus-dev-helper-mcp[agent]", "zeus-dev-helper-mcp"], "env": { "ZEUS_URL": "http://192.168.0.219:8080" } } } }
The permission profile :workspace does not enable network. With sandbox_approval false, Codex does not ask to enable it. Pip then reports [Errno -2] Name or service not known. That is EAI_NONAME from the closed network. A package host that answers outside the sandbox can still look like a DNS failure inside it.
Set a top-level profile that extends :workspace and enables network. Do not also set sandbox_mode or [sandbox_workspace_write]. Start a new Codex thread after the change. Leave the network proxy off unless localhost is allowlisted, because sandboxed commands still need local Zeus.
default_permissions = "workspace-net"
[permissions.workspace-net] description = "Workspace writes plus outbound network so sandboxed commands can resolve package hosts." extends = ":workspace"
[permissions.workspace-net.network] enabled = true
[mcp_servers.zeus-dev-helper]
command = "uvx" args = ["--from", "zeus-dev-helper-mcp[agent]", "zeus-dev-helper-mcp"]
Install the app requirements.txt from a process that already has network. That install does not put zeus_client on the Helper interpreter. Restart the MCP server after the Helper environment gains the agent extra.
Point the host’s MCP stdio entry at uvx --from 'zeus-dev-helper-mcp[agent]' zeus-dev-helper-mcp (or python -m zeus_dev_helper_mcp from a venv that has the agent extra) with the same env vars. Replace the sample IP with your Zeus host.
doctor → (if user named URL/sample) set_prereq → start_project → next_step
→ readiness_check → use_sample | scaffold_app → bind_contract → recommend_surface → smoke_test_zeus → smoke_test_agent → diagnose_error
Prefer next_step over dumping the full checklist. Two first-green paths (TravelPlan is not the only path):
start_project(sample=travel) → `use_sample`, which follows the beer creation procedure for public demo_travel_sample. The clone URL stays https://github.com/koten-ai/demo_travel_sample.git. The destination is sample_dir, or parent_dir plus project_name. A blank parent is the directory next to this Helper checkout. A foreign default directory moves to the next open sibling. An explicit foreign sample_dir returns foreign_sample_dir and writes nothing. A recorded checkout that answers GET /api/health stays in place. The entrypoint stays python -m travel_planner on port 5000 unless PORT is set. use_sample writes a mode 600 .env from the non-secret Zeus and LLM names, keeps populated values, and fills empties. A rewrite of an existing .env sets env_change. settings_written names which of ZEUS_AUTH_MODE, ZEUS_USERNAME, LLM_BASE_URL, and LLM_MODEL changed. settings_kept gives the populated values that stayed. ZEUS_PASSWORD, ZEUS_BEARER_TOKEN, and LLM_API_KEY stay presence-only in secret_presence. Restart the app before run_turn when env_change is true. ZEUS_USERNAME defaults to demo_1. The create path does not rewrite the Dockerfile or compose file. Checklist 1.2 stays open until this process has LLM_API_KEY, XAI_API_KEY, or OPENAI_API_KEY, because this page is search and has no Direct list. Checklist 3.2 stays open until that key is in the app .env. set_prereq(has_llm_key=true) does not count. After the app is on disk, checklist 5.1, 5.2, and 6.1 recommend website_green. Travel is one scope: smoke-green does not recommend handoff_to_multi and does not write jobs.host_url.start_project(sample=beer) → use_sample(sample=beer) clones public demo_beer_sample when missing and sets DEMO_BEER_SAMPLE_DIR. That checkout is the app. Start it with Python 3.11 or newer. The use_sample run string uses python3 -m venv only when python3 is 3.11 or newer. Then pip install -r requirements.txt and python main.py (binds 127.0.0.1:8090). When that checkout has both a Dockerfile and a compose file, use_sample asks the agent to let the user choose Python or Docker before either command starts. website_green(serve_with=python|docker) records the choice. The helper does not run Docker. That requirements file installs kotenai-zeus-client>=2.5.3,<2.6 from PyPI. use_sample writes mode 600 .env from .env.example, keeps populated values, and adds missing template keys. A rewrite of an existing .env sets env_change. settings_written names which of ZEUS_AUTH_MODE, ZEUS_USERNAME, LLM_BASE_URL, and LLM_MODEL changed. settings_kept gives the populated values that stayed. ZEUS_PASSWORD, ZEUS_BEARER_TOKEN, and LLM_API_KEY stay presence-only in secret_presence. Restart the app before run_turn when env_change is true. It resolves LLM_API_KEY, LLM_BASE_URL, and LLM_MODEL together, and copies OPENAI_API_KEY or XAI_API_KEY only when the base URL and model match that provider. The clone keeps LLM_MODEL=grok-4.5-latest. run and next_action do not say to copy .env.example over that file. website_green does not run pip when the app .venv is older than 3.11. Lists are Direct and need no LLM key. Pour matches travel: rt.agent.run_turn with chat_request omitted so catalog.load_for_turn merges the live SCOPE BRIEF and MINI-SCHEMA. A helper-written catalog page uses max_rounds 4. Pour stays off until LLM_API_KEY, XAI_API_KEY, or OPENAI_API_KEY is in the app .env, including when has_llm_key=false. Leave config.json llm.api_key_env as that variable name. verify_local_setup keeps checklist 3.2 open until that file check passes. The BFF does not build a pipeline body. Do not clone demo_travel_sample. Do not write a job for this one-scope page.start_project(sample=demo_yelp) → use_sample(sample=demo_yelp) clones the LocalAI template demo_yelp when missing (utterances yelp-demo / demo_yelp) and sets DEMO_YELP_SAMPLE_DIR. When parent_dir is set, the clone is created in that directory. That checkout is the app: run it, and do not write a replacement or copy the beer sample. use_sample also downloads the public business photo set into frontend/public/business-images/ /{1,2,3}.png (no biz: prefix, no API key). Search POSTs /api/search and sends the live chat request for yelp-demo / _default as the session body. Search cards unwrap a hybrid {node, score} hit and a nested pipeline row. The business page GETs /api/business/{id} when the id is not in the bundled catalog. Review text is the source document, not a rev: doc key. set_prereq bucket is yelp-demo, scope _default. Do not clone demo_travel_sample. Bare sample=yelp stays the multi-agent handoff.start_project(sample=api) → scaffold_app(app_kind=api, coding_language=python) (FastAPI POST /turn on kotenai-zeus-client). Other languages not scaffolded yet..env; set_prereq presence flags only. has_llm_key=true does not count as the key. Pass the user’s Zeus URL into `se只显示了开头部分;其余内容请在仓库中阅读