dm_mcp_server

dm_mcp_server

MCP server for Dameng database, providing tools to test connection, list tables, count tables, and execute SQL via environment variables.

Category
访问服务器

README

达梦数据库 MCP 服务器

Python 3.10+ License: MIT uv

达梦数据库 MCP 服务器是一个基于 Model Context Protocol 的数据库访问服务。它可以让 Codex、Claude Code 以及其他支持 MCP 的 AI 开发工具,通过标准工具接口连接达梦数据库,执行连接测试、查看当前 Schema、列出表、统计表数量以及执行 SQL。

本项目通过环境变量配置数据库连接信息。你可以把同一份服务用于不同数据库、不同 Schema 或不同 MCP 客户端,而不需要修改源码。

功能特性

  • 基于 FastMCP 实现,支持标准 MCP 客户端接入。
  • 使用环境变量配置数据库连接,避免把账号密码写进代码。
  • 支持通过 DAMENG_SCHEMA 指定当前服务使用的 Schema。
  • 提供连接测试、Schema 查询、表列表、表数量统计和 SQL 执行工具。
  • 返回结构化 JSON,便于 AI 客户端理解和继续分析。
  • 支持 Codex、Claude Code 以及其他兼容 MCP 的工具。

一、准备环境

1. 安装 Python

本项目要求 Python 3.10 或更高版本。

可以在命令行中检查本机是否已经安装 Python:

python --version

如果提示找不到 python,可以再试:

python3 --version

如果没有安装,前往 Python 官网下载安装:

https://www.python.org/downloads/

Windows 安装时建议勾选:

Add python.exe to PATH

安装完成后重新打开终端,再次执行:

python --version

确认版本号为 3.10 或更高。

2. 安装 Git

如果你要从 GitHub 克隆项目,需要先安装 Git。

检查是否已安装:

git --version

如果未安装,可以从 Git 官网下载安装:

https://git-scm.com/downloads

3. 安装 uv

推荐使用 uv 管理 Python 依赖。

安装命令:

pip install uv

安装完成后检查:

uv --version

如果你不想使用 uv,也可以使用 Python 自带的虚拟环境和 pip,下文会同时给出两种方式。

二、下载项目

使用 Git 克隆项目:

git clone https://github.com/example-org/dm-mcp-server.git
cd dm_mcp_server-2.3.9

如果你是下载 ZIP 包,解压后进入项目目录即可。

三、安装依赖

方式一:使用 uv

在项目根目录执行:

uv sync

这会根据项目配置创建虚拟环境并安装依赖。

方式二:使用 venv + pip

Linux/macOS:

python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Windows PowerShell:

python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -r requirements.txt

如果 PowerShell 提示脚本执行策略限制,可以临时允许当前会话执行脚本:

Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
.\.venv\Scripts\Activate.ps1

四、配置数据库连接

服务启动时会读取以下环境变量:

环境变量 是否必填 说明
DAMENG_HOST 达梦数据库主机地址
DAMENG_PORT 达梦数据库端口,未配置时默认 5236
DAMENG_USER 数据库用户名
DAMENG_PASSWORD 数据库密码
DAMENG_SCHEMA 建议填写 MCP 服务默认使用的 Schema

请不要把真实数据库密码提交到 Git 仓库。公开配置文件中建议使用占位符,真实密码只保存在本机环境变量、未提交的本地配置文件或密钥管理系统中。

Linux/macOS 设置示例

export DAMENG_HOST="db.example.com"
export DAMENG_PORT="5236"
export DAMENG_USER="DM_USER"
export DAMENG_PASSWORD="change_me"
export DAMENG_SCHEMA="APP_SCHEMA"

Windows PowerShell 设置示例

$env:DAMENG_HOST="db.example.com"
$env:DAMENG_PORT="5236"
$env:DAMENG_USER="DM_USER"
$env:DAMENG_PASSWORD="change_me"
$env:DAMENG_SCHEMA="APP_SCHEMA"

五、本地启动服务

