MCP 协议:标准化的工具接入
什么是 MCP?
MCP (Model Context Protocol) 是一个开放协议,让 AI 模型能够:
- •统一方式连接各种数据源和工具
- •跨平台使用相同的工具生态
- •简化 AI Agent 的开发
MCP 的核心概念
1. Resources(资源)
AI 可以读取的数据源:
- •文件内容
- •数据库记录
- •API 响应
2. Tools(工具)
AI 可以调用的操作:
- •搜索网络
- •发送邮件
- •执行代码
3. Prompts(提示模板)
预定义的提示词模板,可以被 AI 调用。
MCP 服务器结构
// 一个简单的 MCP 服务器示例
const server = new MCPServer({
name: "my-tools",
version: "1.0.0"
});
// 注册工具
server.registerTool({
name: "calculate",
description: "执行数学计算",
inputSchema: {
type: "object",
properties: {
expression: {
type: "string",
description: "数学表达式,如 2+2"
}
},
required: ["expression"]
},
handler: async (input) => {
const result = eval(input.expression);
return { result };
}
});
// 启动服务器
server.start();
MCP 工具定义最佳实践
1. 清晰的工具描述
{
"name": "search_web",
"description": "搜索互联网获取实时信息。适用于:查询最新新闻、搜索特定主题、验证事实。不适用于:需要账号登录的内容、付费内容。"
}
2. 详细的参数说明
为每个参数提供:
- •清晰的 description
- •合适的类型
- •示例值
3. 合理的错误处理
handler: async (input) => {
try {
const result = await doSomething(input);
return { success: true, data: result };
} catch (error) {
return {
success: false,
error: error.message,
suggestion: "请检查输入参数是否正确"
};
}
}
常用 MCP 工具模式
信息检索类
{
"name": "search_*",
"description": "搜索/查询/获取信息"
}
内容生成类
{
"name": "generate_*",
"description": "生成图片/文档/代码"
}
操作执行类
{
"name": "send_* / create_* / update_*",
"description": "发送消息/创建资源/更新状态"
}
MCP 与 Function Calling 的关系
| 特性 | Function Calling | MCP | |------|------------------|-----| | 标准化 | 各厂商不同 | 统一标准 | | 生态 | 需要自己实现 | 可复用社区工具 | | 跨平台 | 绑定特定模型 | 模型无关 |
实战:创建一个 MCP 工具
// 天气查询工具
{
name: "get_weather",
description: "查询城市天气。返回温度、天气状况、湿度等信息。",
inputSchema: {
type: "object",
properties: {
city: {
type: "string",
description: "城市名称(中文),如:北京、上海"
},
days: {
type: "number",
description: "预报天数,1-7",
default: 1
}
},
required: ["city"]
}
}
练习
设计一个 MCP 工具,用于:
管理 Todo 列表(添加、完成、删除、查询)
思考:
- •需要几个工具?还是一个工具多个操作?
- •每个操作需要什么参数?
- •如何处理不存在的任务?
小结
- •MCP 是 AI 工具生态的标准化协议
- •统一了工具定义和调用方式
- •好的工具设计 = description + parameters + error handling
- •社区化的工具生态正在快速发展
恭喜完成 Skills 核心课程!