跳转到内容

MCP 协议教程:让 AI Agent 标准化连接工具(USB-C 类比)

学完这一节,你能:

  • 理解 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)都能直接用

原语 作用 例子
Tools 让模型执行动作 查数据库、发邮件、调 API
Resources 给模型提供数据 读文件、读数据库表
Prompts 预设的提示词模板 代码审查模板、SQL 生成模板
Function Calling MCP
谁定义工具 开发者写代码 工具方按 MCP 标准实现
复用性 每个应用重写 实现一次,处处可用
标准化 各家不一 统一协议
生态 零散 官方 + 社区 65+ Server

一句话:Function Calling 是“自己接电线”,MCP 是“用标准插座”。

🛠️ 动手实操:用官方 Filesystem MCP Server

Section titled “🛠️ 动手实操:用官方 Filesystem MCP Server”

Step 1:装 MCP 客户端(Claude Desktop 或自建)

Section titled “Step 1:装 MCP 客户端(Claude Desktop 或自建)”

最简单:用 Claude Desktop。配置文件 claude_desktop_config.json:

{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/你/fde-learn"]
}
}
}

现在 Claude 能读你指定目录的文件了。问它:“读 fde-learn 里的 llm.py 并解释”,它会自动调 MCP filesystem 工具。

Terminal window
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 传输配置错/端口冲突 检查 claude_desktop_config.json 路径,看日志
工具不被模型调用 工具描述写得太模糊 工具的 docstring 要写清楚“什么时候该用我”
和 Function Calling 混淆 以为要二选一 MCP 底层也是 Function Calling,只是标准化了工具暴露方式
1. MCP 的三原语是哪三个? Tools(执行动作)、Resources(提供数据)、Prompts(预设模板)。
2. MCP 相比 Function Calling 的核心优势是什么? **一次实现,处处可用**——工具按 MCP 标准写一次,任何支持 MCP 的客户端(Claude/Cursor/Dify/你的 Agent)都能直接用,不用每个应用重写。

MCP 是 AI 工具的 USB-C,标准化让工具一次实现处处可用。2026 年是 Agent 生态的连接层基石。


← 上一节:LangGraph | 下一节:RAG 基础