MCP 协议详解:与 Function Call 的区别及实战用法
什么是 MCP?
官网提供了详细的介绍。近期,Anthropic 推出了 MCP(Model Context Protocol),即大模型上下文协议。它的核心目标是为 AI 大模型与外部工具之间的交互提供一个统一标准。这就好比 USB-C 接口统一了物理连接方式,MCP 协议试图统一大模型调用工具的逻辑。
MCP 采用 C/S 架构,支持客户端调用远程 Server 服务,也支持 stdio 流式传输模式,允许在本地启动 MCP 服务端。只需在配置文件中注册 MCP 服务端,大模型即可直接调用其提供的工具,极大提升了集成效率。

作为开源协议,MCP 鼓励各厂商和工具方进行集成。生态越丰富,协议的生命力越强。
回顾 Function Call
在 MCP 出现之前,开发 AI Agent 调用外部工具时,往往需要针对不同模型的 SDK 编写适配代码。最典型的便是 OpenAI 的 Function Call 机制。
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": ["city"]
}
}
}]
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())


