Apache Doris
官方基於MPP架構的即時數據倉儲Apache Doris的MCP伺服器。
你可以用 Apache Doris MCP 做什麼?
- 查詢與診斷 Doris — 透過
doris_query領域詢問查詢執行、計畫、Profile 分析或慢查詢診斷。 - 探索目錄與結構 — 透過
doris_catalog子工具發現資料庫、資料表,以及包含大小詳細資訊的資料表上下文。 - 監控叢集健康狀態 — 使用
doris_cluster領域檢查節點、任務、指標、記憶體、快取與壓縮狀態。 - 管理資料管線 — 透過
doris_pipeline工具檢查資料攝取狀態、具體化檢視、新鮮度與相依性。 - 搜尋與分析資料 — 透過
doris_search領域執行文字、向量或混合搜尋,並檢查索引。 - 治理與稽核 — 使用
doris_governance功能檢視資料品質、儲存、血緣、稽核日誌與 UDF。
文件
Apache Doris MCP Server
Apache Doris MCP Server 透過 MCP 2026-07-28 向 MCP Host 與 AI 代理程式公開 Apache Doris 的唯讀能力。1.0 版以八個穩定的領域與五十五個逐步揭露的子能力取代了大型扁平工具介面,同時明確保留執行時期可用性、授權、輸入 Schema、輸出 Schema 與失敗行為。
發行狀態
套件版本為 1.0.0。在 master 上的 MCP 2026-07-28 協定相容性在 Streamable HTTP 與 stdio 上已達**正式發行(GA)**狀態。此 GA 聲明僅限於協定相容性;Python 套件分類器仍為 Beta,且文件中記載的部署限制仍然適用。
升級前,請閱讀 1.0 版本說明、1.0 遷移指南 與產生的 8 領域/55 子能力登錄。詳細的發行記錄請見 Issue #189。
架構總覽
MCP Host
-> stdio or Streamable HTTP
-> transport security and authentication
-> MCP protocol validation and authorization
-> stable domain discovery
-> route-aware Doris capability detection
-> exact child dispatch and read-only runtime
-> request-specific Doris route and RBAC
-> bounded, schema-validated result
預設的 hierarchical 模式會公開以下領域:
| 領域 | 子能力數 | 職責 |
|---|---|---|
doris_catalog | 5 | 目錄、資料庫、資料表、資料表內容、大小 |
doris_query | 7 | 查詢、Explain、Profile、診斷、慢查詢、明確 ADBC |
doris_cluster | 11 | 節點、任務、指標、記憶體、快取、Compaction、工作負載 |
doris_pipeline | 5 | 資料攝取、物化視圖、新鮮度、相依性 |
doris_search | 4 | 文字/向量/混合搜尋、分析器、索引、診斷 |
doris_governance | 8 | 品質、儲存、血緣、稽核、UDF、驗證對應 |
doris_lakehouse | 3 | 外部目錄、Lakehouse 資料表、Variant |
doris_semantic | 12 | 選用的 Apache Ossie 接地與 MetricFlow 消費 |
使用 {} 呼叫領域以探索其授權的子能力與精確 Schema。再次使用 child_tool、arguments 與回傳的 manifest_version 呼叫相同領域。無法使用漸進式揭露的 Host 可在啟動前設定 MCP_TOOL_EXPOSURE_MODE=flat;這會以無衝突的正式名稱公開相同的 55 個子能力,且不會還原 1.0 之前的別名。
快速開始
需求:
- Python 3.12 或更新版本;
- Apache Doris 2.0.0 或更新版本;
- 可存取 Doris FE MySQL 端點(通常為連接埠
9030)的網路連線。
安裝固定版本:
pip install doris-mcp-server==1.0.0
doris-mcp-server 會啟動 Server。doris-mcp-client 是獨立的用戶端;這兩個指令不可互換。
設定 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
在 Loopback 上啟動 Streamable HTTP:
doris-mcp-server \
--transport http \
--host 127.0.0.1 \
--port 3000
端點:
- MCP:
POST http://127.0.0.1:3000/mcp - 舊版 MCP(選擇加入):
POST http://127.0.0.1:3000/mcp/legacy - 存活探測:
GET http://127.0.0.1:3000/live - 以 Doris 為後端的就緒探測:
GET http://127.0.0.1:3000/ready
僅限於 handshake 時期 Streamable HTTP 的 Host(包括使用 MCP 2025-06-18 的 Dify 1.16.1)必須設定 ENABLE_LEGACY_HTTP_ADAPTER=true 並連線至 /mcp/legacy。此介面卡僅變更協定邊界;它保留相同的 1.0 工具、授權、能力閘門與唯讀執行。
或為本機 Host 執行 stdio:
doris-mcp-server --transport stdio
安全邊界
- 內建的 1.0 目錄為唯讀;
doris_admin已保留且未註冊。 - 在相互驗證的設定邊界下支援靜態 Token、JWT、外部 OAuth/OIDC 與以 Doris 為後端的 OAuth。
- 領域探索與子能力執行使用精確的授權識別碼。
- Doris RBAC 仍是可見物件與資料的最終權威。
- SQL 形狀、識別碼、參數、逾時、列數、位元組數與結果 Schema 在資料離開 Server 前都會受到限制。
- 機密與後端錯誤會從公開結果與日誌中移除。
- 非 Loopback HTTP 需要驗證,除非啟用了明確的危險開發覆寫。
請閱讀 安全與權限模型 與 Doris 細粒度存取指南。
可靠性邊界
Server 使用確定性的清單與錯誤、簽署的過期游標、路由感知的能力快照、受限的過期備援、請求特定的連線路由、多 FE 容錯移轉、存活/就緒分離、輸出 Schema 驗證與清理過的追蹤傳播。不支援或設定錯誤的能力仍可透過 callable=false 探索,且在呼叫時會以關閉狀態失敗。
目前的限制包括程序本機的 Doris 後端 OAuth、預設停用且在 Token 綁定路由上以關閉狀態失敗的僅限明確 ADBC、選用的唯讀 Ossie 接地、選用的 MetricFlow 編譯器 Sidecar(其 SQL 必須透過受限的 MCP 查詢執行時期執行),以及盡力而為的原生血緣傳遞。請參閱 可靠性與限制。
文件
根目錄的 README 刻意作為入口點。雙語文件系統索引位於:
主要指南:
- 架構
- 請求與資料流程
- 工具領域
- 能力可用性
- Doris 版本能力矩陣
- MetricFlow 整合
- MCP 2026-07-28 合約
- 安全模型
- 部署
- 可靠性與限制
- 疑難排解
- 設定參考
- Host 整合
- 自訂工具提供者
- 貢獻
開發
git clone https://github.com/apache/doris-mcp-server.git
cd doris-mcp-server
uv sync --group dev
uv run pytest
產生的產物必須保持同步:
uv run python generate_tool_catalog.py --check
uv lock --check
請參閱 貢獻與驗證。
授權
Apache License 2.0。請參閱 LICENSE.txt 與 NOTICE。