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 模型根据上下文自动决定是否调用

相关笔记