使用 uv 启动

uv run dm-mcp-server

直接使用 Python 启动

如果你使用的是 venv + pip

python dm_mcp_server.py

Windows 也可以直接指定虚拟环境里的 Python:

.\.venv\Scripts\python.exe .\dm_mcp_server.py

服务通常由 MCP 客户端自动启动。手动启动主要用于排查依赖、环境变量和数据库连接问题。

六、配置 MCP 客户端

多数 MCP 客户端使用 JSON 配置,核心结构通常是 mcpServers

下面是通用配置模板。请把 /path/to/dm_mcp_server-2.3.9 替换为你本机项目目录,把数据库连接信息替换为你自己的配置。

{
  "mcpServers": {
    "dm_mcp_server": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/dm_mcp_server-2.3.9",
        "dm-mcp-server"
      ],
      "env": {
        "DAMENG_HOST": "db.example.com",
        "DAMENG_PORT": "5236",
        "DAMENG_USER": "DM_USER",
        "DAMENG_PASSWORD": "change_me",
        "DAMENG_SCHEMA": "APP_SCHEMA"
      }
    }
  }
}

Windows 路径示例:

{
  "mcpServers": {
    "dm_mcp_server": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "C:\\path\\to\\dm_mcp_server-2.3.9",
        "dm-mcp-server"
      ],
      "env": {
        "DAMENG_HOST": "db.example.com",
        "DAMENG_PORT": "5236",
        "DAMENG_USER": "DM_USER",
        "DAMENG_PASSWORD": "change_me",
        "DAMENG_SCHEMA": "APP_SCHEMA"
      }
    }
  }
}

七、Codex 配置

Codex 可以在 config.toml 中配置 MCP Server。

使用 uv 启动

[mcp_servers.dm_mcp_server]
command = "uv"
args = ["run", "--directory", "/path/to/dm_mcp_server-2.3.9", "dm-mcp-server"]
enabled = true

[mcp_servers.dm_mcp_server.env]
DAMENG_HOST = "db.example.com"
DAMENG_PORT = "5236"
DAMENG_USER = "DM_USER"
DAMENG_PASSWORD = "change_me"
DAMENG_SCHEMA = "APP_SCHEMA"

使用虚拟环境 Python 启动

Linux/macOS:

[mcp_servers.dm_mcp_server]
command = "/path/to/dm_mcp_server-2.3.9/.venv/bin/python"
args = ["/path/to/dm_mcp_server-2.3.9/dm_mcp_server.py"]
enabled = true

[mcp_servers.dm_mcp_server.env]
DAMENG_HOST = "db.example.com"
DAMENG_PORT = "5236"
DAMENG_USER = "DM_USER"
DAMENG_PASSWORD = "change_me"
DAMENG_SCHEMA = "APP_SCHEMA"

Windows:

[mcp_servers.dm_mcp_server]
command = "C:\\path\\to\\dm_mcp_server-2.3.9\\.venv\\Scripts\\python.exe"
args = ["C:\\path\\to\\dm_mcp_server-2.3.9\\dm_mcp_server.py"]
enabled = true

[mcp_servers.dm_mcp_server.env]
DAMENG_HOST = "db.example.com"
DAMENG_PORT = "5236"
DAMENG_USER = "DM_USER"
DAMENG_PASSWORD = "change_me"
DAMENG_SCHEMA = "APP_SCHEMA"

修改配置后,重启 Codex 让 MCP Server 重新加载。

八、Claude Code 配置

Claude Code 通常可以在项目根目录创建 .mcp.json

{
  "mcpServers": {
    "dm_mcp_server": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/dm_mcp_server-2.3.9", "dm-mcp-server"],
      "env": {
        "DAMENG_HOST": "db.example.com",
        "DAMENG_PORT": "5236",
        "DAMENG_USER": "DM_USER",
        "DAMENG_PASSWORD": "change_me",
        "DAMENG_SCHEMA": "APP_SCHEMA"
      }
    }
  }
}

