跳转到内容

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 基础 →