1. 为什么 Spec 工具一到 MCP 就散架
你可能已经用过 GitHub Spec Kit、Spec Workflow MCP、Spec Coding MCP、MCP Server Spec-Driven Development 这四类规范驱动开发工具中的一两个。单机跑 demo 的时候都挺顺:输入一句需求,AI 吐出 requirements.md、design.md、tasks.md,再按任务生成代码,看起来像是把「即兴创作」硬生生掰成了「工程化」。
但真正把它们塞进 MCP 场景,问题立刻暴露。Spec 工具本身只是「规范生成器」,它要调用大模型来写文档、拆任务、生成代码,而每个工具默认都让你单独配一份模型通道:Spec Kit 走 Claude Code 或 Copilot 的 CLI,Spec Workflow MCP 在 Cursor 的 mcp.json 里塞一个 server,Spec Coding MCP 又依赖 VS Code 的 mcp.json 加 .NET 环境。结果是你的项目里散落着三四个不同的 Key、四套 base_url、五种鉴权方式。换一个模型,所有配置文件都要改一遍;团队里有人用 Cursor、有人用 Claude Code、有人用 VS Code,规范文档的生成质量全看各自接的模型通道稳不稳。
这就是「规范驱动」在 MCP 场景下最尴尬的地方:规范本身要求可复现、可追溯,但生成规范的模型通道却是即兴的、一人一套的。要让 Spec 工具真正工程化落地,第一步不是选哪个 Spec 工具,而是先把模型通道统一掉——让四个工具、多个 IDE、多个 Agent 都走同一个 Key、同一个 API 入口。这篇就按这个思路,用 TaoToken 做统一通道,把 settings.json 和 config.toml 的配置骨架、MCP 接入步骤、连通性验证动作全部给出来,你可以直接复制改。
2. TaoToken 在 Spec 工程化链路里的位置
TaoToken 在这里扮演的角色很单纯:它是一个统一的模型 API 通道。你不需要在每个 Spec 工具里分别填不同的厂商 Key,只需要在 TaoToken 控制台创建一个 API Key,然后把各个工具的 base_url 指向https://taotoken.net/api,模型名按 TaoToken 支持的列表填。这样 Spec Kit 生成规范、Spec Workflow MCP 拆任务、Spec Coding MCP 写 EARS 需求、轻量版生成代码,走的都是同一条通道。
对 Spec 驱动开发来说,这一点比「省事」更重要。规范驱动开发的核心是可复现:同一份 requirements.md,今天生成和下周生成应该结构一致、术语一致。如果四个工具各接各的模型,同一个需求在不同工具里生成的规范颗粒度会飘。统一通道之后,你至少能保证模型侧的行为是一致的,规范文档的格式和详细程度不会因为工具切换而突变。
具体操作上,你需要先拿到两样东西:一个 API Key,以及确认你要用的模型名。Key 在控制台的 API Keys 页面创建,模型名在文档里能查到当前支持的列表。这两个信息后面会填进 settings.json 和 config.toml。
注意:TaoToken 是合规的模型 API 通道,配置时只改 base_url 和 api_key 两个字段,不要动其他网络层设置。
3. 可复制的配置骨架:settings.json 与 config.toml
Spec 工具链里最常见的两类配置文件,一类是 Claude Code / Cursor 这类 IDE 或 Agent 用的 JSON 配置,一类是 Codex 风格 CLI 用的 TOML 配置。下面两份骨架你可以直接复制,把sk-你的TaoTokenKey换成实际 Key。
先看 JSON 侧。这份配置同时覆盖了 Claude Code 的 settings 和 MCP server 的接入点,Spec Workflow MCP、Spec Coding MCP 都可以挂在这里:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoTokenKey", "ANTHROPIC_MODEL": "claude-sonnet-4-5" }, "mcpServers": { "spec-workflow": { "command": "npx", "args": [ "-y", "@pimzino/spec-workflow-mcp@latest", "/path/to/你的项目", "--AutoStartDashboard" ], "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoTokenKey" } }, "spec-coding": { "command": "npx", "args": ["-y", "spec-coding-mcp@latest"], "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoTokenKey" } } } }再看 TOML 侧。如果你用 Codex 风格的 CLI 跑 Spec Kit 或轻量版 Spec 生成器,配置长这样:
[model] provider = "anthropic" base_url = "https://taotoken.net/api" api_key = "sk-你的TaoTokenKey" model = "claude-sonnet-4-5" [spec] output_dir = "./specs" template = "ears" [mcp.spec_workflow] command = "npx" args = ["-y", "@pimzino/spec-workflow-mcp@latest", ".", "--AutoStartDashboard"] [mcp.spec_coding] command = "npx" args = ["-y", "spec-coding-mcp@latest"]两份配置的关键点是一样的:base_url 统一指向 TaoToken 的 API 地址,api_key 用同一个 Key,模型名按你实际要用的填。Spec Kit 本身通过uvx --from git+https://github.com/github/spec-kit.git specify init初始化,初始化后它读的是环境变量,所以把ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY导出到 shell 里即可,不需要额外配置文件。
export ANTHROPIC_BASE_URL="https://taotoken.net/api" export ANTHROPIC_API_KEY="sk-你的TaoTokenKey" uvx --from git+https://github.com/github/spec-kit.git specify init photo-manager这样四个 Spec 工具就都挂在同一条通道上了。接下来验证连通性。
4. 连通性验证:从 curl 到 Spec 工具实跑
配置写完不要直接开 Spec 工具跑需求,先做两层验证。第一层是通道本身通不通,第二层是 Spec 工具能不能通过通道生成规范。
第一层用 curl 打一个最小请求,确认 Key 和 base_url 没问题:
curl -s https://taotoken.net/api/v1/messages \ -H "x-api-key: sk-你的TaoTokenKey" \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{ "model": "claude-sonnet-4-5", "max_tokens": 64, "messages": [{"role": "user", "content": "回复 OK 两个字母"}] }'返回里能看到content字段带OK,说明通道正常。如果返回 401,检查 Key 是否复制完整;返回 404,检查 base_url 有没有多写或少写/api。
第二层验证 Spec 工具。以 Spec Workflow MCP 为例,启动后它会在项目根目录生成.spec-workflow目录,并拉起 Web 仪表盘。你在 AI IDE 里对它说「创建用户认证模块的 spec」,正常情况会依次生成 requirements.md、design.md、tasks.md 三个文件。如果只生成了空文件或报模型错误,说明 MCP server 的 env 没读到 TaoToken 配置,回到 settings.json 检查mcpServers.spec-workflow.env里的两个变量。
Spec Kit 的验证更直接,初始化后跑/constitution和/specify两个命令:
specify checkspecify check会检测 Git、AI 代理、模型通道是否就绪。它如果提示模型通道不可达,同样回到环境变量排查。实测下来,最常见的失败不是 Key 错,而是 shell 里 export 了但 IDE 是从 GUI 启动的,读不到 shell 环境变量,这种情况就把配置写进 IDE 的 settings.json,而不是只放在.zshrc里。
5. 本篇常见错排查
报错一:401 Unauthorized或invalid api key。九成是 Key 复制时带了空格,或者用了控制台里已删除的旧 Key。重新在 API Keys 页面建一个,复制后直接粘贴,不要手动补字符。
报错二:model not found。Spec 工具默认可能写死了某个模型名,比如claude-3-5-sonnet,而 TaoToken 当前支持的列表里没有这个旧名。把配置里的 model 字段改成文档里列出的当前模型名即可。四个工具里 Spec Coding MCP 最容易出这个问题,因为它依赖 .NET 环境,配置读取路径和 Node 系工具不一样。
报错三:MCP server 启动后 Spec 工具无响应。先看 MCP server 进程有没有起来,npx拉包失败会导致进程静默退出。把npx -y @pimzino/spec-workflow-mcp@latest单独在终端跑一遍,看它报什么。如果是端口 3000 被占,加--DashboardPort 3100换端口。
报错四:Spec Kit 的/specify命令生成了规范但内容为空。这通常是 AI 代理没读到模型通道,命令走了本地默认配置。确认ANTHROPIC_BASE_URL在运行specify的同一个 shell 里已经 export,或者把配置写进 Spec Kit 的memory/constitution.md同级配置文件。
报错五:四个工具生成的规范格式不一致。这不是通道问题,是各工具默认模板不同。Spec Coding MCP 用 EARS 语法,Spec Kit 用四阶段模板,轻量版用五阶段。统一通道只能保证模型行为一致,模板差异要靠你自己在项目里定一份规范模板,让各工具都读同一份。
6. 把统一 Key 固化进你的 Spec 工作流
走到这里,你已经有了统一通道、两份可复制配置、两层验证动作和五个常见错的排查路径。剩下的事是把这套东西固化下来,而不是每次开新项目重配一遍。
我的做法是在项目根目录放一个.env.spec文件,里面只写ANTHROPIC_BASE_URL和ANTHROPIC_API_KEY两行,然后在 settings.json 和 config.toml 里都引用它。这样换 Key 只改一个文件,四个 Spec 工具同时生效。团队协作时,.env.spec不进版本库,只提交配置骨架,新人拉下来填自己的 Key 就能跑。
如果你主要用 Claude Code 跑 Spec Kit 和 Spec Workflow MCP,可以直接在 Claude Code 里配好 TaoToken 通道,再挂 MCP server;如果你更依赖 Cursor 或 VS Code 的 MCP 生态,就把 settings.json 里的 mcpServers 段复制过去。长期做编码和 Agent 任务的,建议把 Coding Plan 也用上,让规范生成和代码实现走同一个通道,减少切换成本。通道配好后,先去模型对话页面发一条消息确认 Key 可用,再回到 Spec 工具里跑/constitution,整个链路就通了。