Skip to content

MCP 生产实践

本页讨论把本地 MCP 工具带入团队或生产环境时必须补齐的工程能力。协议能统一调用格式,但不会自动赋予工具安全性。

本地到远程

场景推荐传输关键约束
本机开发工具stdio进程隔离、stderr 日志、工作区边界
内网共享服务Streamable HTTPTLS、身份认证、超时、限流
多租户生产服务HTTP 网关租户隔离、审计、配额、回滚

MCP 规范在 2026-07-28 版本中强化了无状态核心、授权和可缓存列表结果。升级时不要只替换 SDK:应验证初始化、列表、调用、错误、取消和重连行为。

远程 Server 的安全边界

至少实现:

  • TLS 和服务身份校验;
  • 用户、服务账号或工作负载身份;
  • Tool 级别授权,而不只是 Server 级别授权;
  • 每次调用的 request id、用户、工具、参数摘要和结果状态;
  • 超时、并发上限、重试预算和熔断;
  • 外部系统失败时的清晰错误语义。

工具输入校验

校验路径:

text
JSON schema -> 业务校验 -> 权限校验 -> 副作用预览 -> 执行 -> 审计

例如 write_file 至少要检查:

  • 目标路径是否在允许目录;
  • 是否命中密钥、生产配置或生成文件;
  • 是否需要用户确认;
  • 内容大小和编码;
  • 是否记录变更前后的摘要。

授权与最小权限

推荐把权限拆成:

  • read_repo
  • search_code
  • run_tests
  • write_workspace
  • open_review
  • deploy_production

默认只授予前几项;最后一项必须独立审批。不要把“模型可以看到工具”误认为“模型有权执行工具”。

可靠性

  • 幂等 Tool 使用 idempotency key;
  • 重试只用于明确的临时错误;
  • 长任务支持取消;
  • 结果带 trace id;
  • Server 重启后能恢复或明确终止任务;
  • 列表缓存失效时不会调用过期工具 schema。

迁移检查清单

  1. 阅读目标协议版本的变更说明。
  2. 记录当前 Client/Server 的版本矩阵。
  3. 用固定任务验证 initialize、list、call、error、cancel。
  4. 检查授权 scope 和审计字段。
  5. 预留回滚配置,不在高峰期首次升级。

练习

  1. run_tests 设计一个允许的命令白名单。
  2. 为远程 search_repo 服务设计租户隔离方案。
  3. 写一份 MCP Server 升级前后的兼容性测试表。

参考资料

🚀 学习遇到瓶颈?想进大厂?

看完这篇技术文章,如果还是觉得不够系统,或者想在实战中快速提升?
王中阳的就业陪跑训练营,提供定制化学习路线 + 企业级实战项目 + 简历优化 + 模拟面试。