Skip to main content

达梦数据库 MCP 服务器 - 基于 FastMCP 的安全数据库查询工具

Project description

达梦数据库 MCP 服务器 (DM-MCP)

一个基于 FastMCP 的达梦数据库 Model Context Protocol 服务器,提供安全的数据库查询和表结构获取功能。

功能特性

  • 🔒 安全查询: 仅支持 SELECT 语句,防止数据修改操作
  • 📊 表结构查询: 获取数据库表结构信息
  • 🔧 环境变量配置: 通过环境变量动态配置数据库连接
  • 🚀 MCP 协议: 基于 Model Context Protocol 标准

安装

从 PyPI 安装(推荐)

pip install dm-mcp

从源码安装

git clone https://github.com/yourusername/dm-mcp.git
cd dm-mcp
pip install -e .

环境变量配置

设置以下环境变量来配置数据库连接:

# 数据库服务器地址
export DM_SERVER=localhost

# 数据库端口 (默认: 5236)
export DM_PORT=5236

# 数据库用户名
export DM_USER=SYSDBA

# 数据库密码
export DM_PASSWORD=your_password

# 数据库 Schema (可选,默认使用用户名)
export DM_SCHEMA=PRODUCTION

MCP 客户端配置

Claude Desktop 配置

在 Claude Desktop 的配置文件中添加以下配置:

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "dm-mcp": {
      "command": "dm-mcp",
      "env": {
        "DM_SERVER": "localhost",
        "DM_PORT": "5236",
        "DM_USER": "SYSDBA",
        "DM_PASSWORD": "your_password",
        "DM_SCHEMA": "PRODUCTION"
      }
    }
  }
}

其他 MCP 客户端

对于其他支持 MCP 的客户端,请参考相应的配置文件格式。

运行服务器

直接运行

# 使用环境变量运行
dm-mcp

# 或者直接设置环境变量运行
DM_SERVER=localhost DM_PORT=5236 DM_USER=SYSDBA DM_PASSWORD=your_password DM_SCHEMA=PRODUCTION dm-mcp

开发模式

# 从源码运行
python -m dm_mcp

可用工具

1. query_db(sql: str)

执行 SQL 查询语句。

参数:

  • sql: SELECT 查询语句

示例:

SELECT * FROM users WHERE status = 'active' LIMIT 10;

返回: 查询结果的格式化字符串,包含列名和数据行。

2. get_table_structure(table_name: str)

获取指定表的结构信息。

参数:

  • table_name: 表名(不区分大小写)

返回: 表的列信息,包括列名、数据类型和长度。

项目结构

dm-mcp/
├── dm_mcp/
│   ├── __init__.py      # MCP 服务器核心代码
│   └── __main__.py      # 程序入口
├── pyproject.toml       # 项目配置
├── mcp-config.json      # MCP 客户端配置示例
├── requirements.txt     # Python 依赖
├── README.md           # 项目文档
└── LICENSE            # Apache 许可证

开发说明

代码结构

  • __init__.py: 包含 MCP 服务器初始化、数据库连接函数和工具定义
  • __main__.py: 程序入口,启动 MCP 服务器

安全考虑

  • 仅允许 SELECT 查询,防止数据修改
  • 通过环境变量配置敏感信息
  • 连接失败时返回错误信息而不是抛出异常

发布

构建发布包

# 安装构建工具
pip install build

# 构建发布包
python -m build

上传到 PyPI

# 安装上传工具
pip install twine

# 上传到 PyPI
twine upload dist/*

许可证

本项目采用 Apache License 2.0 许可证 - 查看 LICENSE 文件了解详情。

贡献

欢迎提交 Issue 和 Pull Request 来改进这个项目!

联系方式

如有问题或建议,请通过 GitHub Issues 联系我们。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dm_mcp-1.0.0.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dm_mcp-1.0.0-py3-none-any.whl (13.6 kB view details)

Uploaded Python 3

File details

Details for the file dm_mcp-1.0.0.tar.gz.

File metadata

  • Download URL: dm_mcp-1.0.0.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for dm_mcp-1.0.0.tar.gz
Algorithm Hash digest
SHA256 df451594cf90b9f932bcdf85c23993416cefcf6df3fa86b9de8d14453be17127
MD5 dcc866183e9e9f8da24f6b76a2d69810
BLAKE2b-256 3f60ed8174cc4f430d03ea812d83542449dee3c20cd33e511f11d42564f7b399

See more details on using hashes here.

File details

Details for the file dm_mcp-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: dm_mcp-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 13.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.10

File hashes

Hashes for dm_mcp-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bc04efdc7efa56cf5ad1500cd3432ccf19ea821915627762501690ad6c5b2d8b
MD5 73b9514efebad46600f7eaf0637a166b
BLAKE2b-256 c5c75c0f0cf6f288a06fde922c249099a28da90bf9f14af8e50d986e4c2b9b3e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page