双向 MCP:市场与开放的 RAG
Simmetric Chat 如何朝两个方向说 MCP —— 从市场安装的外部 MCP 服务器变成 agent 可调用的 skill,同时内置服务器把 workspace 的 RAG 检索暴露给 IDE —— 辅以传输回退、健康巡检、与按聊天的钉选。

走到工具对面的助手 MCP 有两个方向,而大多数集成只讲第一个
MCP 有两个方向,大多数集成只讲第一个。在 connect 方向,你把外部的 MCP 服务器带进 workspace,它们的工具在聊天中变成可调用 —— 不写代码、不重新部署。在 expose 方向,Simmetric Chat 自己翻到了对面:内置的 MCP 服务器把该 workspace 的 RAG 检索 served 给外部客户端 —— 你们的 IDE,开发者本来就在的地方。
本文两个方向都走一遍,再加上让它们可以安全运维的控制面:市场的安装流程、手动连接、按聊天的钉选、传输回退,以及健康巡检。
市场的写入操作需要管理员(浏览只需已登录)。数据:FACT-CENSUS.md F-MCP-1。connect 方向:市场
MCP Marketplace 是一个精选的外部 MCP 服务器目录。浏览目录(列表 + 详情)只需登录;写操作 —— 创建条目、装进 workspace —— 只归 admin。安装流程原子而自含:
- Schema 校验安装载荷(一个 workspace + 可选的名称/头部覆写 —— 头部执行写入侧的黑名单校验:拒绝 hop-by-hop 键、强制名字的正则、收窄大小)。
- 条目必须存在(404),且不得已安装在该 workspace(409)。
- scoped 到 workspace 的连接行以目录的 URL 与传输形态创建。
- 事件落入审计日志(
mcp.installed),连接器 fire-and-forget 启动:连接失败会被记录,永远不会被默默吞进“健康”状态。
卸载是逆操作:工具的注册被移除、连接硬删除、审计条目落地(mcp.uninstalled)。安装因此可逆且无残留。
外部工具成为 agent 的 skill
连接之后,每个外部服务器的工具以无碰撞的名字注册进 agent 的 skill 注册表(mcp_<连接>_<工具>)。注册表按聊天解析:
- 没有钉选 —— workspace 里每个启用的连接贡献其工具。
- 有钉选 —— 只有被钉与启用且属于作用域的连接贡献;但钉选集合永远不会移除工具(它只会加 —— 与 workspace 工具集的严格并集保持)。
按聊天钉选是运维的方向盘:一条合规评审的聊天恰好只能碰它该碰的工具,不影响 workspace 的其余部分。
expose 方向:IDE 够得到 RAG
内置 MCP 服务器把平台的检索暴露给外部客户端:
- `rag_query` —— 搜索 workspace 的文档(内部聊天同款的、有出处可引用的检索)。
- `list_workspaces` —— 客户端的发现臂。
传输是无状态的 Streamable HTTP 端点(MCP 当前的核心修订、只-JSON 回应);老 SSE 传输保留一段弃用宽限。认证有两种形态:设置 MCP_API_KEY 时做 bearer 校验(缺失或错误 = 401);未设时退到仅回环 —— 远程调用者拿到 401 而不是没有认证的访问。IDE 的故事:开发者的编辑器够到与聊天同款的、有出处的文档检索 —— 知识库是同一份语料上的多扇门。
运维的护栏
三个机制让两个方向不只是“开着”,而是可运营:
- 传输回退 —— 声明为 streamable 的连接在 4xx 拒绝时回退到 SSE(5xx 永不触发 —— 服务器错误不应该静默降级传输);声明为 SSE-only 的保持 SSE。
- 健康巡检 —— pg-boss 定时任务每 30 分钟巡一遍已安装且启用的连接,按指数退避 ping,并维持状态梯队(healthy → 前几次失败后 stale → 第三次起 down),失败细节逐连接保留。
- 连接互斥 + 状态映射 —— connect/disconnect 逐连接串行;活状态来自运行时而非数据库,因此“测试”反映的是这一刻的真实。
审计类别
市场与连接的每次变更都写入事件日志(mcp.installed / mcp.uninstalled / CRUD 各臂)—— 平台的不变活动日志承载这层表面(依 F-AUDIT-1),与平台其余部分的运维故事同调。
继续阅读
完整参考 —— 目录字段、install/uninstall、钉选语义、expose 侧的传输 —— 在 /zh/docs/mcp-marketplace:
- MCP Marketplace —— 操作指南
- 更早的一篇市场初版文章:
/zh/blog/mcp-marketplace - 本文数据:
FACT-CENSUS.md行 F-MCP-1(双向 MCP + 市场)与 F-AUDIT-1(事件日志)
Provenance:Simmetric Chat 的 docs/MCP_MARKETPLACE.md + packages/server/src/agent/mcpServer.ts/mcpClient.ts(传输 + 回退)、services/mcpHealthCheckJob.ts、CHANGELOG.md v0.28.1 —— 处于 census 固定的文档状态(SHA aca5b8ff)。
