📡 MCP 协议简明说明文档

什么是 MCP 协议?

MCP(Message Calling Protocol)是一种用于“大模型调用工具”的通信协议标准。

它的目标是解决这个问题:

🧠 “模型说要调用工具 A 干点事,那我们怎么告诉它工具叫啥、怎么传参、怎么返回结果呢?”


MCP 协议规定了什么?(共 4 点)

1. 工具定义格式

使用 JSON Schema 定义工具的名称、描述和参数:

{
  "name": "get_weather",
  "description": "获取城市天气",
  "parameters": {
    "type": "object",
    "properties": {
      "city": { "type": "string", "description": "城市名" }
    },
    "required": ["city"]
  }
}

2. 调用请求格式

遵循 JSON-RPC 格式:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "get_weather",
    "arguments": {
      "city": "北京"
    }
  }
}

3. 返回结果格式

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "北京今天晴,最高25度。"
      }
    ]
  }
}

支持返回多种类型的数据(如文本、图片、文件等)。


4. 多轮交互 & 中间件机制

  • 支持多轮对话中的函数调用
  • MCP Server 可实现日志、权限、缓存、调度等中间件机制

MCP 协议需要客户端和服务端做什么?

🖥️ 服务端(MCP Server)职责

功能说明
接收 JSON-RPC 请求支持 HTTP / WebSocket / stdio 等方式
查找并执行工具逻辑按名称 name 执行对应函数或脚本
返回标准格式结果输出 result.content,统一格式

返回示例:

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "用户123的信息是:张三,男,30岁"
      }
    ]
  }
}

🤖 客户端(通常是大模型/代理)职责

功能说明
注册工具定义向模型注册工具(包括 JSON Schema)
监听模型的 Function Call捕捉模型提出的调用请求
构造 JSON-RPC 请求转换为 MCP 格式请求发送给 MCP Server
处理返回内容将结果转为模型能理解的结构或继续对话

附加功能建议(强烈推荐)

功能建议位置说明
工具注册接口服务端例如 tools/list
权限与多租户服务端控制不同用户访问不同工具
参数校验服务端 & 客户端严格验证参数格式
日志记录服务端调用链追踪、调试
流式输出(SSE)服务端实时返回内容

✅ 总结一句话

MCP 是为“大模型调用外部工具”定的一套说话方式,它规定了工具怎么定义、怎么调用、怎么返回,帮你把大模型和实际功能连接起来,像调用 API 一样干活。

资源记录

相关文章

相关类库