拓冰建站拓冰建站
首页 / 资讯中心 / 正文

MCP 协议实操指南:三步打通智能体与外部工具的高效通信

MCP 协议实操指南三步打通智能体与外部工具的高效通信【免费下载链接】agnoBuild, run, and manage agent platforms.项目地址: https://gitcode.com/GitHub_Trending/ag/agno如果你的智能体一接上外部数据源就开始超时、排队、工具列表乱成一锅粥八成是通信层没理顺。agno 框架里的 MCP 协议Model Context Protocol解决的就是这件事它让智能体用一套标准接口去连接各种外部工具服务器你不用为每个数据源单独写适配代码。说白了MCP 协议相当于智能体和外部世界之间的标准快递面单 物流调度——面单格式统一走哪条物流线路由你来选。 先搞清楚MCPTools 在中间干了什么面单的事讲完了接下来看这张面单到底是谁在填。agno 把 MCP 客户端封装成了 MCPTools 源码 里的一个 Toolkit 类它主要干三件事建连connect()负责拉起会话本地进程或远程连接都是在这里完成握手翻译把 MCP 服务器暴露的工具列表翻译成智能体能直接调用的 Function工具名可以加前缀避免撞名回收close()关闭连接内部还有弱引用兜底清理进程退出时不会留下僵尸会话。一条工具调用的完整链路是这样的智能体发出调用MCPTools 把它路由到对应服务器的会话服务器执行后结果原路返回。全程你只面对一个对象这就是统一接口的实际含义。另外它的name会按 url 或 command 自动生成同一注册表里挂多个 MCP 工具包时也能互相区分不会串台。⚡ 三种传输方式怎么选机制理清了动手前最纠结的就是选哪条传输线路——说白了就是选物流方式。agno 支持三种选择逻辑其实不复杂传输方式怎么连适用场景备注stdiocommand起本地子进程本地开发、npx 临时服务器不给 url 时的默认值streamable-httpurl直连生产环境、远程部署给了 url 时的默认值官方推荐sseurl直连兼容旧版服务器已弃用代码里会打 warning几个容易踩的点提前说一下只传url不传transport框架默认走 streamable-http别画蛇添足写transportstdio会被强制改掉并给警告timeout_seconds默认只有 10 秒接慢速服务器比如要查库的建议显式调到 30服务器工具很多时用include_tools/exclude_tools做白名单能显著减少塞给模型的工具描述体积也降低模型选错工具的概率。 最小闭环三步跑通一次工具调用理论讲完直接上最小可运行路径。以本地文件系统服务器为例完整代码见 本地服务器示例mcp_tools MCPTools( commandnpx -y modelcontextprotocol/server-filesystem ./, timeout_seconds30, ) await mcp_tools.connect() agent Agent(tools[mcp_tools]) # ……模型配置省略 await agent.aprint_response(列出当前目录的文件) await mcp_tools.close()换成远程服务器只是换一种参数写法参考 streamable-http 示例mcp_tools MCPTools( transportstreamable-http, urlhttp://localhost:8000/mcp, refresh_connectionTrue, # 每次 run 刷新连接 ) await mcp_tools.connect()refresh_connectionTrue值得多说一句它让每次 agent run 都重建连接和工具列表适合服务器端工具会动态变化的场景代价是每次 run 多一次握手开销。工具基本不变的话关掉它更划算。 进阶多服务器连接与会话管理接下来是生产里最常见的问题一个智能体要同时接好几个 MCP 服务器。agno 的做法很直接——一个服务器一个 MCPTools 实例全部塞给 Agent写法见 多服务器示例airbnb MCPTools(commandnpx -y openbnb/mcp-server-airbnb, timeout_seconds30) search MCPTools(commandnpx -y modelcontextprotocol/server-brave-search, env{BRAVE_API_KEY: BRAVE_KEY}) # ……其余配置省略 await airbnb.connect() await search.connect() agent Agent(tools[airbnb, search])注意部分服务器挂了也能跑不是某个开关而是靠结构保证的每个实例独立建连、独立关连一个服务器出问题只影响它自己那组工具。再往上有两个进阶玩法tool_name_prefix两个服务器都有search工具时会撞名加前缀区分开header_providerHTTP 场景下按 run 动态生成认证头框架按 run_id 缓存会话并设 5 分钟 TTL 自动清理多用户并发时互不串号。⚠️ 常见踩坑与取舍最后收几个配置层面的坑都是实际跑起来才会暴露的依赖要装齐MCPTools 会显式检查没装mcp包时直接抛 ImportErrorpip install mcp即可stdio 的command会被整体拆分解析带参数的写法npx -y xxx直接整串传给command别自己手动拆 args用完记得close()长期运行的服务里不调关闭接口连接会一直占着sse还能用但已弃用新服务器一律选 streamable-http老服务器排期迁移。取舍上记住一条主线stdio 图省事但绑定本地进程HTTP 图隔离但多一层网络——本地原型用 stdio上生产用 streamable-http。下一步可以试试给上面的多服务器示例配上exclude_tools观察工具列表缩小后模型响应速度的变化。延伸学习MCP cookbook 总目录动态认证头示例工具白名单过滤示例【免费下载链接】agnoBuild, run, and manage agent platforms.项目地址: https://gitcode.com/GitHub_Trending/ag/agno创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门