ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

MCP 模型上下文协议是什么?ai-agents-from-zero 详解其与 Function Calling 的差异及本地 Server 实战

MCP 模型上下文协议是什么?ai-agents-from-zero 详解其与 Function Calling 的差异及本地 Server 实战 MCP 模型上下文协议是什么ai-agents-from-zero 详解其与 Function Calling 的差异及本地 Server 实战【免费下载链接】ai-agents-from-zero 2026 最系统的 AI Agent 速成指南智能体实战教程 · 完整学习路径 实战项目 面试题库 · 对标大模型应用开发工程师岗位 · 覆盖LangChain / LangGraph / Coze / Dify / MCP / skills / LLM / RAG / 提示词 · 企业级部署与微调 · 从0到企业级落地 从学习到上线项目 面试准备一体化项目地址: https://gitcode.com/gh_mirrors/ai/ai-agents-from-zero在ai-agents-from-zero一套系统的 AI Agent 智能体实战教程中MCP 模型上下文协议是打通大模型与外部世界的关键一环。本文结合教程中的真实案例用最小代码带你讲清楚三件事MCP 到底解决什么问题、它和 Function Calling 的差异在哪里、以及如何用 FastMCP 在本地搭一个可被 Agent 调用的 MCP Server ️一、为什么需要 MCP一把钥匙开一把锁的困境先想一个场景AI 助手回答现在是几点、北京今天多少度这类问题时如果没有接入任何外部能力它只能给出我的知识有截止日期这类回答无法获取实时信息。图意模型本身会说但不知道当下接入工具后才能拿到实时数据。这就是 Function Calling 和 MCP 共同要解决的问题背景。但真实项目里的痛点不止于此每个 AI 应用都要重复接一遍外部系统同样的数据库、文件系统、内部 API换一套应用就要重写一套连接器每个框架各有自己的接法服务怎么发现、参数 schema 怎么描述、鉴权怎么传、结果怎么返回全是重复劳动工具难以复用成生态能力工具写得再好也只能服务某一个应用。传统接入方式就像每把锁都需要不同的钥匙而 MCP 的思路就是给所有 AI 应用提供一个统一的插口标准——一次暴露多处复用。二、MCP 模型上下文协议是什么给 AI 应用装上统一插口2.1 一句话定义MCPModel Context Protocol模型上下文协议是一套开放的标准协议规范 AI 应用 / Agent / IDE 如何与外部工具、资源和上下文提供方交互。打个比方MCP 就像AI 世界的 USB-C——设备MCP Server按统一接口暴露能力宿主应用MCP Host即插即用2.2 MCP Server 能暴露的三类能力类型作用谁来控制Tools工具可执行动作查天气、查数据库、发请求模型可自动触发Resources资源可读取内容文件、配置、schema宿主应用决定如何使用Prompts提示词可复用的提示词模板 / 工作流模板用户显式选择更常见注意工具只是 MCP 的一部分不是全部——这也是很多人把 MCP 简单理解成工具协议的原因。2.3 Host / Client / Server 三角色MCP 采用经典的主机 - 客户端 - 服务器架构MCP Host主机你正在用的应用如 IDE、Claude Desktop、自研 Agent 平台MCP Client客户端Host 内部负责与某台 Server 建立协议连接的组件与 Server 一一对应MCP Server服务器真正暴露 Tools / Resources / Prompts 的服务背后可以接本地文件、数据库、网络 API。一个 Host 可以同时挂多个 Client连多台 Server且每台 Server 可以用不同的传输方式。三、MCP 和 Function Calling 到底有什么差异3.1 先回顾 Function Calling 的工作方式Function Calling工具调用的核心分工只有一条模型负责决策程序负责执行。完整闭环是用户提问 → 程序把问题 工具定义name / description / 参数 schema发给模型 → 模型返回结构化的tool_calls我想调 get_weather参数是 Beijing→ 程序真正执行工具 → 结果以ToolMessage回填 → 模型生成最终回答。3.2 两者不在同一层一个管决策一个管接入对比维度Function Calling / Tool CallingMCP抽象层级模型与当前应用之间的单次调用机制跨应用、跨框架的标准化接入协议核心问题模型如何表达我要调这个工具外部能力如何被统一发现、描述、连接与复用工具来源当前应用代码内定义换个应用要重写独立 MCP Server 暴露一次开发多端复用进程与传输通常同进程内函数调用无传输概念有标准传输stdio本地子进程/ Streamable HTTP独立服务配套对象bind_tools、tool_calls、ToolMessageFastMCP、mcp.json、MultiServerMCPClient一句话定位解决能不能调用解决怎么统一接入关系而不是替代MCP 工具被客户端取回后模型依然是靠 Function Calling 机制来决定什么时候调、传什么参数。可以这样记MCP 是工具的供应链Function Calling 是模型的下单动作。再往前一步决定要不要调、调几次、按什么顺序调的则是 Agent见教程 21-Agent智能体.md。顺带和另外两个常见概念区分开RAG解决怎么拿到知识Agent解决谁来规划决策而MCP解决怎么统一接入。四、本地 MCP Server 实战从天气服务到 Agent 调用教程在 案例与源码-2-LangChain框架/11-mcp/ 目录下提供了完整的可运行案例本实战部分对应以下文件文件作用McpServerWeatherByFastMCP.py天气查询 MCP 服务独立进程运行mcp.json客户端连接配置声明要连哪些服务、怎么连McpClientAgent.pyLangChain Agent 读取配置并实际调用 MCP 工具McpServerByFastMCP.py标准写法参考Tool / Resource / Prompt 三类能力合一4.1 第一步用 FastMCP 写一个天气 MCP ServerFastMCP是 MCP 官方 Python 生态里快速编写 Server 的高层封装——就像 HTTP 是协议、FastAPI 是帮你实现 HTTP 服务的框架MCP 是规则FastMCP 是工具。核心代码只有几行from mcp.server.fastmcp import FastMCP mcp FastMCP(WeatherServerSSE) mcp.tool() def get_weather(city: str) - str: 查询指定城市的即时天气信息。city 为城市英文名如 Beijing。 # 调用天气 API 并返回 JSON 结果详见源码 ... mcp.run(transportsse, host127.0.0.1, port8000)可以看到把一个普通 Python 函数变成可被任意 MCP Host 发现的工具只需要加一个mcp.tool()装饰器——工具名、描述、参数 schema 都会自动生成模型正是靠这些信息决定何时调用、怎么传参。4.2 第二步用 mcp.json 声明连接方式mcp.json不是协议本身而是客户端侧的连接配置约定仓库里的示例同时展示了两种传输方式{ mcpServers: { weather: { url: http://127.0.0.1:8000/sse, transport: sse }, fetch: { command: uvx, args: [mcp-server-fetch], transport: stdio } } }weather独立 HTTP 服务进程通过地址连接对应 4.1 的天气服务fetchstdio方式由客户端直接用命令拉起本地子进程。两种传输怎么选看部署形态stdio本地、轻量、开发调试首选由宿主如 IDE拉起子进程接管标准输入输出SSE / Streamable HTTP服务独立部署、跨进程跨机器访问当前官方规范的主线是stdio Streamable HTTP仓库案例保留sse写法属于历史兼容阅读时留意即可。4.3 第三步把 MCP 工具交给 LangChain AgentMcpClientAgent.py 走的是最贴近真实项目的完整链路读取mcp.json用MultiServerMCPClient连接各服务调用get_tools()取回 MCP 工具此时已完成发现把工具交给create_tool_calling_agentAgentExecutor用户提问 →Agent 决策 → Function Calling 发起调用 → MCP Server 执行 → 结果回填 → 模型生成回答。跑通后你输入北京今天天气怎么样Agent 就会自动调用 MCP 里的get_weather工具并基于真实数据作答——MCP 负责把工具接进来Function Calling 负责被调用Agent 负责决定何时调用三者各管一段。4.4 落地安全小提醒 只安装审计过的 MCP ServerServer 往往能高权限访问本机文件、内网 API 或密钥来源必须可信最小权限 网络收口本地服务尽量只监听127.0.0.1不要把调试用 Server 暴露到公网写操作要有人确认删除、支付、批量修改类工具不要让模型静默执行敏感数据分级处理日志和配置不要原样暴露给模型侧。五、延伸学习路径完整章节推导20-MCP模型上下文协议.md含极简教学版McpServer.py、McpClient.py与协议细节前置知识——工具调用机制17-Tools工具调用.md后置进阶——让 Agent 自主决策调用21-Agent智能体.md建议的动手顺序先跑通FastMCP 天气服务 mcp.json Agent 客户端这条主线再回看 Function Calling 章节你会更清楚地看清本地 Tool、MCP Tool、Agent 决策层三者在工程上的分工 ⚡【免费下载链接】ai-agents-from-zero 2026 最系统的 AI Agent 速成指南智能体实战教程 · 完整学习路径 实战项目 面试题库 · 对标大模型应用开发工程师岗位 · 覆盖LangChain / LangGraph / Coze / Dify / MCP / skills / LLM / RAG / 提示词 · 企业级部署与微调 · 从0到企业级落地 从学习到上线项目 面试准备一体化项目地址: https://gitcode.com/gh_mirrors/ai/ai-agents-from-zero创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表