MCP
MCP 全称 Model Context Protocol,翻译过来就是「模型上下文协议」。 它的作用是: 👉 给 AI 模型提供一个 标准的接口,这样模型就能去调用外部的 工具、数据源、服务,而不需要开发者写一堆定制 glue code。
1️⃣ 创建 MCP Server 实例
- 每个 MCP Server 需要:
- 名字(name)
- 版本号(version)
- 声明能力(capabilities):
- tools:模型可调用的工具
- resources:模型可访问的数据或状态
模型通过 MCP Server 访问工具和资源,而不直接操作外部 API 或数据库。
// 创建一个新的 MCP 服务器实例
const server = new McpServer({
name: "mcp-get-installed-apps", // 服务器名称
version: "1.0.0", // 服务器版本
capabilities: {
resources: {}, // 定义服务器支持的资源
tools: {}, // 定义服务器支持的工具
},
});
2️⃣ 定义工具(Register Tool)
- 每个工具是模型可调用的函数
- 需要声明:
- 名字(tool name)
- 描述(方便模型理解)
- 输入参数格式(input schema)
- 返回结果格式(output schema)
- 实现工具逻辑,如计算、查询数据库、调用第三方 API 等。
// 注册一个工具
server.registerTool(
"add",
{
title: "Addition Tool",
description: "Add two numbers",
inputSchema: { a: z.number(), b: z.number() },
},
async ({ a, b }) => ({
content: [{ type: "text", text: String(a + b) }],
})
);
3️⃣ 启动 MCP Server
- MCP Server 需要 transport 与客户端通信
- 常用方式:
- stdio(标准输入/输出)
- 其他方式如 WebSocket、HTTP 等
- 流程:
- 模型通过客户端发请求
- MCP Server 执行工具
- 返回结果给客户端,再传给模型
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error("Calculator MCP Server is running...");
}
main().catch(console.error);
4️⃣ MCP 客户端调用
- 客户端可以是 ChatGPT、VS Code 插件或自定义程序
- 工作流程:
- 连接 MCP Server
- 按照工具声明发送请求
- 接收工具返回结果
- 客户端让模型“知道”有哪些工具可以调用
5️⃣ 输入输出验证
- MCP Server 根据工具 schema 自动验证输入输出
- 常用方式:
- 使用
zod
或 JSON Schema 声明参数和返回值
- 使用
- 保证模型调用工具时类型安全,返回结果符合预期