MCP 使用注意事项
本文档记录了在开发和使用 MCP(Model Context Protocol)时需要注意的关键事项。
架构设计原则
避免在 MCP 内部封装 Agent
重要提醒
MCP 内部不适合再次封装 Agent,因为 Agent 的调用本身有超时限制。如果再叠加一个内部调用大模型的操作,会导致严重的超时问题。
MCP Server 的职责范围
在 MCP Server 里面应该只处理以下类型的操作:
- 查询数据库
- 查询本地文件
- 调用外部 API(非 LLM)
- 其他相对直接的操作
进度上报
可以通过 ctx.report_progress(i, len(files)) 的方式上报处理过程中的状态信息,让客户端了解当前进度。
当前限制
FastMCP 限制
当前的 FastMCP 不支持 Stream 的方式返回。如需流式响应,请参考 MCP Server 如何支持 Stream。
MCP 三大原语
MCP 定义了三种核心原语,它们的控制权限各不相同:
| 原语 | 控制方 | 示例 |
|---|---|---|
| 提示(Prompts) | 用户控制 | 代码审查提示、调试错误提示 |
| 资源(Resources) | 应用控制 | 用户配置文件、静态数据 |
| 工具(Tools) | 模型控制 | 计算 BMI、获取天气、文件操作 |
控制权限说明
- 用户控制:由用户主动选择和触发
- 应用控制:由宿主应用程序管理和提供
- 模型控制:由 AI 模型根据上下文自动决定是否调用
相关笔记
- MCP概览 - MCP 架构和核心概念
- MCP相关资料 - MCP 学习资源汇总
- MCP的疑难问题 - MCP 开发中的常见问题
- 一些优秀的MCP服务器 - 推荐的 MCP Server 实现