MCP入门
约 1408 字大约 5 分钟
2025-11-10
什么是 MCP
MCP 即模型上下文协议(Model Context Protocol),是 Anthropic 于 2024 年 11 月推出的开源开放标准协议,核心是为大模型与外部数据源、各类工具的交互制定统一 “规则”,就像 AI 应用领域的 USB - C 接口,通过客户端 - 服务器架构实现二者安全、高效的连接与上下文传递。
MCP 的特点
- 交互标准化:统一大模型与外部数据、工具的对接方式,形成通用 “语言”。
- 集成高效化:一次开发适配所有支持 MCP 的模型 / 应用,迁移无需重写代码。
- 生态开放化:支持第三方开发可复用服务器,形成共享的工具 / 数据接入生态。
- 安全可控化:权限自主管控、敏感信息隔离、传输加密,降低数据泄露风险。
MCP 优缺点
- 优点
- 打破数据与工具的孤岛,实现跨场景资源互通。
- 大幅减少重复开发工作,降低开发与迁移成本。
- 无需依赖单一厂商,提升应用灵活性和可扩展性。
- 从架构设计上保障数据安全,适配企业私有场景。
- 缺点
- 作为新兴协议,部分小众工具 / 系统暂无成熟适配方案。
- 企业部署需搭建 MCP 服务器,对小型团队存在一定技术门槛。
- 生态仍在完善中,跨厂商的深度协同场景尚未完全覆盖。
MCP 与传统集成方式对比表
| 对比维度 | 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"
}
]
}
}MCP 开发调试
工具
npx @modelcontextprotocol/inspectorSDK
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
- 手动添加 MCP 服务
{
"mcpServers": {
"test": {
//服务名称
"command": "node", //执行命令
"args": ["绝对路径"] //执行命令参数
}
}
}本地 MCP 服务配置完成,并且识别出了 sum 工具。

也可以把编写好的服务上传到 npm,就可以远程配置。
{
"mcpServers": {
"Puppeteer": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-puppeteer"],
"env": {}
}
}
}
将 MCP 添加到自定义智能体中
使用

这里就可以看到 AI 就开始调用自己写的工具输出结果。