MCP 协议详解:与 Function Call 的区别及 Python 实现
1. 什么是 MCP?
Model Context Protocol(MCP),即大模型上下文协议,由 Anthropic 近期提出。它的核心目标是为 AI 大模型与外部工具(如信息查询、本地文件操作等)之间的交互提供一个统一的处理标准。
如果把 USB-C 接口统一了物理连接方式,那么 MCP 协议就是统一了大模型与工具的对接逻辑。它采用 C/S 架构,支持客户端调用远程 Server 服务,同时也支持 stdio 流式传输模式,允许在客户端本地启动 MCP 服务端。只需在配置文件中新增 MCP 服务端,即可让大模型便捷地使用各种工具。
作为开源协议,MCP 旨在让所有 AI 厂商和工具都能集成其中。用户越多,协议生态越丰富,技术迭代也越快。
2. 理解 Function Call 机制
在 MCP 普及之前,AI Agent 开发若要调用外部工具,通常需要针对不同的 SDK 编写适配代码。OpenAI 提供的 Function Call 是最为常见的处理逻辑之一。
2.1 Function Call 实战演示
配置工具与参数
调用 Chat Completions 接口时,通过 tools 参数传入外部工具定义。这包含了工具的描述、所需参数及其释义。tool_choice 字段控制模型行为:设为 auto 表示自动选择工具,none 则禁止调用。
import openai
import json
def main():
# 初始化客户端,请替换为你的实际 API Key
client = openai.OpenAI(
api_key="YOUR_API_KEY",
base_url="https://api.siliconflow.cn/v1"
)
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": "城市名"}
},
"required": ["city"]
}
}
}]
res = client.chat.completions.create(
model="Qwen/Qwen2.5-32B-Instruct",
messages=[
{: , : },
{: , : }
],
tools=tools,
tool_choice=
)
(, res.choices[].message.content)
(, res.choices[].message.tool_calls)
(, res.choices[].message.to_dict())
__name__ == :
main()


