跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonAI

MCP 协议详解:与 Function Call 的区别及使用方式

MCP(Model Context Protocol)是大模型上下文协议,旨在统一 AI 大模型与外部工具之间的交互标准,类似于 AI 领域的 USB-C 接口。相比传统的 Function Call 需要针对不同模型 SDK 编写适配代码,MCP 提供了统一的 C/S 架构和流式传输模式,支持本地或远程服务调用。文章通过 Python SDK 示例展示了 Function Call 的配置与调用流程,包括工具参数传递及上下文维护,并指出 MCP 协议通过开源整合扩大了工具的可用面,简化了 AI Agent 的开发与维护。

萤火微光发布于 2026/2/6更新于 2026/10/2496 浏览
MCP 协议详解:与 Function Call 的区别及使用方式

1. 什么是 MCP?

官网:https://modelcontextprotocol.io/introduction

2025 年,Anthropic 提出了 MCP 协议。MCP 全称为 Model Context Protocol,翻译过来是大模型上下文协议。这个协议的主要为 AI 大模型和外部工具(比如让 AI 去查询信息,或者让 AI 操作本地文件)之间的交互提供了一个统一的处理协议。我们常用的 USB Type-C 接口统一了 USB 接口的样式,MCP 协议就好比 AI 大模型中的 USB-C,统一了大模型与工具的对接方式。

MCP 协议采用了 C/S 架构,也就是服务端、客户端架构,能支持在客户端设备上调用远程 Server 提供的服务,同时也支持 stdio 流式传输模式,也就是在客户端本地启动 mcp 服务端。只需要在配置文件中新增 MCP 服务端,就能用上这个 MCP 服务器提供的各种工具,大大提高了大模型使用外部工具的便捷性。

MCP 是开源协议,能让所有 AI 厂商、AI 工具都将 MCP 集成到自己的客户端中,从而扩大 MCP 的可用面。毕竟只有用的人越多,协议才能不断发展,不断变得更好。

2. 了解 Function Call

在 MCP 没有出来之前,我们的 AI Agent 开发如果想调用外部工具需要针对不同的 AI 大模型 SDK 编写不同的代码,其中最为常用的是 OpenAI 提供的 Function Call 的处理逻辑。

2.1. Function Call Demo
2.1.1. 配置工具,AI 提供参数

当我们调用 OpenAI Chat Completions 接口时,可以通过 tools 参数传入可供使用的外部工具。这个工具的调用中就包含了工具的作用,工具需要传入的参数,以及参数的释义。其中 tool_choice 字段设置为 auto 代表让大模型自动选择 tools,设置为 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": "城市名"}
                },
                : []
            }
        }
    }]
    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()
"required"
"city"
"Qwen/Qwen2.5-32B-Instruct"
"role"
"system"
"content"
"你是一个天气查询助手"
"role"
"user"
"content"
"帮我查询上海的天气"
"auto"
print
"content:"
0
print
"tools:"
0
print
"message:"
0
if
"__main__"

运行程序,发出请求后,大模型就会根据用户提出的问题和提供的 tools,来为这个 tools 编写需要提供的参数。此时 content 会是空,不会输出内容,tool_calls 中会包含调用的工具和参数。

❯ uv run main.py
content: 
tools: [ChatCompletionMessageToolCall(id='...', function=Function(arguments='{"city": "上海"}', name='get_weather'), type='function')]
message: {'content': '', 'role': 'assistant', 'tool_calls': [...]}

对应如下 json 格式响应,包含了我们的参数。

2.1.2. 调用工具并让 AI 二次处理

随后,我们就可以根据这个大模型返回的参数来调用我们的函数,并得到函数的返回结果,再次与大模型进行对话。此时需要按下面的方式维护对话上下文,首先需要将第一次请求 AI 返回的结果插入到上下文中("role": "assistant"的 json 字符串),然后再插入工具调用的数据,格式如下:

{
  "role": "tool",
  "name": "get_weather",
  "content": "上海天气晴朗,气温 25 度"
}

最后将完整的消息列表发送给大模型,大模型会根据工具返回的内容生成最终的回复给用户。通过这种方式,实现了 AI 对本地或远程工具的调用闭环。MCP 协议在此基础上进一步标准化了这种工具调用的连接方式,使得不同模型可以复用同一套工具定义,而无需为每个模型单独适配 Function Call 的逻辑。

目录

  1. 1\. 什么是 MCP?
  2. 2\. 了解 Function Call
  3. 2.1\. Function Call Demo
  4. 2.1.1\. 配置工具,AI 提供参数
  5. 2.1.2\. 调用工具并让 AI 二次处理

更多推荐文章

查看全部
  • AI 双重突破:FARS 全自动科研系统与 AIGC 电影《团圆令》技术解析
  • Mac 本地离线 AI 绘画实战:Mochi Diffusion 部署指南
  • 2026 年高校 AIGC 检测政策汇总与应对指南
  • AI Agent 新范式:基于 FastGPT 与 MCP 协议构建工具增强型智能体
  • 动态网站爬虫实战:SpiderFlow 可视化编排与自定义函数
  • Java 注解详解:原理、分类与 Spring Boot 应用
  • 动手学大模型应用开发:从零入门 LLM 开发实战
  • 前端面试核心知识点整理(含 JavaScript、Vue、React 等)
  • Trae 集成 Figma MCP 实现前端代码自动生成
  • Java 开发者转型 AI 大模型应用开发指南
  • 腾讯云部署 OpenClaw 对接飞书实战指南
  • Sim2Real Gap 详解:机器人从仿真到现实的关键技术路径
  • YOLOv8n 机器人场景目标检测环境搭建与数据集处理
  • 基于 Whisper-large-v3 的多语言翻译系统开发
  • CVPR 2025 论文总结:黑暗中的重构与去噪新视角与通用架构
  • 基于Flink CDC的Neo4j实时图数据库同步实战
  • 开源 AI 联网搜索工具 OpenWebSearch MCP 支持多引擎与流式响应
  • SuperMerger 插件:Stable Diffusion 模型融合使用指南
  • JS关闭当前网页
  • 颠覆级里程碑:Whisper Large-V3-Turbo重构语音交互技术范式

相关免费在线工具

  • RSA密钥对生成器

    生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online

  • Mermaid 预览与可视化编辑

    基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online

  • 随机西班牙地址生成器

    随机生成西班牙地址(支持马德里、加泰罗尼亚、安达卢西亚、瓦伦西亚筛选),支持数量快捷选择、显示全部与下载。 在线工具,随机西班牙地址生成器在线工具,online

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online