MCP (Model Context Protocol) 核心要点
什么是 MCP?
Model Context Protocol(模型上下文协议) 是由 Anthropic 于 2024 年 11 月发布的开放标准,旨在标准化大型语言模型(LLM)与外部工具、系统和数据源的集成方式。
核心定位
MCP 提供了一个通用接口,使 AI 模型能够:
- 安全地访问外部数据源
- 调用外部工具和函数
- 处理上下文提示信息
- 实现与外部世界的无缝连接
类比:MCP 就像是 AI 应用程序的"USB-C 接口",提供标准化的连接方式。

核心架构
MCP 采用三层架构设计:
┌─────────────┐
│ MCP Host │ ← 发起请求的 LLM 应用程序(如 Claude Desktop、IDE)
└──────┬──────┘
│
┌──────▼──────┐
│ MCP Client │ ← 在主机内,与服务器保持一对一连接的协议客户端
└──────┬──────┘
│
┌──────▼──────┐
│ MCP Server │ ← 提供上下文、工具和提示信息的服务器
└─────────────┘

通信方式
- 协议:基于 JSON-RPC 2.0
- 传输:通过 stdio(标准输入输出)或 HTTP 进行通信
- 交互:双向通信,支持请求/响应模式
主要特点
1. 标准化接口
- 统一的协议规范,减少为每个数据源构建自定义连接器的需求
- 适用于各种 LLM 提供商和应用程序
2. 多语言 SDK 支持
官方提供多种编程语言的 SDK:
- Python
- TypeScript/JavaScript
- Java、Kotlin
- C#、Go、PHP、Perl、Ruby、Rust、Swift
3. 安全性
- 内置权限控制机制
- 用户认证支持
- 审计日志功能
4. 可扩展设计
- 支持自定义插件和扩展
- 灵活的工具和资源定义
- 高效的上下文管理
如何创建可执行的 MCP 工具
环境准备
Python 环境:
bash
# 需要 Python 3.11 及以上版本
python --version
# 安装 MCP SDK
pip install mcp
# 或使用 FastMCP(更简洁的框架)
pip install fastmcpTypeScript 环境:
bash
npm install @modelcontextprotocol/sdkPython 示例:创建简单的 MCP 服务器
python
from mcp.server.fastmcp import FastMCP
# 创建 MCP 服务器实例
mcp = FastMCP("MyServer")
# 定义工具函数
@mcp.tool()
def add(a: int, b: int) -> int:
"""将两个数字相加"""
return a + b
@mcp.tool()
def greet(name: str) -> str:
"""向指定的人打招呼"""
return f"你好, {name}!"
# 运行服务器
if __name__ == "__main__":
mcp.run()TypeScript 示例
typescript
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
const server = new Server({
name: "my-mcp-server",
version: "1.0.0",
}, {
capabilities: {
tools: {},
},
});
// 定义工具
server.setRequestHandler("tools/list", async () => ({
tools: [
{
name: "add",
description: "将两个数字相加",
inputSchema: {
type: "object",
properties: {
a: { type: "number" },
b: { type: "number" },
},
required: ["a", "b"],
},
},
],
}));
server.setRequestHandler("tools/call", async (request) => {
if (request.params.name === "add") {
const { a, b } = request.params.arguments as { a: number; b: number };
return {
content: [
{
type: "text",
text: String(a + b),
},
],
};
}
throw new Error("Unknown tool");
});
// 启动服务器
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("MCP 服务器已启动");
}
main().catch(console.error);运行和测试
运行 Python 服务器:
bash
python server.py运行 TypeScript 服务器:
bash
npx tsx server.ts配置客户端连接: 在 MCP 客户端(如 Claude Desktop)的配置文件中添加服务器配置:
json
{
"mcpServers": {
"my-server": {
"command": "python",
"args": ["/path/to/server.py"]
}
}
}开发流程
- 选择 SDK:根据项目需求选择合适的编程语言和 SDK
- 定义工具:使用装饰器或配置方式定义工具函数
- 实现功能:编写具体的业务逻辑
- 测试运行:本地测试服务器功能
- 配置连接:在客户端配置服务器连接
- 部署使用:部署到生产环境
MCP 工作原理
工具调用流程
MCP 工具调用遵循标准的请求/响应模式,通过 JSON-RPC 2.0 协议进行通信:
生命周期管理
MCP 连接的生命周期包括初始化、发现、操作和清理四个主要阶段:
核心概念
MCP 定义了三个核心概念,它们共同构成了 MCP 的功能基础:
Tools(工具)
- 可被 AI 模型调用的函数
- 包含名称、描述、输入参数定义
- 返回结构化的结果
- 实现 AI 模型与外部系统的交互能力
Resources(资源)
- 可被 AI 模型访问的数据源
- 支持列表、读取、订阅等操作
- 例如:文件系统、数据库、API 数据
- 提供结构化的数据访问接口
Prompts(提示)
- 预定义的提示模板
- 帮助 AI 模型更好地理解上下文
- 支持参数化配置
- 简化常见的交互模式
应用场景
- 数据库访问:通过自然语言查询结构化数据
- 文件系统操作:读取、写入、管理文件
- API 集成:调用外部 API 服务
- 开发工具集成:IDE 插件、代码分析工具
- 实时数据流:订阅和处理实时数据
相关资源
实战教程
- Python MCP 工具开发实战:创建天气查询工具 - 通过实际案例学习如何使用 Python 和 FastMCP 创建自己的 MCP 工具
💡 提示:MCP 的核心价值在于标准化和可扩展性,通过统一的协议实现 AI 模型与外部系统的无缝集成。
