Skip to content

技能仓库支持 MCP 服务,Codex 加载 MCP 技能 - #129

Merged
wxkingstar merged 2 commits into
mainfrom
claude/figma-mcp-coreman-0853e9
Oct 12, 2026
Merged

wxkingstar merged 2 commits into
mainfrom
claude/figma-mcp-coreman-0853e9

Conversation

@wxkingstar

Copy link
Copy Markdown
Owner

背景

技能仓库原来只能放 Git 技能;MCP 技能只能在管理台手工登记,而且 Codex 驱动不读工作目录的 .mcp.json,跑 Codex 的 AI 员工装了 MCP 技能也用不上。

改动

目录同步

  • 插件按 Claude Code 插件格式声明 MCP 服务:plugin.json 的 mcpServers 可以是对象,也可以是插件内的相对路径;都没写时读插件目录的 .mcp.json。这样的插件登记为 MCP 技能,配置加密保存。
  • 一个插件只登记一个服务,配置检查和管理台相同;不合法时整次同步失败。
  • 插件目录里有 SKILL.md 时仍按 Git 技能处理,已有技能仓库不受影响。
  • 之后同步以仓库为准:MCP 声明增删会在 Git/MCP 之间切换,配置变化会覆盖已存的配置;已安装的员工点「升级」后生效。
  • MCP 配置校验从 SkillIn 移到 skill_policy.mcp_config,管理台和同步共用。

Codex 驱动

  • 每轮读取工作目录的 .mcp.json,每个服务转成 -c mcp_servers.skill_<名字>={...}。加 skill_ 前缀是因为 -c 会深度合并:节点全局配置里如果有同名但传输方式不同的服务,Codex 会直接拒绝启动(已实测)。
  • stdio 服务:员工的环境变量(COREMAN_ 开头的除外)通过 env_vars 透传,${同名变量} 也走这条路;明文 env 经进程环境传入,不出现在命令行;cwd 设为工作目录。
  • http 服务:Authorization: Bearer ${X} 转为 bearer_token_env_var,${X} 形式的请求头转为 env_http_headers。
  • SSE 和无法转换的 ${...} 写法会跳过该服务并记节点日志,不影响本轮其它功能。
  • Claude 后端不改,它本来就读项目 .mcp.json(已用 claude -p 实测,source=project,connected)。

验证

  • go test ./... 全部通过;新增用例覆盖 stdio/http 转换、密钥不进命令行、不支持的写法被跳过、符号链接被忽略、续聊时同样挂载。
  • 测试库上跑 pytest -n 6:3031 通过;test_gateway_wecom 有 1 个用例在并行下偶发失败,单独重跑通过,与本改动无关。
  • 新增目录同步用例:三种声明方式、含 SKILL.md 的插件保持 Git、非法配置拒绝、导入/更新/类型切换。
  • 用真实 Codex CLI 端到端跑了驱动生成的参数:stdio MCP 被调用,员工变量和明文 env 都传到了,cwd 正确。

发布

无数据库迁移。Codex 侧要等运行时节点升级后才生效。

🤖 Generated with Claude Code

wxkingstar and others added 2 commits October 12, 2026 12:23
- 目录同步识别插件声明的 MCP(plugin.json 的 mcpServers 或插件目录 .mcp.json),
  登记为 MCP 技能,配置加密保存、以仓库为准;含 SKILL.md 的插件仍按 Git 技能处理
- MCP 配置校验抽到 skill_policy,管理台编辑与仓库同步共用
- Codex 驱动每轮把工作目录 .mcp.json 转成 -c mcp_servers.skill_<名字>={...},
  stdio 服务经 env_vars 拿到员工环境变量,明文 env 走进程环境不进命令行

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@wxkingstar
wxkingstar merged commit 25a7ee6 into main Oct 12, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant