一文读懂 MCP(模型上下文协议):核心概念与最小 Server 示例

举报
yd_288757624 发表于 2026/10/31 09:40:27 2026/10/31
【摘要】 用通俗的方式梳理 MCP 的三个角色、三类能力和通信方式,并用 Python 官方 SDK 写一个最小可运行的 MCP Server,附上开发中的几点实用经验。

一、为什么要关注 MCP

过去一年,大模型应用开发里出现频率最高的新词之一就是 MCP(Model Context Protocol,模型上下文协议)。它由 Anthropic 在 2024 年底开源,目标很直接:给大模型连接外部工具和数据源定一个统一的“插座标准”。以前每接一个工具,都要为不同的模型、不同的框架各写一套适配代码;有了 MCP,工具只需实现一次 MCP Server,任何支持 MCP 的客户端(各类桌面聊天客户端、AI 编程 IDE 和智能体框架)都能直接调用。本文用通俗的方式梳理 MCP 的核心概念,并给出一个最小可运行的示例。

二、MCP 的三个角色

  • Host(宿主):用户直接使用的应用,比如桌面聊天客户端或 IDE。
  • Client(客户端):运行在 Host 里,负责和某一个 Server 建立一对一连接、收发消息。
  • Server(服务端):真正提供能力的一方,比如读文件、查数据库、调用某个 API。

可以把它类比成 USB:Host 是电脑,Client 是 USB 控制器,Server 是插上去的各种设备。设备只要遵守 USB 协议,插哪台电脑都能用。

三、Server 能提供的三类能力

  1. Tools(工具):模型可以主动调用的函数,例如“查询天气”“创建 Issue”。这是最常用的一类。
  2. Resources(资源):只读的数据,例如某个文件的内容、某张表的结构,供模型作为上下文参考。
  3. Prompts(提示模板):预先写好的提示词模板,用户可以一键选用。

区分这三类很重要:会产生副作用的操作应该做成 Tool,并在客户端让用户确认;纯读取的数据适合做成 Resource。

四、通信方式

MCP 基于 JSON-RPC 2 协议,常见的传输方式有两种:

  • stdio:Server 作为本地子进程启动,通过标准输入输出通信,适合本地工具,配置最简单。
  • Streamable HTTP:Server 部署在远端,通过 HTTP 通信,适合团队共享或云端服务。

连接建立后,Client 会先发送 initialize 请求协商协议版本和能力,然后请求工具清单,模型决定调用某个工具时再发起调用请求。

五、最小示例:用 Python 写一个 MCP Server

用官方 Python SDK 写一个 Server,一般只需要四步,代码不到 20 行:

  1. 安装官方 SDK,导入其中的 FastMCP 类,创建一个名为 demo 的服务实例。
  2. 写一个普通的 Python 函数 add,接收两个整数 a 和 b,返回它们的和;给它加上类型注解和一句说明文字,再用 SDK 提供的 tool 装饰器修饰,它就成了一个工具。
  3. 再写一个函数返回版本号字符串,用 resource 装饰器修饰并指定一个资源地址,它就成了一个只读资源。
  4. 在入口处调用服务实例的 run 方法,默认使用 stdio 传输启动。

这里有两个细节值得注意:一是函数的类型注解会自动转换成工具的参数定义,不需要手写 JSON Schema;二是函数的说明文字会成为工具描述,模型正是根据这段描述来判断什么时候调用它,所以描述要写清楚“做什么、参数含义、返回什么”。

写好后,在支持 MCP 的客户端配置文件中加入这个脚本的启动命令,重启客户端,就能在对话里让模型调用 add 工具了。

六、开发中的几点经验

  • 工具粒度要适中:一个工具只做一件事,名字和描述准确,模型选错工具的概率会明显降低。
  • 返回结果要精简:把几千行原始 JSON 直接丢给模型既浪费 token,也会干扰判断,最好先在 Server 端做过滤和摘要。
  • 错误信息要可读:参数不合法时返回明确的错误说明,模型往往能据此自行修正后重试。
  • 重视安全:涉及写操作、删除或访问敏感数据的工具,务必在客户端加人工确认;密钥放在环境变量里,不要硬编码进代码仓。
  • 先用调试工具验证:官方提供的 MCP Inspector 可以直接列出工具、手动调用,比在对话里反复试快得多。

七、总结

MCP 解决的是“模型如何标准化地使用外部能力”这个问题。理解 Host、Client、Server 三个角色,以及 Tools、Resources、Prompts 三类能力,就掌握了它的核心。对开发者来说,把自己常用的内部工具包装成 MCP Server,是让 AI 编程助手和智能体真正融入日常工作的一条低成本路径。欢迎在评论区交流你写过的 MCP Server。

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。