用途
Apache Doris MCP Server 是一个 MCP Server,用于将 Apache Doris(基于 MPP 的实时数据仓库)的只读能力通过 MCP 2026-07-28 协议暴露给 MCP Hosts 与 AI 智能体。程序包版本为 1.0.0。
主要能力
- 1.0 版本以八个稳定域和五十四个(文档中并列表述为 fifty-five 个)渐进披露的子能力替代了原有的大型扁平工具面。
- 在默认的分层模式下,以空参数
{}调用某个域,可发现该域下已授权的子能力及其准确 schema;随后携带child_tool、arguments和返回的manifest_version再次调用同一域。 - 无法使用渐进披露的 Host 可在启动前设置
MCP_TOOL_EXPOSURE_MODE=flat,以无冲突的正式名称暴露同样的子能力,且不会恢复 1.0 之前的别名。 - 支持 Streamable HTTP 与 stdio 两种传输方式;master 分支的 MCP 2026-07-28 协议兼容性在 Streamable HTTP 和 stdio 上为 GA(该 GA 声明仅针对协议兼容性)。
使用方式
环境要求:Python 3.12 或更高版本;Apache Doris 2.0.0 或更高版本;访问 Doris FE MySQL 端点(通常为 9030 端口)的网络。
安装固定发行版本后,doris-mcp-server 启动服务器,doris-mcp-client 是独立的客户端,两者不可互换。
在环回地址上启动 Streamable HTTP 后:
- MCP: POST http://127.0.0.1:3000/mcp
- legacy MCP(需显式开启): POST http://127.0.0.1:3000/mcp/legacy
- liveness: GET http://127.0.0.1:3000/live
- Doris 支撑的 ready 检查: GET http://127.0.0.1:3000/ready
仅支持握手时期 Streamable HTTP 的 Host(包括使用 MCP 2025-06-18 的 Dify 1.16.1)必须设置 ENABLE_LEGACY_HTTP_ADAPTER=true 并连接 /mcp/legacy。该适配器只改变协议边界,保持相同的 1.0 工具、授权、能力门控与只读执行。
也可为本地 Host 运行 stdio。
安全边界
- 内置 1.0 目录为只读;
doris_admin为保留项且未注册。 - 支持静态令牌、JWT、外部 OAuth/OIDC 以及 Doris 支撑的 OAuth,前提是配置边界经过相互校验。
- 域发现与子能力执行使用精确的授权标识符。
- Doris RBAC 仍是可见对象与数据的最终权威。
- 在数据离开 Server 之前,会对 SQL 形态、标识符、参数、超时、行数、字节数与结果 schema 施加边界限制。
- 公开结果与日志中会脱敏密钥和后端错误。
- 非环回 HTTP 需要认证,除非启用显式的危险开发覆盖。
适用场景
适用于需要让 MCP Host 或 AI 智能体以只读方式访问 Apache Doris 数据仓库的集成与查询场景,包括支持渐进披露的 Host 以及只能使用握手时期 Streamable HTTP 的 Host。
可靠性边界与已知限制
Server 采用确定性 manifest 与错误、签名的过期游标、路由感知的能力快照、有界陈旧回退、按请求的连接路由、多 FE 故障转移、liveness/readiness 分离、输出 Schema 校验以及脱敏的链路追踪传播。不支持或配置错误的能力仍可被发现,但其 callable=false,被调用时会失败关闭。
当前限制包括:进程本地的 Doris 支撑 OAuth;显式仅用的 ADBC,默认禁用且在令牌绑定路由上失败关闭;可选的只读 Ossie grounding;可选的 MetricFlow 编译器 sidecar,其 SQL 必须通过有界 MCP 查询运行时执行;以及尽力而为的原生血缘投递。
许可
Apache License 2.0,详见 LICENSE.txt 与 NOTICE。