MCP 协议详解:与 Function Call 的区别及 Python 实践
2025 年,Anthropic 提出了 MCP(Model Context Protocol)协议。简单来说,这是大模型上下文协议,旨在为 AI 大模型和外部工具之间的交互提供一个统一的处理标准。如果把 USB-C 接口看作是统一了物理设备的连接方式,那么 MCP 就是统一了大模型与工具的对接方式。
什么是 MCP?
MCP 采用了 C/S 架构,即服务端与客户端模式。它支持在客户端设备上调用远程 Server 提供的服务,同时也支持 stdio 流式传输模式,这意味着你可以在本地启动 MCP 服务端。只需要在配置文件中新增 MCP 服务端,就能用上该服务器提供的各种工具,大大提升了大模型使用外部工具的便捷性。

作为开源协议,MCP 允许所有 AI 厂商和工具将其集成到客户端中,从而扩大可用范围。只有用户越多,协议才能不断演进和完善。
回顾 Function Call
在 MCP 出现之前,如果我们想开发 AI Agent 并调用外部工具,通常需要针对不同的 AI 大模型 SDK 编写不同的代码。最经典的方案是 OpenAI 提供的 Function Call 处理逻辑。
Function Call 实战流程
1. 配置工具,让 AI 提供参数
调用 Chat Completions 接口时,可以通过 tools 参数传入可供使用的外部工具。这里定义了工具的作用、所需参数及其释义。其中 tool_choice 字段设置为 auto 代表让大模型自动选择是否调用工具,设置为 none 则不会调用。
import openai
import json
def main():
# 初始化客户端,注意替换为有效的 API Key
client = openai.OpenAI(
api_key="xxxxx",
base_url="https://api.siliconflow.cn/v1"
)
tools = [{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市的天气",
"parameters": {
"type": "object",
"properties": {
"city": {"type": "string", "description": }
},
: []
}
}
}]
res = client.chat.completions.create(
model=,
messages=[{
: ,
:
}, {
: ,
:
}],
tools=tools,
tool_choice=
)
(, res.choices[].message.content)
(, res.choices[].message.tool_calls)


