简述MCP(Model Context Protocols)

What’s MCP

MCP,模型上下文协议,是一种开源标准。如果希望让我们的AI Agent能自动使用工具,能与各种数据源建立连接,自动地访问和利用外部信息,那么MCP就是这一过程的中间件。由LLM来决定需要调用哪些工具,但是由于LLM供应商以及各种工具标准并不统一,就MCP标准化指令的执行。即,MCP提供了一种将代理连接到工具的标准化方法。

MCP作为一种“中间协议层”,可以通过下图来更好地理解,具体架构将在后文阐述;

Why’ s MCP

上面也提到了,LLM供应商以及各种工具标准并不统一,并且函数调用本身就具有局限性,再进一步讲述之前,我们先明确函数调用的概念。

函数调用(function calling)负责将自然语言提示转换为结构化函数调用指令,以便面向工具的系统(如 MCP 服务器)能够理解并执行作。此阶段的重点是为工具或 API 生成精确的指令。这就是LLM与具体系统集成的第一阶段;第二阶段才是MCP提供标准化工具执行指令。

LLM供应商大都提供了函数调用的功能,这里以Deepseek为例,简述函数调用的过程和使用方法(不考虑MCP的使用),具体内容可以进一步参考Deepseek API文档

  1. 用户提问:北京今天的天气如何?
  2. LLM理解用户提问,返回 function get_weather({location: 'Beijing'})
  3. (用户)手动调用 function get_weather({location: 'Beijing'}),将返回结果传递给LLM;
  4. LLM理解结果,并将答案以自然语言形式输出;

示例代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
from openai import OpenAI

def send_messages(messages):
response = client.chat.completions.create(
model="deepseek-chat",
messages=messages,
tools=tools
)
return response.choices[0].message

client = OpenAI(
api_key="<your api key>",
base_url="https://api.deepseek.com",
)

tools = [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get weather of an location, the user shoud supply a location first",
"parameters": {
"type": "object",
"properties": {
"location": {
"type": "string",
"description": "The city and state, e.g. San Francisco, CA",
}
},
"required": ["location"]
},
}
},
]

messages = [{"role": "user", "content": "How's the weather in Beijing?"}]
message = send_messages(messages)
print(f"User>\t {messages[0]['content']}")

tool = message.tool_calls[0]
messages.append(message)

messages.append({"role": "tool", "tool_call_id": tool.id, "content": "24℃"})
message = send_messages(messages)
print(f"Model>\t {message.content}")

注意上述代码中,我们手动定义了工具的内容,其格式由LLM供应商决定,并且供应商之间标准并不统一。而且,函数调用功能是通过用户手动执行并将结果添加到prompt中实现的。

MCP’s Role in Execution

LLM生成函数调用指令后,必须执行这些指令才能提供结果。这就是 MCP 的用武之地。MCP 提供了一个标准化的框架来管理执行过程,包括工具发现、调用和响应处理;关于其具体的执行过程,我们先介绍它的架构;

MCP Architecture

上图直观展示了MCP的架构,它主要围绕三个组件构成:MCP Server、MCP Host、MCP Client;

  • MCP Server:顾名思义,是MCP的服务端,即集成的工具、函数、结构和数据连接所在的位置,同时负责执行代理给出的指令;
  • MCP Host:主机,比如聊天应用程序,用户使用包含代理的应用程序;
  • MCP Client:MCP的客户端,是主机与服务器之间的接口,负责数据交换;

当引入MCP后,我们通过Agent代理查询天气的过程变成:

  1. 用户提问:北京今天的天气如何?
  2. 主机连接到LLM,根据问题和服务器提供的工具列表,确定使用哪些MCP Server;
  3. 客户端调用所需的MCP Server,执行所选的工具;
  4. 服务器将结果回送给LLM,后者生成最终答案并输出给用户;

MCP开发

持续更新中

官方开发文档可参考:
官方开发文档

Reference

[1]. What is Model Context Protocol? (MCP) Architecture Overview


简述MCP(Model Context Protocols)
https://blog.yokumi.cn/2025/04/04/简述MCP(Model Context Protocols)/
作者
Yokumi
发布于
2025年4月4日
许可协议
CC BY-NC-SA 4.0