驾校教练通
131.15MB · 2025-11-27
MCP 即模型上下文协议(Model Context Protocol),是 Anthropic 于 2024 年 11 月推出的开源开放标准协议,核心是为大模型与外部数据源、各类工具的交互制定统一 “规则”,就像 AI 应用领域的 USB - C 接口,通过客户端 - 服务器架构实现二者安全、高效的连接与上下文传递。
| 对比维度 | MCP(模型上下文协议) | 传统集成方式(自定义接口/厂商私有插件) |
|---|---|---|
| 对接标准 | 统一开放协议,所有支持 MCP 的模型/工具通用 | 无统一标准,需按不同厂商/工具的接口规则适配 |
| 开发成本 | 一次开发适配所有兼容平台,无重复工作 | 每新增一个模型/工具需单独编写适配代码,成本高 |
| 迁移灵活性 | 支持跨厂商快速迁移,无需重写核心代码 | 绑定单一厂商或工具,迁移需重构适配逻辑 |
| 数据安全 | 敏感信息本地存储,权限自主管控,传输加密 | 常需向第三方厂商提供密钥,数据泄露风险较高 |
| 生态覆盖 | 开放生态,第三方可开发复用服务器,适配场景持续扩充 | 多为厂商私有生态,工具/数据互通性差 |
| 技术门槛 | 需搭建 MCP 服务器,对小型团队有一定门槛 | 无需额外搭建中间层,但适配复杂度随工具增多上升 |
| 协同能力 | 支持跨平台、跨工具无缝协同,共享上下文 | 不同工具/系统间难以联动,协同效率低 |
| 实时数据接入 | 原生支持对接实时业务系统,获取最新数据 | 需单独开发实时同步逻辑,适配难度大 |
MCP 协议由两部分组成:工具描述和工具调用。
工具描述是 MCP 服务中最重要的部分,它定义了工具的功能、输入输出格式、权限等信息。工具描述通常以 JSON 格式表示。
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"capabilities": {
"roots": {
"listChanged": true
}
}
},
"clientInfo": {
"name": "clientName",
"title": "clientTitle",
"version": "clientVersion"
}
}
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2025-06-18",
"capabilities": {
"tools": {
"listChanged": true
}
},
"serverInfo": {
"name": "mcp-server",
"title": "MCP Server",
"version": "0.0.1"
}
}
}
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list",
"params": {}
}
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"tools": [
{
"name": "sum",
"title": "两数求和",
"description": "Get the sum of two numbers",
"inputSchema": {
"type": "object",
"properties": {
"a": {
"type": "number",
"description": "The first number"
},
"b": {
"type": "number",
"description": "The second number"
}
},
"required": ["a", "b"]
}
}
]
}
}
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "sum",
"arguments": {
"a": 1,
"b": 2
}
}
}
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [
{
"type": "text",
"text": "1 + 2 = 3"
}
]
}
}
npx @modelcontextprotocol/inspector
npm install @modelcontextprotocol/sdk
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
//官方指定zod,用于定义输入输出格式
import { z } from "zod";
//创建一个McpServer实例
const server = new McpServer({
//设置服务器信息
name: "mcp-server",
title: "MCP Server",
version: "0.0.1",
});
//注册一个求和的工具
server.registerTool(
"sum",
{
title: "两数求和",
description: "两数求和",
inputSchema: {
a: z.number().describe("第一个数"),
b: z.number().describe("第二个数"),
},
},
({ a, b }) => {
return {
content: [
{
type: "text",
text: `${a} + ${b} = ${a + b}`,
},
],
};
}
);
//添加一个StdioServerTransport实例
const transport = new StdioServerTransport();
server.connect(transport);
对应上面的三个步骤
使用:
可以使用编辑器连接,例如:Trae
{
"mcpServers": {
"test": {
//服务名称
"command": "node", //执行命令
"args": ["绝对路径"] //执行命令参数
}
}
}
本地 MCP 服务配置完成,并且识别出了 sum 工具。
也可以把编写好的服务上传到 npm,就可以远程配置。
{
"mcpServers": {
"Puppeteer": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-puppeteer"],
"env": {}
}
}
}
将 MCP 添加到自定义智能体中
使用
这里就可以看到 AI 就开始调用自己写的工具输出结果。
书洞笔记