本课目录(15 节)
🎯 本节目标
学完这一节,你能:
- 理解 MCP(Model Context Protocol) 协议
- 说清 MCP vs Function Calling 的区别
- 用官方 MCP Server 给 Agent 加一个标准化工具
🍎 生活化类比
MCP = AI 工具的 USB 接口。
在 USB 出现前,每个外设(鼠标、键盘、打印机)都有自己专用的接口,电脑要装一堆驱动。
Function Calling 就是"专用接口"——每个模型、每个工具的对接方式都不一样,换个模型就要重写。
MCP 是 AI 界的 USB-C:一个标准协议,任何工具按 MCP 规范实现一次,所有支持 MCP 的客户端(Claude Desktop / Cursor / Dify / 你的 Agent)都能直接用。
📖 概念讲解
MCP 三原语
| 原语 | 作用 | 例子 |
|---|---|---|
| Tools | 让模型执行动作 | 查数据库、发邮件、调 API |
| Resources | 给模型提供数据 | 读文件、读数据库表 |
| Prompts | 预设的提示词模板 | 代码审查模板、SQL 生成模板 |
MCP vs Function Calling
| Function Calling | MCP | |
|---|---|---|
| 谁定义工具 | 开发者写代码 | 工具方按 MCP 标准实现 |
| 复用性 | 每个应用重写 | 实现一次,处处可用 |
| 标准化 | 各家不一 | 统一协议 |
| 生态 | 零散 | 官方 + 社区 65+ Server |
一句话:Function Calling 是"自己接电线",MCP 是"用标准插座"。
协议版本演进(2026-08 现状)
| 版本 | 时间 | 加了什么 |
|---|---|---|
| 1.0 | 2024-11 | 协议发布(Anthropic 发起) |
| 2025-03-26 | 2025-03 | 结构化输出、OAuth 授权、工具列表变更通知 |
| 2025-06-18(最新) | 2025-06 | Elicitation(服务端反过来向用户征询输入)、Resource Links(资源里能带可点击链接)、OAuth 2.1 强化、协议版本协商强化、移除 JSON-RPC batching |
给家里人讲:USB-C 也有"版本"(USB 2.0/3.0/4.0),充电口长得一样,但新线传输更快。MCP 同理——接口规范在升级,但"一个口通吃"的核心思想没变。你写 MCP Server 时装最新的 mcp SDK,兼容性由 SDK 自动处理,不用操心。
🛠️ 动手实操:用官方 Filesystem MCP Server
Step 1:装 MCP 客户端(Claude Desktop 或自建)
最简单:用 Claude Desktop。配置文件 claude_desktop_config.json:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/你/fde-learn"]
}
}
}
Step 2:重启 Claude Desktop
现在 Claude 能读你指定目录的文件了。问它:"读 fde-learn 里的 llm.py 并解释",它会自动调 MCP filesystem 工具。
Step 3:自己写个 MCP Server(进阶)
pip install mcp
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("my-tools")
@mcp.tool()
def get_weather(city: str) -> str:
"""获取城市天气(简化版)"""
return f"{city} 今天晴,25度"
if __name__ == "__main__":
mcp.run()
这个 get_weather 工具,任何 MCP 客户端都能调——你写一次,全生态可用。
⚠️ 常见错误
| 问题 | 原因 | 解决 |
|---|---|---|
| MCP Server 启动后客户端连不上 | stdio 传输的配置写错(命令/路径不对);若是 SSE/HTTP 传输才是端口被占 | 检查 claude_desktop_config.json 里的 command/args 路径,看客户端日志 |
| 工具不被模型调用 | 工具描述写得太模糊 | 工具的 docstring 要写清楚"什么时候该用我" |
| 和 Function Calling 混淆 | 以为要二选一 | MCP 底层也是 Function Calling,只是标准化了工具暴露方式 |
✅ 自测题
<summary>1. MCP 的三原语是哪三个?</summary> Tools(执行动作)、Resources(提供数据)、Prompts(预设模板)。 </details> <summary>2. MCP 相比 Function Calling 的核心优势是什么?</summary> **一次实现,处处可用**——工具按 MCP 标准写一次,任何支持 MCP 的客户端(Claude/Cursor/Dify/你的 Agent)都能直接用,不用每个应用重写。 </details>📚 总结
MCP 是 AI 工具的 USB-C,标准化让工具一次实现处处可用。2026 年是 Agent 生态的连接层基石。
🏋️ 配套自练
- MCP 官方规范 — 读 Quickstart,跑通第一个 MCP server(免费)
- Glama MCP Servers 目录 — 浏览 65+ 现成 MCP server,挑一个装到 Claude Desktop 试(免费)
- 官方参考 Servers — 跑 filesystem server,让 AI 读你指定目录的文件(免费)
🔗 延伸阅读
随堂测
逐题作答,即时反馈
1. 关于 MCP 的三原语,下列对应关系正确的是?
2. MCP 相比 Function Calling 的核心优势是?
3. 按照讲义中的常见错误总结,当你写好 MCP Server 后客户端连不上,且使用的是 stdio 传输时,最可能的原因是?