MCP 协议详解:与 Function Call 的区别及实战使用
近期,Anthropic 提出了 MCP(Model Context Protocol)协议。作为大模型上下文协议,它主要为 AI 大模型和外部工具之间的交互提供了一个统一的处理标准。这就好比 USB-C 统一了物理接口的样式,MCP 旨在统一大模型与工具的对接方式。
1. 什么是 MCP?
MCP 协议采用 C/S 架构(服务端/客户端),支持在客户端设备上调用远程 Server 提供的服务,同时也支持 stdio 流式传输模式,即可以在客户端本地启动 MCP 服务端。只需在配置文件中新增 MCP 服务端,就能利用服务器提供的各种工具,大大提高了大模型调用外部资源的便捷性。
MCP 是开源协议,鼓励所有 AI 厂商和工具将其集成到客户端中。只有用户基数足够大,协议才能持续发展并完善。
2. 回顾 Function Call
在 MCP 普及之前,AI Agent 开发若要调用外部工具,通常需要针对不同的 AI 大模型 SDK 编写特定代码。其中最为常见的方案是 OpenAI 提供的 Function Call 处理逻辑。
2.1 Function Call 基础流程
配置工具与参数
调用 Chat Completions 接口时,通过 tools 参数传入可供使用的外部工具定义。这包含了工具的作用、所需参数及其释义。
tool_choice: 设置为auto代表让大模型自动选择工具;设置为none则不调用外部工具。
import openai
import json
def main():
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": "城市名"}
},
"required": []
}
}
}]
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()


