modelscope·@apache/doris-mcp-server
后端服务,实现了模型控制面板协议,可连接到 Apache Doris 数据库,允许用户执行 SQL 查询、管理元数据,并且有可能利用大语言模型(LLMs)完成自然语言到 SQL 的转换等任务。
Doris MCP(模型控制面板)服务器是一个使用 Python 和 FastAPI 构建的后端服务。它实现了 MCP(模型控制面板)协议,允许客户端通过定义的“工具”与其交互。它主要设计用于连接到 Apache Doris 数据库,并可能利用大型语言模型 (LLM) 来执行诸如将自然语言查询转换为 SQL (NL2SQL)、执行查询以及进行元数据管理和分析等任务。
/sse(初始化)和 /mcp/messages(通信)端点提供 (src/sse_server.py)。/mcp 端点提供,支持请求/响应和流式处理 (src/streamable_server.py)。src/stdio_server.py),需要特定的启动配置。mcp_doris_exec_query)mcp_doris_get_db_list, mcp_doris_get_db_table_list)mcp_doris_get_table_schema, mcp_doris_get_table_comment, mcp_doris_get_table_column_comments, mcp_doris_get_table_indexes)mcp_doris_get_recent_audit_logs)
注意:当前工具主要关注直接的数据库操作。src/utils/db.py)。.env 文件配置,支持数据库连接设置、LLM 提供者/模型、API 密钥、日志级别等。src/utils/schema_extractor.py)。bash
git clone https://github.com/apache/doris-mcp-server.git cd doris-mcp-server
bash pip install -r requirements.txt
将 .env.example 文件复制为 .env 并根据您的环境修改设置:
bash cp .env.example .env
关键环境变量:
DB_HOST: 数据库主机名DB_PORT: 数据库端口(默认 9030)DB_USER: 数据库用户名DB_PASSWORD: 数据库密码DB_DATABASE: 默认数据库名称SERVER_HOST: 服务器监听的主机地址(默认 0.0.0.0)SERVER_PORT: 服务器监听的端口(默认 3000)ALLOWED_ORIGINS: CORS 允许的来源(逗号分隔,* 允许所有)MCP_ALLOW_CREDENTIALS: 是否允许 CORS 凭证(默认 false)LOG_DIR: 日志文件目录(默认 ./logs)LOG_LEVEL: 日志级别(例如 INFO, DEBUG, WARNING, ERROR,默认 INFO)CONSOLE_LOGGING: 是否将日志输出到控制台(默认 false)下表列出了当前可通过 MCP 客户端调用的主要工具:
| 工具名称 | 描述 | 参数 | 状态 || :-------------------------------- | :---------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------- | :------- |
| mcp_doris_get_db_list | 获取服务器上所有数据库名称的列表。 | random_string (字符串, 必需) | ✅ 活跃 |
| mcp_doris_get_db_table_list | 获取指定数据库中所有表名称的列表。 | random_string (字符串, 必需), db_name (字符串, 可选, 默认为当前数据库) | ✅ 活跃 |
| mcp_doris_get_table_schema | 获取指定表的详细结构。 | random_string (字符串, 必需), table_name (字符串, 必需), db_name (字符串, 可选) | ✅ 活跃 |
| mcp_doris_get_table_comment | 获取指定表的注释。 | random_string (字符串, 必需), table_name (字符串, 必需), db_name (字符串, 可选) | ✅ 活跃 |
| mcp_doris_get_table_column_comments | 获取指定表中所有列的注释。 | random_string (字符串, 必需), table_name (字符串, 必需), db_name (字符串, 可选) | ✅ 活跃 |
| mcp_doris_get_table_indexes | 获取指定表的索引信息。 | random_string (字符串, 必需), table_name (字符串, 必需), db_name (字符串, 可选) | ✅ 活跃 |
| mcp_doris_exec_query | 执行 SQL 查询并返回结果命令。 | random_string (字符串, 必需), sql (字符串, 必需), db_name (字符串, 可选), max_rows (整数, 可选, 默认 100), timeout (整数, 可选, 默认 30) | ✅ 活跃 |
| mcp_doris_get_recent_audit_logs | 获取最近一段时间内的审计日志记录。 | random_string (字符串, 必需), days (整数, 可选, 默认 7), limit (整数, 可选, 默认 100) | ✅ 活跃 |
注意: 所有工具都需要一个 random_string 参数作为调用标识符,通常由 MCP 客户端自动处理。“可选”和“必需”指的是工具内部逻辑;根据客户端实现的不同,可能需要提供所有参数的值。这里列出的工具名称是基本名称;根据连接模式,客户端可能会看到它们带有前缀(例如 mcp_doris_stdio3_get_db_list)。
如果您使用 SSE 模式,请执行以下命令:
bash ./start_server.sh
此命令将启动 FastAPI 应用程序,默认同时提供 SSE 和 Streamable HTTP MCP 服务。
服务端点:
http://<host>:<port>/ssehttp://<host>:<port>/mcp/messages (POST)http://<host>:<port>/mcp (支持 GET, POST, DELETE, OPTIONS)http://<host>:<port>/healthhttp://<host>:<port>/status (确认是否在 main.py 中实现)与 Doris MCP 服务器交互需要一个 MCP 客户端。客户端连接到服务器的 SSE 或 Streamable HTTP 端点,并根据 MCP 规范发送请求(如 tool_call)来调用服务器上的工具。
主要交互流程:
客户端初始化:连接到 /sse (SSE) 或向 /mcp 发送 initialize 方法调用 (Streamable)。
(可选)发现工具:客户端可以调用 mcp/listTools 或 mcp/listOfferings 来获取支持的工具列表、其描述和参数模式。
调用工具:客户端发送 tool_call 消息/请求,指定 tool_name 和 arguments。
tool_name: mcp_doris_get_table_schema (或特定模式的名称)* arguments: 包含 random_string, table_name, db_name。处理响应:
result 或 error 的响应。tools/progress 通知,然后是包含 result 或 error 的最终响应。具体的工具名称和参数应从 src/tools/ 代码中引用或通过 MCP 发现机制获取。
你可以使用 Stdio 模式或 SSE 模式将 Cursor 连接到此 MCP 服务器。
Stdio 模式允许 Cursor 直接管理服务器进程。配置在 Cursor 的 MCP 服务器设置文件中完成(通常是 ~/.cursor/mcp.json 或类似文件)。
如果你使用 stdio 模式,请执行以下命令来下载并构建环境依赖包,但请注意你需要将项目路径更改为正确的路径地址:
bash uv --project /your/path/doris-mcp-server run doris-mcp
配置 Cursor: 在你的 Cursor MCP 配置中添加如下条目:
json { "mcpServers": { "doris-stdio": { "command": "uv", "args": ["--project", "/path/to/your/doris-mcp-server", "run", "doris-mcp"], "env": { "DB_HOST": "127.0.0.1", "DB_PORT": "9030", "DB_USER": "root", "DB_PASSWORD": "your_db_pa…
审计 npm 包依赖项以查找安全漏洞,提供详细的报告和修复建议,并集成 MCP。
通过API层将克劳德桌面版直接连接到数据库,使其能够探索数据库结构、编写SQL查询、分析数据集和创建报告。该API层还包含用于表探索和查询执行的工具。
DBCode 是一个 Visual Studio Code 扩展,允许你管理许多数据库,包括 PostgreSQL、MySQL、SQL Server、DuckDB、Redis、MongoDB 等更多数据库。 DBCode 提供了运行 MCP 服务器的选项,可以访问这些数据库、它们的模式以及执行查询的能力。
AI 首选的统一数据访问通道,支持30多种数据源(阿里云全系/主流数据库/数仓)的安全访问。
提供对Excel文件的操纵功能。此服务器启用工作簿创建、数据操纵、格式设置和高级Excel功能。
一种模型上下文协议服务器,通过提供模式内省和查询执行功能,使大型语言模型能够与GraphQL API进行交互。