1 MCP格式

https://www.runoob.com/np/mcp-protocol.html

MCP(Model Context Protocol)是一种通信协议,通过MCP协议可以像电脑一样挂载一些“外设”,扩展大模型的能力,提升效率。

2 如何使用MCP

2.1 核心对象

MCP:用于MCP Server和MCP Client之间传输消息

角色形象比喻职责
MCP Host (主机)“大脑”所在的应用。大模型运行大模型的应用程序(如 Claude Desktop、Cursor、ChatGPT)。它负责发起请求,展示结果。应用层
MCP Client (客户端)“翻译官”/插头。嵌入在 Host 内部。它负责把大模型的想法(意图)翻译成标准的 MCP 协议指令,发给服务器。接口层
MCP Server (服务器)“手脚”/外设外部能力的提供者(如文件读取器、数据库连接器)。它封装了具体的工具和数据,等待 Client 的调用。服务层

2.2 流程

如果不使用agent时,直接将mcp的回复转到LLM,可能需要格式转换为prompts,遵循OpenAI协议标准。

3 MCP 的3种消息格式

请求、响应、通知。消息通过JsonRPC2.0进行封装。

3.1 请求消息

{
  "jsonrpc": "2.0",
  "id": "string | number",
  "method": "string",
  "params": {
    "[key: string]": "unknown"
  }
}

jsonrpc:协议版本,固定为"2.0"。
id:请求的唯一标识符,可以是字符串或数字。
method:要调用的方法名称,是一个字符串。
params:方法的参数,是一个可选的键值对对象,其中键是字符串,值可以是任意类型。

3.2 响应消息

{
  "jsonrpc": "2.0",
  "id": "string | number",
  "result": {
    "[key: string]": "unknown"
  },
  "error": {
    "code": "number",
    "message": "string",
    "data": "unknown"
  }
}

jsonrpc:协议版本,固定为"2.0"。
id:与请求中的id相对应,用于标识响应所对应的请求。
result:如果请求成功,result字段包含操作的结果,是一个键值对对象。
error:如果请求失败,error字段包含错误信息,其中:
code:错误代码,是一个数字。
message:错误描述,是一个字符串。
data:可选的附加错误信息,可以是任意类型。

3.3 通知消息

通知消息是一种单向消息,不需要接收方回复。

{
  "jsonrpc": "2.0",
  "method": "string",
  "params": {
    "[key: string]": "unknown"
  }
}
jsonrpc:协议版本,固定为"2.0"。
method:要调用的方法名称,是一个字符串。
params:方法的参数,是一个可选的键值对对象,其中键是字符串,值可以是任意类型。

4 demo

https://github.com/Azure-Samples/python-mcp-demos/blob/main/agents/langchainv1_http.py

更多推荐