Technical Guide
18. MCP 原理:把外部工具接进 Agent
理解 MCP 在 DeerFlow 中的作用:把外部服务包装成 Agent 可发现、可调用、可缓存、可授权的工具。
MCP 解决的是外部工具接入
内置工具不可能覆盖所有场景。
你可能想接:
内部知识库
数据库查询
浏览器自动化
云服务 API
企业系统
MCP 的价值是把这些能力用统一协议接进 Agent。
MCP 和普通 Tool 的关系
普通 Tool 往往是项目内写好的函数。
MCP Tool 可能来自外部 server。
DeerFlow 需要做几件事:
连接 MCP server
发现可用工具
转换成 Agent 可调用工具
处理认证和 session
缓存工具信息
DeerFlow 的 MCP 目录
源码位置:
backend/packages/harness/deerflow/mcp/
能看到:
client.py
session_pool.py
oauth.py
cache.py
tools.py
这些文件基本覆盖了 MCP 接入的关键问题。
为什么先接只读服务
MCP 很强,也很危险。
如果一开始就接有写权限的系统,Agent 选错工具时可能产生副作用。
第一版建议只接只读服务,例如查询、搜索、读取文档。
这一篇你要记住
MCP 不是“更多工具”。
它是让外部系统进入 Agent 执行链路的一种方式。接入前必须想清楚权限、认证、缓存和失败处理。
MCP 接入后的新问题
接 MCP 后,Agent 能力会变强,但系统复杂度也会上升。
你需要额外处理:
server 是否在线
session 是否复用
工具列表是否缓存
认证是否过期
工具返回是否可信
所以 MCP 不是“配置一行就结束”。
为什么有 session_pool 和 cache
session_pool.py 和 cache.py 说明 DeerFlow 不是每次都临时随便连一下 MCP。
session pool 关系到连接复用。
cache 关系到工具信息和 metadata 的稳定性。
如果 MCP 工具列表变化了,而缓存没更新,就可能出现 Agent 看到的工具和 server 实际工具不一致。
权限是第一优先级
MCP server 如果能写外部系统,必须谨慎。
先只读,后写入。先内部测试,后开放使用。