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

MCP 协议详解:与 Function Call 的区别及 Python 实战

综述由AI生成MCP(Model Context Protocol)是大模型与外部工具交互的统一协议,类似 AI 领域的 USB-C。相比传统的 Function Call,MCP 提供了更标准化的客户端 - 服务端架构,支持远程调用和本地流式传输,降低了集成成本。文章通过对比分析两者差异,并结合 Python SDK 演示了如何配置工具、传递参数以及处理多轮对话上下文,帮助开发者快速理解并落地 MCP 协议在 Agent 开发中的应用。

追风少年发布于 2026/2/26更新于 2026/6/616 浏览
MCP 协议详解:与 Function Call 的区别及 Python 实战

什么是 MCP?

Model Context Protocol(MCP)由 Anthropic 提出,旨在为大模型与外部工具之间的交互提供统一标准。就像 USB-C 统一了物理接口一样,MCP 试图统一 AI 模型与各类工具的对接方式。它采用 C/S 架构,既支持客户端调用远程 Server 服务,也支持 stdio 流式传输模式,允许在本地启动 MCP 服务端。只需在配置文件中注册 MCP 服务端,即可让大模型便捷地使用各种外部能力。

MCP 是开源协议,鼓励所有 AI 厂商和工具将其集成到客户端中。生态越丰富,协议的生命力就越强。

回顾 Function Call

在 MCP 普及之前,AI Agent 开发若要调用外部工具,往往需要针对不同的模型 SDK 编写适配代码。其中 OpenAI 的 Function Call 是最常见的实现逻辑。

配置工具与参数生成

调用 Chat Completions 接口时,可通过 tools 参数传入外部工具定义。这包括工具的功能描述、所需参数及其释义。tool_choice 字段控制模型行为:设为 auto 允许自动选择工具,设为 none 则禁止调用。

以下是一个简单的 Python 示例,展示了如何定义天气查询工具并发送给模型:

import openai
import json

def main():
    client = openai.OpenAI(
        api_key="YOUR_API_KEY",
        base_url="https://api.example.com/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="Qwen/Qwen2.5-32B-Instruct",
        messages=[
            {"role": "system", "content": "你是一个天气查询助手"},
            {"role": "user", "content": "帮我查询上海的天气"}
        ],
        tools=tools,
        tool_choice="auto"
    )

    print("content:", res.choices[0].message.content)
    print("tools:", res.choices[0].message.tool_calls)

请求发出后,若模型决定调用工具,content 通常为空,而 tool_calls 会包含函数名及参数。例如返回结果可能如下:

{
  "role": "assistant",
  "content": "",
  "tool_calls": [
    {
      "id": "call_123",
      "type": "function",
      "function": {
        "name": "get_weather",
        "arguments": "{\"city\": \"上海\"}"
      }
    }
  ]
}
调用工具并维护上下文

拿到参数后,我们需要执行实际函数并获取结果,然后将其作为新消息加入对话历史,让模型基于结果进行二次回复。这一步的关键是维护正确的角色(role)顺序。

首先插入模型的第一次回复(role: assistant),接着插入工具调用的结果(role: tool)。格式大致如下:

{
  "role": "tool",
  "tool_call_id": "call_123",
  "content": "上海今天的天气晴朗,气温 25 度。"
}

将这条消息追加到 messages 列表中再次发送,模型就能结合工具返回的数据给出最终回答。这种机制确保了 AI 不仅能'想'出要做什么,还能真正'做'出来并理解结果。

总结

MCP 本质上是对工具调用能力的标准化封装。相比于原生 Function Call 往往绑定特定 SDK,MCP 更强调协议层面的互通性,使得不同来源的工具可以被同一个客户端统一管理。对于开发者而言,理解这一区别有助于在构建复杂 Agent 系统时选择合适的集成方案。

目录

  1. 什么是 MCP?
  2. 回顾 Function Call
  3. 配置工具与参数生成
  4. 调用工具并维护上下文
  5. 总结
  • 💰 8折买阿里云服务器限时8折了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 🤖 一键搭建Deepseek满血版了解详情
  • 一键打造专属AI 智能体了解详情
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • 基于 Spring Cloud 的电商系统设计与实现:用户与商品模块
  • 网络安全工程师岗位需求分析:市场前景与技能方向
  • IDEA AI 编程插件实测对比:Copilot、灵码与 TRAE
  • Linux System V 共享内存:原理、实操与避坑指南
  • 企业电子招投标采购系统功能简介
  • Gossip 协议解读
  • C/C++ 错误信息捕获与处理实战指南
  • llama-cpp-python 安装配置与性能优化指南
  • AI 产品经理的 5 点核心认知与实践指南
  • 网络安全核心基础知识详解
  • 第五届长城杯 2025 Web 初赛 Writeup
  • 五大生成模型全方位对比
  • 混沌工程开源平台解析与测试实践指南
  • 大型语言模型微调入门指南
  • Python 工厂模式封装 Webhook 群聊机器人
  • Python 全流程图文安装与配置指南
  • 50 道前端核心面试题:HTML/CSS/JS/Vue/React/TS/工程化/网络/跨端
  • 使用 cpolar 实现 Open-Lovable 远程访问与网页克隆
  • Android MVVM 架构实战:深入理解 LiveData 生命周期与数据观察
  • Python 爬虫入门指南:基础原理与实战

相关免费在线工具

  • 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