什么是 MCP?
Model Context Protocol(MCP)是大模型上下文协议,由 Anthropic 提出。它主要为 AI 大模型和外部工具之间的交互提供了一个统一的处理标准。如果把 USB-C 接口统一了物理连接方式,那么 MCP 协议就是统一了大模型与工具的对接逻辑。
MCP 采用 C/S 架构,支持客户端调用远程 Server 提供的服务,同时也支持 stdio 流式传输模式,允许在客户端本地启动 MCP 服务端。只需在配置文件中新增 MCP 服务端,就能直接复用该服务器提供的各种工具,大大提升了大模型使用外部工具的便捷性。
作为开源协议,MCP 旨在让所有 AI 厂商和工具都能集成到自己的客户端中。生态越丰富,协议的发展就越快,最终惠及整个开发者社区。
为什么需要 MCP?了解 Function Call
在 MCP 出现之前,AI Agent 开发如果想调用外部工具,通常需要针对不同的 AI 大模型 SDK 编写不同的适配代码。最经典的方案是 OpenAI 的 Function Call 机制,虽然解决了基础的工具调用问题,但缺乏统一标准,导致不同模型间的工具定义和参数传递存在差异。
Function Call 实战示例
我们以天气查询为例,看看传统的 Function Call 是如何工作的。
1. 配置工具,让 AI 提供参数
调用 Chat Completions 接口时,通过 tools 参数传入外部工具的定义。这包含了工具的作用、所需参数及其释义。其中 tool_choice 字段设为 auto 代表让大模型自动选择是否调用工具,设为 none 则禁止调用。
import openai
import json
def main():
# 初始化客户端,这里以硅基流动 Qwen2.5 为例
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)
(, res.choices[].message.to_dict())
__name__ == :
main()


