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.pycache.py 说明 DeerFlow 不是每次都临时随便连一下 MCP。

session pool 关系到连接复用。

cache 关系到工具信息和 metadata 的稳定性。

如果 MCP 工具列表变化了,而缓存没更新,就可能出现 Agent 看到的工具和 server 实际工具不一致。

权限是第一优先级

MCP server 如果能写外部系统,必须谨慎。

先只读,后写入。先内部测试,后开放使用。