如果你的 Claude Code 项目启用了 .claude/settings.local.json 权限控制,可以允许本服务的工具:

{
  "permissions": {
    "allow": [
      "mcp__dm_mcp_server__test_connection",
      "mcp__dm_mcp_server__get_current_schema",
      "mcp__dm_mcp_server__list_tables",
      "mcp__dm_mcp_server__count_tables",
      "mcp__dm_mcp_server__execute_sql"
    ]
  },
  "enableAllProjectMcpServers": true,
  "enabledMcpjsonServers": [
    "dm_mcp_server"
  ]
}

修改 .mcp.json 后,重启 Claude Code 或重新打开项目。

九、配置多个 Schema

如果你需要同时访问多个 Schema,建议为每个 Schema 配置一个 MCP Server。它们可以使用同一个项目目录,只需要修改 server 名称和 DAMENG_SCHEMA

{
  "mcpServers": {
    "dm_app": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/dm_mcp_server-2.3.9", "dm-mcp-server"],
      "env": {
        "DAMENG_HOST": "db.example.com",
        "DAMENG_PORT": "5236",
        "DAMENG_USER": "DM_USER",
        "DAMENG_PASSWORD": "change_me",
        "DAMENG_SCHEMA": "APP_SCHEMA"
      }
    },
    "dm_report": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/dm_mcp_server-2.3.9", "dm-mcp-server"],
      "env": {
        "DAMENG_HOST": "db.example.com",
        "DAMENG_PORT": "5236",
        "DAMENG_USER": "DM_USER",
        "DAMENG_PASSWORD": "change_me",
        "DAMENG_SCHEMA": "REPORT_SCHEMA"
      }
    }
  }
}

客户端中会出现两个独立 MCP Server,便于区分不同权限范围。

十、可用工具

工具名 说明
test_connection 测试当前数据库连接配置是否可用
get_current_schema 返回当前 MCP Server 配置的 Schema
list_tables 列出当前 Schema 下的表
count_tables 统计当前 Schema 下的表数量
execute_sql 执行 SQL,并可返回查询结果

在支持 MCP 的客户端中,你可以这样提问:

使用 dm_mcp_server 测试数据库连接。
使用 dm_mcp_server 查看当前 Schema。
使用 dm_mcp_server 列出当前 Schema 下的表。
使用 dm_mcp_server 执行 SELECT COUNT(*) FROM MY_TABLE。

十一、验证流程

首次配置完成后,建议按顺序验证:

  1. 调用 test_connection,确认数据库能连接。
  2. 调用 get_current_schema,确认 Schema 配置正确。
  3. 调用 count_tables,确认当前用户能读取 Schema 元数据。
  4. 调用 list_tables,确认能列出表。
  5. 最后再尝试 execute_sql

十二、常见问题

Python 版本不符合要求

如果执行时提示 Python 版本过低,请安装 Python 3.10 或更高版本,并确认 MCP 客户端配置中的 Python 路径指向新版本。

找不到 dmPython

确认依赖安装成功:

pip show dmPython

如果没有结果,重新安装依赖:

pip install -r requirements.txt

MCP 客户端启动失败

重点检查:

  • command 是否存在。
  • args 中的项目路径是否正确。
  • Windows 路径中的反斜杠是否正确转义,例如 C:\\path\\to\\project
  • 数据库环境变量是否都配置完整。

数据库连接失败

重点检查:

  • DAMENG_HOSTDAMENG_PORT 是否能从本机访问。
  • 数据库用户名和密码是否正确。
  • DAMENG_SCHEMA 是否存在。
  • 当前用户是否有访问目标 Schema 的权限。

安全建议

  • 不要提交真实数据库密码。
  • 对只读分析场景,建议使用只读数据库账号。
  • 在生产环境或共享环境中使用 execute_sql 前,应先确认 SQL 内容。
  • 多个业务范围或多个 Schema 建议拆成多个 MCP Server,便于控制权限。

许可证

MIT License

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选