DB-GPT MCP 协议接入指南:让 Agent 通过 Model Context Protocol 连接外部工具与服务

📅 发布时间:2026/9/13 10:55:16
DB-GPT MCP 协议接入指南:让 Agent 通过 Model Context Protocol 连接外部工具与服务
DB-GPT MCP 协议接入指南让 Agent 通过 Model Context Protocol 连接外部工具与服务【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT导读Model Context ProtocolMCP是 AI 应用连接外部数据源与工具的标准开放协议。本文以 DB-GPT 的 MCP 支持为核心系统讲解 MCP 在 DB-GPT 中的整体架构、客户端与服务端两种角色、TOML 配置方法与 Web UI 操作流程、stdio 与 SSE/Streamable HTTP 传输类型并结合 mcp_utils.py、MCPToolPack、ConnectorManager 等源码揭示其底层工作原理。读完本文你将能够为 DB-GPT Agent 配置并挂载任意 MCP 服务器工具、在对话中自动触发工具调用、理解 MCP 客户端连接与工具加载的内部机制以及将 DB-GPT 自身能力以 MCP Server 形式暴露给外部应用。MCP 是什么为什么 Agent 需要它Model Context ProtocolMCP是一个开放的协议它为 AI 应用与外部数据源、工具之间提供了一套标准化的连接方式。在没有 MCP 之前每个工具都需要为 AI 应用编写一套独立的适配代码MCP 统一了“工具发现、参数描述、调用执行”的交互模型使得任何实现了 MCP 的服务都可以被任意 MCP 客户端直接使用。DB-GPT 对 MCP 提供了双重角色支持详见 官方文档作为 MCP 客户端Client消费外部 MCP 服务器暴露的工具让 DB-GPT Agent 具备调用文件系统、Web 搜索、GitHub、数据库等外部能力作为 MCP 服务器Server将 DB-GPT 自身的能力知识库查询、数据库访问 Text2SQL、Agent 执行等以 MCP 工具的形式暴露给其他 MCP 兼容的应用。这意味着 MCP 在 DB-GPT 中不是一条单向链路而是双向互联DB-GPT Agent 可以走出去用外部工具也可以迎进来让外部应用用 DB-GPT 的能力。架构总览DB-GPT 在 MCP 生态中的位置官方文档给出了 MCP 在 DB-GPT 中的整体架构见 mcp.md图中清晰地展示了两个方向下行客户端方向DB-GPT Agent 作为 MCP Client可同时挂载多个 MCP Server如文件系统、Web 搜索、自定义 API每个 Server 提供一组工具上行服务端方向外部 MCP Client 可以连接 DB-GPT 暴露的 MCP Server进而调用 DB-GPT 的知识库查询、Text2SQL、Agent 执行等能力。源码视角MCP Client 的双传输实现在 DB-GPT 的源码中MCP Client 的核心传输层实现在 mcp_utils.py由mcp_transport_client统一分发到两种底层客户端# 摘要自 packages/dbgpt-core/src/dbgpt/agent/util/mcp_utils.py _SSE_TRANSPORTS frozenset({sse}) _STREAMABLE_HTTP_TRANSPORTS frozenset({streamable_http, streamablehttp}) def _normalise_transport(transport: str | None) - str: Lowercase strip -/_ separators so all variants collapse to one key. if not transport: return sse key transport.strip().lower().replace(-, ).replace(_, ) return key从源码可以看出几个关键实现细节传输名做了归一化处理Streamable-HTTP、streamable_http、streamableHttp都会被归一化为同一个 key调用方无需纠结命名变体默认传输是sse当transport参数为空时回退到 SSEstreamable_http传输封装了官方mcp.client.streamable_http.streamablehttp_client但要求 mcp 库版本 ≥ 1.8.0见streamable_http_client中ModuleNotFoundError分支的提示MCP Streamable HTTP transport requires mcp1.8.0sse_client是自实现的 HTTPSSE 传输支持自定义请求头、TLS 校验verify参数与超时控制timeout默认 5 秒、sse_read_timeout默认 5 分钟。两种传输经过统一封装后产出相同形状的(read_stream, write_stream)流因此下游MCPToolPack的调用代码完全一致——这是接口抽象带来的好处。支持的 MCP Server 类型DB-GPT 支持以下 MCP Server 传输类型见 官方文档类型说明典型示例stdio本地进程间通信文件系统访问、代码执行SSE基于 HTTP 的 Server-Sent Events远程 API、云服务此外从源码可以看到 DB-GPT 还完整支持 MCP 2026-03-26 规范定义的Streamable HTTP传输transportstreamable_http它是 SSE 的演进形态。Web UI 连接器表单ConnectorForm.tsx中明确列出了两种传输选项及其端点格式SSEhttp://your-mcp-server/sseStreamable HTTPhttps://your-mcp-server/mcp补充说明stdio 传输是本地进程通信如npx启动的本地 MCP Server主要面向本地开发场景SSE/Streamable HTTP 则用于连接远程服务是生产环境接入外部 API 的主要方式。在 Agent 中使用 MCP 工具三步实战流程官方文档给出了从配置到使用的完整流程共三步。Step 1 — 配置 MCP ServersMCP Server 的配置有两种途径TOML 配置文件或Web UI 的 Agent 配置界面。TOML 配置示例完整示例如 官方文档[[agent.mcp_servers]] name filesystem command npx args [-y, modelcontextprotocol/server-filesystem, /path/to/directory] [[agent.mcp_servers]] name web-search command npx args [-y, modelcontextprotocol/server-brave-search] env { BRAVE_API_KEY ${env:BRAVE_API_KEY} }配置要点每个[[agent.mcp_servers]]定义一个 MCP Servername用于标识该服务器commandargs指定启动方式上例通过npx直接拉取并运行 MCP 官方 Server 包无需手动安装 npm 包env用于注入环境变量这里${env:BRAVE_API_KEY}表示引用进程环境中的BRAVE_API_KEY避免把密钥硬编码进配置文件需要连接远程 MCP Server 时可将command/args替换为远程端点地址如http://127.0.0.1:8000/sse并指定传输类型。Step 2 — 为 Agent 分配工具在 Web UI 中完成工具分配进入Apps→ 创建或编辑一个应用在 Agent 配置中勾选可用的 MCP 工具保存后该 Agent 即可在对话中调用这些工具。从源码看工具加载机制当 Agent 需要挂载 MCP 资源时后端通过MCPToolPacktool/pack.py完成工具发现与注册。其preload_resource方法执行如下关键链路# 摘要自 packages/dbgpt-core/src/dbgpt/agent/resource/tool/pack.py async with mcp_transport_client( urlserver, transportself._transport, headersserver_headers, verifyserver_ssl_verify, ) as (read, write): async with ClientSession(read, write) as session: await session.initialize() # 1. 建立 MCP 会话 result await session.list_tools() # 2. 枚举服务器所有工具 for tool in result.tools: tool_name tool.name self.tool_server_map[tool_name] server args self.switch_mcp_input_schema(tool.inputSchema) # 3. 转换参数 Schema # 4. 将每个工具注册为 Agent 可调用的命令add_command会话初始化每个 MCP Server 连接后先执行session.initialize()握手工具枚举session.list_tools()拉取服务器全部工具tool_server_map记录工具名 → 服务器的映射关系Schema 转换switch_mcp_input_schema把 MCP 的 JSON Schema 输入定义properties、required、items、anyOf、default等字段转换为 DB-GPT Agent 统一的参数格式见 tool/pack.py命令注册通过add_command将每个工具以闭包形式注册调用时再建立一次性连接并执行session.call_tool(tool_name, argumentskwargs)。Step 3 — 在对话中使用当与启用了 MCP 工具的 Agent 对话时Agent 会根据你的请求自动选择并调用合适的工具——你无需手动指定工具名称只需用自然语言表达意图如帮我搜索 XX 的最新动态读取本地某个文件Agent 会在推理过程中决定是否调用某个 MCP 工具、填充参数并执行。配置中的头部与 SSL 校验选项通过源码MCPSSEToolPack 与 MCPToolPack 的 docstring可以看到DB-GPT 还支持以下高级配置参数作用说明headers/default_headers请求头可配置Authorization: Bearer token等鉴权头按服务器分别指定或统一指定tokenSSE 鉴权令牌多个服务器可用;分隔多个 token自动组装{Authorization: Bearer your_token}ssl_verify/default_ssl_verifyTLS 校验开关默认开启no_ssl_verifyTrue可关闭不推荐生产使用ssl_ca_cert/default_ssl_cafile自定义 CA 证书指向 CA 证书文件路径多个服务器用;分隔transport传输类型sse默认或streamable_http别名streamableHttpoverwrite_same_tool同名工具处理为True时同名工具可被后注册者覆盖默认开启MCPSSEToolPack的type_alias()返回tool(mcp(sse))表明它是 SSE 传输的 MCP 工具资源类型其资源参数类_DynMCPSSEPackResourceParameters提供了mcp_servers默认http://127.0.0.1:8000/sse、token标记为privacy隐私字段、no_ssl_verify、ssl_ca_cert四个可配置项多个服务器地址统一用;分隔。常用 MCP Server 速查以下 MCP Server 均来自官方modelcontextprotocol生态见 官方文档可直接在配置中使用服务器用途包名Filesystem读写本地文件modelcontextprotocol/server-filesystemBrave SearchWeb 搜索modelcontextprotocol/server-brave-searchGitHub仓库操作modelcontextprotocol/server-githubPostgreSQL数据库查询modelcontextprotocol/server-postgresSlack收发 Slack 消息modelcontextprotocol/server-slack连接器体系Web UI 中管理 MCP 的另一条路径除了 TOML 配置DB-GPT 还内置了一套Connector连接器体系用于在 Web UI 中统一管理 MCP 连接。相关实现位于 connector 目录 和 前端连接器组件目录Catalogcatalog.py 定义了ConnectorCatalogEntry模型type、display_name、description、icon、category、mcp_server等字段mcp_server内部包含server_uri与transport默认sse。目录从catalog.json加载内置了多个 MCP 服务器模板管理器Managermanager.py 中的ConnectorManager负责实例化连接器并执行工具名加前缀策略每个 MCP 工具会被重命名为mcp__{prefix}__{original_tool_name}格式如mcp__github__create_issue、mcp__my-arxiv__search_papers。该命名刻意对齐 Claude Code 的mcp__server__tool惯例mcp__前缀让 LLM 和运维人员能一眼识别工具来源前端表单ConnectorForm.tsx 提供连接器配置界面其中server_uri对所有连接器类型都是顶层必填字段transport提供 SSE / Streamable HTTP 两种选择token、header_name等鉴权信息与连接配置分离存储。借助连接器体系你可以在 Web UI 的 Connectors 页面创建自定义 MCP 连接custom_mcp类型填写server_uri、选择传输类型、配置鉴权然后在 App/Agent 的配置中选择启用哪些 MCP 工具——这与 TOML 配置是殊途同归的两种方式。DB-GPT 作为 MCP Server对外暴露自身能力DB-GPT 不仅消费 MCP 工具还可以把自身能力包装为 MCP Server供其他 MCP 兼容应用调用。官方文档列出的可暴露能力包括知识库查询让外部应用检索 DB-GPT 中已建立的 RAG 知识库数据库访问Text2SQL让外部应用通过自然语言查询数据库Agent 执行让外部应用触发 DB-GPT Agent 完成复杂任务。结合整体架构图上行链路外部 MCP Client → DB-GPT MCP Server → DB-GPT CapabilitiesDB-GPT 相当于在 Agent 能力之上又叠加了一层开放网关。这使得 DB-GPT 既能作为 AI 应用的中枢大脑也能作为能力供给方嵌入到更大的 MCP 生态中——例如其他聊天工具、IDE、自动化平台都可以通过 MCP 协议直接调用 DB-GPT 的检索与 Text2SQL 能力。常见问题与最佳实践传输类型如何选本地开发、希望零网络依赖时用 stdionpx启动连接远程 MCP Server 时用 SSE 或 Streamable HTTP其中 Streamable HTTP 是 MCP 新版规范推荐形态但需要 mcp 库 ≥ 1.8.0。密钥如何管理TOML 配置中用${env:VAR_NAME}引用环境变量避免把 API Key 写死在配置文件中Web UI 中鉴权字段会按隐私字段存储如token带privacy标签。HTTPS 自签名证书怎么办使用ssl_ca_cert指定 CA 证书仅在可信内网环境才考虑no_ssl_verifyTrue生产环境不推荐关闭校验。同名工具冲突怎么办连接器体系会自动按mcp__{server}__{tool}重命名避免歧义overwrite_same_tool参数控制同名工具的覆盖行为。MCP Server 连不上可检查 SSE/Streamable HTTP 端点的netloc与scheme是否与连接地址一致——sse_client在收到endpoint事件时会做同源校验不一致会直接报错见 mcp_utils.py。延伸阅读主题路径Agent 基础概念docs/docs/getting-started/concepts/agentsAgent 工具开发docs/docs/agents/introduction/toolsdbgpts 社区工具docs/docs/getting-started/tools/dbgptsMCP 客户端传输层源码packages/dbgpt-core/src/dbgpt/agent/util/mcp_utils.pyMCP 工具包实现packages/dbgpt-core/src/dbgpt/agent/resource/tool/pack.pyMCP 连接器管理packages/dbgpt-core/src/dbgpt/agent/resource/connector/manager.pyMCP 连接器目录模型packages/dbgpt-core/src/dbgpt/agent/resource/connector/catalog.py连接器测试用例packages/dbgpt-core/src/dbgpt/agent/resource/connector/tests/test_manager.py前端连接器表单web/new-components/connector/ConnectorForm.tsx【免费下载链接】DB-GPTopen-source agentic AI data assistant for the next generation of AI Data products.项目地址: https://gitcode.com/GitHub_Trending/db/DB-GPT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考