Skip to main content

MCP 服务器

梳理 MoAI-ADK 自带的 moai mcp-server(stdio 本地 MCP 服务器)的配置、17-工具目录、认证和延迟加载策略。

更新 2026-08-14 7 分钟阅读 在 GitHub 上编辑 ↗

MCP 服务器

MoAI-ADK 在 Claude Code 的 MCP 生态之上,又叠加了一个自有的 MCP 服务器。一个二进制文件(moai mcp-server)以 stdio 本地服务器的方式运行,向 Claude Code 运行时暴露 MoAI-ADK 独有的 17 个工具——SPEC 生命周期审计、验证快照、目标引擎、跨模型审计、codex 委托等。

两份 MCP 文档的关系

Claude Code 通用 MCP 讲的是平台自身的 MCP(Model Context Protocol)集成——USB 端口比喻、服务器注册、传输类型、/mcp 命令、OAuth 认证、延迟加载原理。

本文档讲的是叠加在其上的 MoAI 自有 MCP 服务器。两个表面共享相同的核心规则,但所讨论的主体不同。

同一个核心,两个表面

Claude Code 的 MCP 生态与 MoAI 的自有 MCP 服务器是各自独立的服务器,但都建立在相同的运用原则之上。它们共享三条核心规则。

核心规则含义
MCP-over-CLI同一功能同时以 CLI 和 MCP 工具暴露,但当智能体的 tools: 列表中存在 MCP 工具时优先使用 MCP。优势在于结构化输出、规避 shell-quoting、在子智能体中低延迟。
延迟加载MCP 工具定义默认延迟加载。平时只将简短的元数据留在上下文中,实际调用时再用 ToolSearch 加载 schema。
权限门MCP 工具与 Claude 的通用工具一样需通过相同的权限门。首次调用时审批提示出现在主会话,放行后同一工具不再询问。
flowchart TD
    CC["Claude Code 运行时
(工具权限 · 延迟加载 · 审批)"] CMCP["通用 MCP 服务器
(context7, chrome-devtools, …)"] MMCP["moai mcp-server
(MoAI 自有 · 17 工具)"] CC --> CMCP CC --> MMCP MMCP --> TOOLS["SPEC lifecycle · 验证 · 目标 · 审计 · codex 委托"] CMCP --> EXT["外部工具 (库文档 · 浏览器自动化 · …)"]

关键在于,“MoAI 不配置 MCP"是一个半真半假的说法。不默认配置外部 MCP 服务器(context7、playwright 等)是对的。但 MoAI 自有的那个服务器在 moai init 时就会以 default-on 装上。这个服务器正是 MoAI 的 17-工具目录触达 Claude Code 的通道。

.mcp.json 配置

moai init 在项目根目录创建 .mcp.json(project scope),在里面建立恰好一个活跃条目——自有的 moai 本地 stdio 服务器。

json
{
  "mcpServers": {
    "moai": {
      "command": "moai",
      "args": ["mcp-server"]
    }
  },
  "staggeredStartup": {
    "enabled": true,
    "delayMs": 500,
    "connectionTimeout": 15000
  }
}

staggeredStartup 是 Claude Code 运行时字段,用来调节服务器顺序启动。当服务器有多个时,它能防止同时启动的竞争(race)。

四个 documented-but-disabled 条目

部署默认值只有 moai 一个服务器处于活跃状态。四个外部服务器已写入文档但处于禁用状态,用 moai mcp add <名称> 命令来开启。

服务器用途激活方式
context7查询最新库的官方文档(resolve-library-id, get-library-docs)moai mcp add context7
chrome-devtools无头浏览器自动化moai mcp add chrome-devtools
playwright浏览器自动化 + E2E 测试moai mcp add playwright
ast-grep结构化代码搜索和重构moai mcp add ast-grep

中立性契约

.mcp.json 是 git-tracked 文件。因此"搭载秘密的条目、需要凭证的条目、未通过中立性检查的条目"是禁止的。所有环境变量的值都以 ${VAR} 字面量写入——Claude Code 运行时扩展实际值,被解释的秘密不会被序列化到 git-tracked 的 .mcp.json 中。

json
{
  "remote-needs-auth": {
    "type": "http",
    "url": "https://mcp.example.com/sse",
    "headers": {
      "Authorization": "Bearer ${MY_API_KEY}"
    }
  }
}

${MY_API_KEY} 由运行时从环境变量中填充。文件本身只保留字面量字符串,所以秘密不会暴露到存储库中。

atomic-RWM 管理

用户不直接手编 .mcp.jsonmoai mcp add|remove|list CLI 管理该文件,且此 CLI 通过 atomic-RWM seam(flock 文件锁 + compare-retry + 备份后写入 + idempotent-skip)运作。即使两个会话同时编辑,也不会让一边的变更覆盖另一边。

17-工具目录

moai mcp-server 暴露的 17 个工具分为五组。调用时都带 mcp__moai__ 前缀。

SPEC 生命周期

工具目的消费智能体CLI 等价物
mcp__moai__spec_progressSPEC 文档列表 + frontmatter 查询manager-spec, manager-docsmoai spec list
mcp__moai__spec_auditSPEC 生命周期审计(时代分类 + 漂移)manager-spec, manager-docs, plan-auditor, super-advisormoai spec audit
mcp__moai__spec_drift现代时代 V3R6 漂移发现manager-spec, plan-auditormoai spec audit (drift 视图)

用于 plan-phase(manager-spec 编写新 SPEC 时确认时代分类和漂移)与 sync-phase(manager-docs 验证生命周期终结)。plan-auditor 用 spec_audit / spec_drift 执行 plan-phase 的怀疑式审查。

验证快照

工具目的消费智能体CLI 等价物
mcp__moai__verify_snapshot按键读取/记录验证快照manager-developmoai verify check
mcp__moai__verify_trend按键验证历史趋势manager-develop, sync-auditor, super-advisormoai verify check

manager-develop 在 run-phase 自验证(接缝 §E)中使用,sync-auditor 和 super-advisor 用于审查趋势。verify_snapshot 读取或记录以 HEAD 摘要为键的快照,verify_trend 展示用于判断收敛的历史。

目标 + 会话(自治循环)

工具目的消费智能体CLI 等价物
mcp__moai__goal_arm条件声明目标武装编排器主会话专用(未连线到任何智能体)moai goal arm / /moai goal
mcp__moai__goal_status读取已武装的目标状态manager-develop, manager-kanbanmoai goal status
mcp__moai__session_list活跃 moai 会话列表manager-kanbanmoai session list

goal_arm 是编排器专用的——自治循环武装是编排器关注的事,所以不在智能体内调用。这是为了保留平面层级武装表面而做的设计。goal_status 是 manager-develop / manager-kanban 读取已武装条件进度的通道,session_list 是 manager-kanban 在 fan-out 前检测同一检出上并发会话的竞争缓解手段。

跨模型审计(第二意见)

工具目的消费智能体CLI 等价物
mcp__moai__audit_multi多审计者收敛(claude + codex + glm)plan-auditor, sync-auditor—(MCP 专用收敛入口)
mcp__moai__codex_auditcodex 后端单一审计(原生/对抗式)plan-auditor, sync-auditor
mcp__moai__glm_auditGLM (z.ai) 后端单一审计plan-auditor, sync-auditor
mcp__moai__audit_cacheplan-audit PASS 缓存(compute_hash / lookup / store,进程间共享)sync-auditormoai audit cache

单一后端审计模式由项目的 audit_model 设置决定:codex+glm(默认值,通过 audit_multi 收敛)| glm | codex | none(Claude 独自,无后端调用)。所有后端都是 fail-open——不可用的后端返回 inconclusive,而非 Go error。

codex 委托(后台任务)

工具目的消费智能体CLI 等价物
mcp__moai__codex_task将编码/调查任务委托给 codex(同步或后台)super-advisormoai codex task
mcp__moai__codex_setup探测本地 codex 安装(LookPath + 版本 + 认证)super-advisormoai codex setup
mcp__moai__codex_job_status读取后台 codex 任务的状态/记录super-advisormoai codex job status
mcp__moai__codex_job_result读取后台 codex 任务的输出super-advisormoai codex job result
mcp__moai__codex_job_cancel中断正在运行的后台 codex 任务super-advisormoai codex job cancel

codex 委托工具族连线到 super-advisor——因为按需高推理咨询智能体是后台跨模型委托的自然消费者。用 codex_task 委托任务,用 codex_job_status / codex_job_result 轮询完成情况,用 codex_job_cancel 中断。codex 是可选的(optional)——缺失或不可用时返回 fail-open 的 inconclusive,而非 hard error。

MCP-over-CLI 规则

当智能体的 tools: 列表中存在 MCP 工具时优先走 MCP 路径而非 CLI。两条路径在后台跑的是同一套实现。MCP 路径的优势有三:

  • 返回结构化输出(无需解析)
  • 避开 shell-quoting 风险
  • 在 Bash 可能受限的子智能体环境中以低延迟运作

CLI 仅在 MCP 工具不在 tools: 列表中,或在主会话中 CLI 形态更自然时使用。

认证

GLM (z.ai)

在 GLM 会话(moai glmmoai cg 的 GLM 面板)中运行时,网络搜索和网络查询会路由到 z.ai MCP 工具,而非内置的 WebSearch / WebFetch。认证从 ~/.moai/.env.glm 读取。

z.ai MCP 服务器(zai-mcp-serverweb_search_primeweb_reader)默认禁用,在 GLM 会话中用 moai glm tools enable 开启。GLM 会话中的路由规则请参考多 LLM 后端

codex

codex 审计/委托工具(codex_auditcodex_task 等)从 ~/.codex/auth.json 读取认证凭证。codex 是可选的——认证文件不存在或 codex 未安装时,相关工具返回 inconclusive 并继续。这是智能体工作不依赖于 codex 可用性的设计。

所有后端都 fail-open

GLM、codex、Claude——三个后端都遵循 fail-open 原则。不可用的后端只会返回 inconclusive,不会引发 Go error。即使一个后端缺失,其余后端也能让审计收敛;如果所有后端都不可用,则以 Claude 独自运作(audit_model: none)。

后台任务进度跟踪

codex 委托工具中的 codex_task 可以用 background: true 启动后台任务。此时不等待任务结束就立即返回任务 ID。

进度通过两个工具来轮询:

text
codex_task(background=true) ──▶ 返回任务 ID
       ├── codex_job_status(任务 ID) ──▶ 运行中 / 完成 / 失败
       └── codex_job_result(任务 ID) ──▶ 完成时读取输出

需要时 codex_job_cancel(任务 ID) ──▶ 中断

可以在 MCP 控制台(Web 控制台)中查看各工具的设置和认证状态。控制台的详细功能请参考 Web 控制台

延迟加载与 ToolSearch

MoAI 自有 MCP 服务器也和 Claude Code 通用 MCP 一样遵循延迟加载原则。如果把工具定义全部常驻加载到上下文中,上下文窗口会很快填满,因此平时只放简短的元数据,在实际调用时才加载 schema。

要调用延迟工具,必须先用 ToolSearch 将 schema 加载到活动上下文中。

text
需要工具了 ──▶ {schema 在上下文中吗?}
            ┌──────┴──────┐
            否              是
            │               │
    先用 ToolSearch         调用工具
    加载 schema
            └──▶ 调用工具

跳过此步骤,工具调用会因验证错误而被拒绝。延迟加载原理的背景说明请参考 Claude Code 通用 MCP 文档的"延迟加载与 Tool Search"一节。

相关文档

  • Claude Code 通用 MCP — 平台自身的 MCP 集成(USB 端口比喻、服务器注册、传输类型、/mcp 命令)
  • 多 LLM 后端 — Claude × GLM 多后端运用 · GLM 会话中网络搜索/查询路由到 z.ai MCP 工具的规则
  • 跨模型审计 — 多审计者收敛机制
  • Web 控制台 — MCP 工具设置与认证表面