1. 为什么要在 ClaudeCode 里接一个 Ontology MCP
ClaudeCode 本身已经能读写文件、跑命令、查 Git,但它默认不知道你团队里「需求—用例—缺陷—版本」之间的业务关系。你问它「REL-1.2.0 能不能上」,它只能泛泛而谈,因为它看不到结构化的测试质量数据。Ontology MCP 就是补上这一环:把本地测试对象模型封装成 MCP 工具,让 ClaudeCode 通过标准协议查询版本风险、需求质量和回归范围。
这篇聚焦本地测试场景,从settings.json骨架配置入手,给出可复制的 MCP 服务声明,并用 TaoToken 统一 Key 通道接入模型调用。适合正在做 AI 测试助理、MCP 实战、企业 AI 落地的同学。跑完你能得到一个最小闭环:ClaudeCode 调用本地 MCP 工具,基于真实数据输出上线风险速览,而不是编造结论。
我试过把这套流程跑通后,最大的感受是:MCP 解决「AI 怎么连工具」,Ontology 解决「AI 怎么理解业务对象」。两者缺一不可。
2. TaoToken 前置:统一 Key 通道与 MCP 声明
在配置 MCP 之前,先把模型调用通道理顺。ClaudeCode 需要访问大模型,TaoToken 提供统一的 API Key 通道,避免在多个服务间来回切换密钥。官网入口在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 端点是 https://taotoken.net/api 。
操作顺序很简单:先到控制台创建 API Key,再在 ClaudeCode 的配置里引用这个 Key。控制台地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,API Keys 管理页在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。拿到 Key 后,模型对话可以在 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 验证连通性。
注意:API Key 只放在本地环境变量或 ClaudeCode 配置里,不要提交到 Git 仓库。团队协作时用
.env加.gitignore隔离。
如果你后续要做长期编码或 Agent 任务,可以了解 Coding Plan:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,ClaudeCode 相关说明在 https://taotoken.net/claudecode?utm_source=taotoken_aicg_blog_end&utm_content=claudecode&utm_campaign=rewrite 。
3. settings.json 骨架配置与 MCP 服务声明
ClaudeCode 的 MCP 配置可以写在项目级settings.json里,也可以写在用户级配置中。项目级的好处是团队共享同一套 MCP 声明,换机器不用重新配。下面是一个可复制的骨架,包含模型通道和 MCP 服务两部分。
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-your-taotoken-key" }, "mcpServers": { "sqa-ontology": { "command": "/Users/you/sqa-ontology-demo/.venv/bin/python", "args": [ "/Users/you/sqa-ontology-demo/mcp_server.py" ], "env": { "ONTOLOGY_DATA": "/Users/you/sqa-ontology-demo/ontology.json" } } } }几个关键点:command必须指向虚拟环境里的 Python 绝对路径,不要用系统 Python,否则 MCP SDK 可能找不到。args里放mcp_server.py的绝对路径。env里可以传 Ontology 数据文件位置,方便脚本读取。
如果你更习惯用命令行注册,等价操作是:
claude mcp add --transport stdio sqa-ontology -- \ /Users/you/sqa-ontology-demo/.venv/bin/python \ /Users/you/sqa-ontology-demo/mcp_server.py注册完用claude mcp list查看状态,再用claude mcp get sqa-ontology确认路径和传输方式。Status 显示Connected才算成功。
MCP 服务端本身只暴露只读工具,第一版不做写入,避免误改真实数据。工具声明用 FastMCP 写起来很简洁:
from mcp.server.fastmcp import FastMCP mcp = FastMCP("sqa-ontology-mcp") @mcp.tool() def query_release_risk(release_id: str): return get_release_risk(release_id) @mcp.tool() def query_requirement_quality(requirement_id: str): return get_requirement_quality(requirement_id) @mcp.tool() def get_regression_scope(requirement_id: str): return recommend_regression_scope(requirement_id)三个工具分别对应版本风险、需求质量、回归范围。数据来源是本地ontology.json,结构上把 Release、Requirement、TestCase、Bug、Module 五类对象和它们的关系显式表达出来。
4. 验证请求:让 ClaudeCode 调用 MCP 工具
配置完成后,重启 ClaudeCode,在对话里直接下指令:
请使用 sqa-ontology MCP 的 query_release_risk 工具,分析 REL-1.2.0 的上线风险。 要求: 1. 必须基于 MCP 返回的数据; 2. 不要编造不存在的需求、Bug 或用例; 3. 输出未关闭 Bug 数量、优先级分布、模块分布; 4. 输出建议回归范围; 5. 不要直接给出“可以上线/不可以上线”的绝对结论。如果 MCP 生效,ClaudeCode 会先调用工具,拿到结构化数据后再组织语言。实测下来,它能识别 REL-1.2.0 当前仍有 2 个未关闭 Bug,其中 1 个 P1,并给出建议回归范围。这个结论来自数据关联:版本包含需求,需求关联用例,用例失败发现 Bug,未关闭 P1 形成上线风险。
验证 MCP 是否真的被调用,可以看两个信号:一是 ClaudeCode 输出里出现工具调用记录,二是返回内容包含只有本地数据才有的字段,比如具体 Bug ID、模块名、用例数。如果它只是泛泛回答「建议加强测试」,说明 MCP 没生效。
你还可以用模型对话页做一次通道验证:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite ,确认 API Key 和 Base URL 没问题,再回到 ClaudeCode 排查 MCP 层。
5. 本篇常见错排查
错误一:claude mcp list显示 Failed 或 Disconnected。先检查command路径是否存在,用ls -l确认 Python 绝对路径。再手动执行python mcp_server.py,如果出现 JSON-RPC EOF 报错,不一定是代码问题——stdio MCP Server 本来就是给 ClaudeCode 拉起并通信的,不适合在普通终端里人工交互。
错误二:MCP 显示 Connected,但 ClaudeCode 不调用工具。检查工具名是否和指令里写的一致,大小写敏感。另外确认settings.json里mcpServers的键名和claude mcp get返回的名称一致。
错误三:Python 版本不对导致import mcp失败。MCP Python SDK 需要 Python 3.10+。系统默认 3.9 会装不上,直接用 3.11 重建虚拟环境:
cd ~/sqa-ontology-demo python3.11 -m venv .venv source .venv/bin/activate python -m pip install --upgrade pip pip install mcp python -c "import mcp; print('mcp ok')"错误四:API Key 无效或 Base URL 写错。确认ANTHROPIC_BASE_URL是https://taotoken.net/api,不要多加路径。Key 从 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 重新生成一次,排除复制遗漏。
错误五:Ontology 数据文件路径不对。在settings.json的env里显式传ONTOLOGY_DATA,脚本里用os.environ.get读取,避免相对路径在不同工作目录下失效。
6. 继续接入与长期使用建议
排障和接入相关的问题,优先看 API Keys 和接入文档:https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 与 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。验证模型连通性用模型对话页:https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite 。如果你要把这套 MCP 用于长期编码或 Agent 任务,Coding Plan 更合适:https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite 。
落地节奏建议分三步:阶段一只做只读查询,输出风险摘要;阶段二生成测试报告草稿、Bug 草稿、回归建议,人工确认后使用;阶段三对低风险动作做受控写入,关键动作保留确认和审计。对测试团队来说,只读查询加风险汇总风险最低、价值最高,也最容易建立信任。
最后提醒一句:MCP 工具声明里不要直接连生产库,本地测试用ontology.json这类静态数据就够了。等流程跑顺,再考虑接真实数据源,并且始终保留人工确认环节。