MCP Server Architecture Patterns for LLM-Integrated Applications
Carson Rodrigues, Oysturn Vas
cs.SE, cs.AI
2026-06-29
从语音平台ANSYR的五台生产服务器和官方仓库十台公开服务器,归纳出MCP五种架构。Haiku 4.5在十个工具时选对91%、十五个掉到87%;Sonnet 4要到二十至三十个才跌破90%。
MCP 把工具、资源和提示词从模型侧抽出来,做成一份 JSON-RPC 协议。一份服务器能接 Claude、GPT、Gemini,发布几个月 GitHub 上就堆了几百个社区实现。生产里该怎么拆工具、要不要在服务端存会话、多台服务器怎么聚合,几乎没有可对照的架构文献。Hou、Hasan、Guo 等人已经从安全和生态规模写过 MCP,没人从「LLM 当客户端」这个约束去编模式目录。
Celabe 的 ANSYR 语音平台从 2024 年底起跑了 5 台生产 MCP 服务器,再加官方 modelcontextprotocol/servers 仓库里 10 台公开服务器,一共 15 台。这篇 ICSME 工业经验论文从这份语料抽出五种反复出现的结构,外加四个反模式。
模式按 Gamma 四人组的格式写:上下文、问题、方案、后果、已知用例。每个模式都有经典祖先,这篇要写的是 LLM 客户端带来的增量:模型靠读自然语言描述选工具,不靠翻文档。
五种模式:
四个反模式:God Tool(一个 doanything 吞所有动作)、未清洗的 Resource 内容、把视频编码这类长任务做成同步工具、工具描述缺失或只是复述名字。
分类可靠性单独测:54 台留出服务器,用架构中立的功能描述,两个独立 LLM 评分员(Haiku 4.5 和 Sonnet 4,temperature 0)打标签。
| 设置 | 数字 |
| 评分员间 Cohen's κ | 0.76(95% CI 0.62-0.88),原始一致率 81.5% |
| 与作者标签一致率 | Haiku 68.5%,Sonnet 75.9% |
| Haiku 4.5 选工具 | 10 个时 91%,15 个时 87%,中位延迟 245 ms |
| Sonnet 4 选工具 | 10 个时 95%(410 ms),20 个仍 ≥90%,30 个跌破 |
| stdio / 本机 streamable-http | p50 0.01 ms / 0.39 ms(实测,N=100) |
| 同区域远程 / 聚合器远程 | p50 30.4 ms / 62.4 ms(建模,不是实测) |
工具数来自 ANSYR 2025 年 Q1 生产日志,每个桶 200 次会话轮次,人工质检当 ground truth,Wilson 95% 区间约 ±4 个百分点。这是回顾性分析,不是为这篇新做的对照实验。
三个分类边界反复出错:状态性从功能列表看不见,有状态服务器全被标成 Tool Orchestrator;领域校验看不见,adapter 在 Orchestrator 和 Gateway 之间摇摆;检索型 orchestrator 被当成 Resource Gateway。作者因此把状态性和领域逻辑改成横切属性,不要当互斥类别。
传输层结论更硬:协议开销被网络 RTT 吞掉。跨主机之后选 stdio 还是 HTTP 几乎无关,真正要决定的是客户端和服务器是否同机,以及 Proxy Aggregator 会不会再加一跳。
给正在写 MCP 服务器的人一套能说出口的词汇。只读数据走 Gateway 加清洗;跨系统动作收成 Orchestrator;真的依赖上一轮状态才上 Session,并预算回收;舰队用 scoped 聚合,不要静态合并;单个上下文把工具压在大约 10–15 个。工具描述是承重构件,不能当写完代码后补的注释。
模式也是维护缝:Adapter 吸收上游 API 变动,Aggregator 是鉴权、版本、审计的单点,Gateway 把 schema 迁移关在一层。
推导语料只有 15 台,Guo 等人量过公开生态超过 8000 台,分层复现没做。分类用的是功能描述,不是跑着的服务器。评分员是两个 Claude,可能共享盲区,人类双编码还没做。传输表五行之三是建模。工具数是一家语音平台的观察数据,原始会话日志不公开,只能核对应的 csv。第一作者受雇于 Celabe。