快速开始

August 5, 2026 · View on GitHub

English | 简体中文

这份指南用于启动本地 Apache Doris MCP Server 1.0.0、验证健康状态,并理解 Hierarchical Discovery 的调用形态。示例只使用回环地址与占位凭据。

1. 前置条件

  • Python 3.12 或更高版本。
  • Apache Doris 2.0.0 或更高版本;后续版本特性由运行时动态过滤。
  • 可以访问 FE MySQL 端口,通常为 9030
  • 如需 Profile 与部分运维能力,可以访问 FE HTTP 端口,通常为 8030
  • 如需 BE 级监控,需要显式配置允许访问的 BE HTTP 地址。

确认 Python:

python3 --version

2. 安装

从 PyPI 安装:

python3 -m venv .venv
source .venv/bin/activate
pip install doris-mcp-server==1.0.0

从源码安装:

git clone https://github.com/apache/doris-mcp-server.git
cd doris-mcp-server
uv sync --group dev

安装包提供两个程序:

  • doris-mcp-server:启动 MCP Server。
  • doris-mcp-client:连接已经运行的 Server。

两者不能互相替代。

3. 配置 Doris 路由

export DORIS_HOST=127.0.0.1
export DORIS_PORT=9030
export DORIS_USER=mcp_reader
export DORIS_PASSWORD='replace-me'
export DORIS_DATABASE=information_schema

多 FE 路由示例:

export DORIS_HOSTS='fe-1.example:9030,fe-2.example:9030'
export DORIS_FE_HTTP_HOSTS='fe-1.example:8030,fe-2.example:8030'

生产环境应使用独立的最小权限 Doris 账号。不要提交密码、Bearer Token、 Client Secret、JWT Key 或 .env 文件。

4. 启动 Streamable HTTP

doris-mcp-server \
  --transport http \
  --host 127.0.0.1 \
  --port 3000

现代 MCP 端点:

POST http://127.0.0.1:3000/mcp

对于已经验证的 Handshake-era Host,例如使用 MCP 2025-06-18 的 Dify 1.16.1,请设置 ENABLE_LEGACY_HTTP_ADAPTER=true 后重启,并把 Host URL 配置为 http://127.0.0.1:3000/mcp/legacy。不能把旧协议流量发送到 /mcp

健康端点:

curl --fail http://127.0.0.1:3000/live
curl --fail http://127.0.0.1:3000/ready

/live 只验证进程与协议服务;/ready 还会执行有界的 Doris 路由检查。 进程存活但未就绪时,应先诊断 Doris 连接,而不是直接重启。

HTTP 默认绑定回环地址。非回环地址至少需要启用一种鉴权模式,除非操作人员显式 打开危险的开发环境开关 ALLOW_UNAUTHENTICATED_NON_LOOPBACK=true

5. 启动 stdio

当 Host 以子进程方式启动 Server 时:

doris-mcp-server --transport stdio

stdio 模式不能把普通应用输出写入 stdout。MCP Frame 使用 stdout;诊断日志应写入 stderr 或配置的日志文件。

6. 发现并调用 Child

默认 hierarchical 模式下,tools/list 返回 8 个领域 Tool。用下列参数调用 doris_catalog 进行发现:

{}

返回结果包含当前身份有权发现的 Child、精确 Schema、Availability 与 manifest_version。后续仍调用同一个一级 Tool:

{
  "child_tool": "list_tables",
  "arguments": {
    "database": "information_schema"
  },
  "manifest_version": "<发现阶段返回的值>"
}

如果 Server 返回 CHILD_MANIFEST_STALE,应再次用 {} 发现该领域并使用新 Manifest。若 Child 的 callable=false,应读取结构化 reason_code,不能只靠 Description 猜测可用性。

不支持渐进披露的 Host 可以设置:

export MCP_TOOL_EXPOSURE_MODE=flat

随后重启 Server 并让 Host 重新连接。Flat 模式使用 doris_catalog_list_tables 等正式名称公开同样的 55 个 Child。

7. 验证安装

doris-mcp-server --version
python -c "import doris_mcp_server; print(doris_mcp_server.__version__)"

源码仓库中还可以运行:

uv run pytest test/test_release_artifacts.py test/test_product_identity.py
uv run python generate_tool_catalog.py --check

下一步