Metadata-Version: 2.4
Name: dameng-mcp-server
Version: 2.4.0
Summary: 达梦数据库 Model Context Protocol (MCP) 服务器，支持 SQL 执行、表管理等操作
Author-email: wxt <contact@example.com>
License: MIT
Project-URL: Homepage, https://github.com/example-org/dameng-mcp-server
Project-URL: Issues, https://github.com/example-org/dameng-mcp-server/issues
Keywords: dameng,database,mcp,model-context-protocol,dmPython
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Topic :: Database
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: mcp[cli]>=1.0.0
Requires-Dist: dmPython>=2.0.0
Dynamic: license-file

# 达梦数据库 MCP 服务器

[![PyPI](https://img.shields.io/pypi/v/dameng-mcp-server.svg)](https://pypi.org/project/dameng-mcp-server/)
[![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

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

## 功能特性

- 基于 FastMCP 实现，支持标准 MCP 客户端接入
- 使用环境变量配置数据库连接，凭据不写入代码
- 支持通过 `DAMENG_SCHEMA` 指定当前 Schema
- 提供连接测试、Schema 查询、表列表、表数量统计和 SQL 执行工具
- 返回结构化 JSON，便于 AI 客户端理解和继续分析
- 内置跨 Schema 访问安全限制

## 安装

### 从 PyPI 安装（推荐）

```bash
pip install dameng-mcp-server
```

> **前置要求：** Python 3.10+，dmPython 驱动（随包自动安装）

## 配置数据库连接

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

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

### Linux/macOS

```bash
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

```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"
```

## 配置 MCP 客户端

安装后可以直接在 MCP 客户端中使用 `dameng-mcp-server` 命令。

### 通用配置（Claude Desktop / Cursor 等）

```json
{
  "mcpServers": {
    "dm_mcp_server": {
      "command": "dameng-mcp-server",
      "env": {
        "DAMENG_HOST": "db.example.com",
        "DAMENG_PORT": "5236",
        "DAMENG_USER": "DM_USER",
        "DAMENG_PASSWORD": "change_me",
        "DAMENG_SCHEMA": "APP_SCHEMA"
      }
    }
  }
}
```

### 使用 uvx 运行（无需预装）

如果不想全局安装，可以用 `uvx` 按需运行：

```json
{
  "mcpServers": {
    "dm_mcp_server": {
      "command": "uvx",
      "args": ["dameng-mcp-server"],
      "env": {
        "DAMENG_HOST": "db.example.com",
        "DAMENG_PORT": "5236",
        "DAMENG_USER": "DM_USER",
        "DAMENG_PASSWORD": "change_me",
        "DAMENG_SCHEMA": "APP_SCHEMA"
      }
    }
  }
}
```

### Codex 配置

```toml
[mcp_servers.dm_mcp_server]
command = "dameng-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"
```

### Claude Code 配置

在项目根目录创建 `.mcp.json`：

```json
{
  "mcpServers": {
    "dm_mcp_server": {
      "command": "dameng-mcp-server",
      "env": {
        "DAMENG_HOST": "db.example.com",
        "DAMENG_PORT": "5236",
        "DAMENG_USER": "DM_USER",
        "DAMENG_PASSWORD": "change_me",
        "DAMENG_SCHEMA": "APP_SCHEMA"
      }
    }
  }
}
```

如需允许工具权限，在 `.claude/settings.local.json` 中添加：

```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
}
```

## 配置多个 Schema

如需同时访问多个 Schema，为每个 Schema 配置独立的 MCP Server，只需修改名称和 `DAMENG_SCHEMA`：

```json
{
  "mcpServers": {
    "dm_app": {
      "command": "dameng-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": "dameng-mcp-server",
      "env": {
        "DAMENG_HOST": "db.example.com",
        "DAMENG_PORT": "5236",
        "DAMENG_USER": "DM_USER",
        "DAMENG_PASSWORD": "change_me",
        "DAMENG_SCHEMA": "REPORT_SCHEMA"
      }
    }
  }
}
```

## 可用工具

| 工具名 | 说明 |
| --- | --- |
| `test_connection` | 测试数据库连接是否可用 |
| `get_current_schema` | 返回当前配置的 Schema |
| `list_tables` | 列出当前 Schema 下的所有表 |
| `count_tables` | 统计当前 Schema 下的表数量 |
| `execute_sql` | 执行 SQL 语句，SELECT 返回结果集，其他返回影响行数 |

在支持 MCP 的客户端中可以这样使用：

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

## 首次验证

配置完成后，建议按顺序验证：

1. `test_connection` — 确认数据库能连接
2. `get_current_schema` — 确认 Schema 配置正确
3. `count_tables` — 确认能读取元数据
4. `list_tables` — 确认能列出表
5. `execute_sql` — 尝试执行查询

## 常见问题

### 找不到 dmPython

`dmPython` 是必需的数据库驱动。安装 `dameng-mcp-server` 时会自动安装。如果安装失败，请参考达梦官方文档获取 dmPython 驱动。

### MCP 客户端启动失败

- 确认 `dameng-mcp-server` 命令可用：`which dameng-mcp-server`
- 确认环境变量配置完整
- 如果使用 `uvx`，确认已安装 `uv`

### 数据库连接失败

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

## 安全建议

- 不要将真实数据库密码提交到版本库
- 对只读分析场景，建议使用只读数据库账号
- 在生产环境中使用 `execute_sql` 前，应确认 SQL 内容
- 多个 Schema 建议拆成多个 MCP Server，便于控制权限

## 许可证

MIT License
