🚀 MCP DM8 服务器
这是一个用 TypeScript 编写的达梦 DM8 Model Context Protocol (MCP) 服务,它提供了表结构浏览和只读查询的能力,并且支持代理连接。
🚀 快速开始
方式一:直接使用 npx(无需安装)
npx mcp-dm8-server --host 127.0.0.1 --port 5236 --username SYSDBA --password 密码 --schema SYSDBA
方式二:全局安装后使用
npm install -g mcp-dm8-server
mcp-dm8 --host 127.0.0.1 --port 5236 --username SYSDBA --password 密码 --schema SYSDBA
方式三:代理连接使用
npx mcp-dm8-server \
--host your_dm_host \
--username SYSDBA \
--password 密码 \
--schema SYSDBA \
--proxy-enabled \
--proxy-host proxy.company.com \
--proxy-port 8080 \
--proxy-type http
✨ 主要特性
- 提供表结构浏览和只读查询能力。
- 支持代理连接。
- 具备 SQL 注入防护、连接池管理、只读查询强制、输入验证和超时控制、结构化日志记录等安全特性。
📦 安装指南
全局安装
npm install -g mcp-dm8-server
💻 使用示例
基础用法
npx mcp-dm8-server --host 127.0.0.1 --port 5236 --username SYSDBA --password 密码 --schema SYSDBA
高级用法
代理连接使用
npx mcp-dm8-server \
--host your_dm_host \
--username SYSDBA \
--password 密码 \
--schema SYSDBA \
--proxy-enabled \
--proxy-host proxy.company.com \
--proxy-port 8080 \
--proxy-type http
📚 详细文档
⚙️ MCP 客户端配置
Claude Desktop 配置(最常用)
配置文件位置:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
基础配置(无代理)
{
"mcpServers": {
"dm8": {
"command": "npx",
"args": [
"-y",
"mcp-dm8-server",
"--host", "127.0.0.1",
"--port", "5236",
"--username", "SYSDBA",
"--password", "your_password",
"--schema", "SYSDBA"
]
}
}
}
代理配置(企业环境)
{
"mcpServers": {
"dm8": {
"command": "npx",
"args": [
"-y",
"mcp-dm8-server",
"--host", "your_dm_host",
"--username", "SYSDBA",
"--password", "your_password",
"--schema", "SYSDBA",
"--proxy-enabled",
"--proxy-host", "proxy.company.com",
"--proxy-port", "8080",
"--proxy-type", "http"
]
}
}
}
环境变量配置(更安全)
{
"mcpServers": {
"dm8": {
"command": "npx",
"args": ["-y", "mcp-dm8-server"],
"env": {
"DM_USERNAME": "SYSDBA",
"DM_PASSWORD": "your_password",
"DM_HOST": "your_dm_host",
"DM_PORT": "5236",
"DM_SCHEMA": "SYSDBA",
"DM_DB_PROXY_ENABLED": "true",
"DM_DB_PROXY_HOST": "proxy.company.com",
"DM_DB_PROXY_PORT": "8080",
"DM_DB_PROXY_TYPE": "http",
"NODE_OPTIONS": "--openssl-legacy-provider"
}
}
}
}
其他 MCP 客户端配置
Cline (VSCode Extension)
在 VSCode Settings → Cline → MCP Settings 中配置:
{
"mcpServers": {
"dm8": {
"command": "npx",
"args": [
"-y",
"mcp-dm8-server",
"--host", "127.0.0.1",
"--port", "5236",
"--username", "SYSDBA",
"--password", "your_password",
"--schema", "SYSDBA"
]
}
}
}
mcp-router 配置
在 ~/.mcp-router/config.json 中配置:
{
"servers": {
"dm8": {
"command": "npx",
"args": [
"-y",
"mcp-dm8-server",
"--host", "127.0.0.1",
"--port", "5236",
"--username", "SYSDBA",
"--password", "your_password",
"--schema", "SYSDBA"
],
"env": {
"NODE_OPTIONS": "--openssl-legacy-provider"
}
}
}
}
🌐 代理支持详情
支持的代理类型
- HTTP:标准 HTTP 代理
- HTTPS:HTTPS 代理
- SOCKS4:SOCKS4 代理
- SOCKS5:SOCKS5 代理
配置参数
| CLI 参数 |
环境变量 |
说明 |
默认值 |
--proxy-enabled |
DM_DB_PROXY_ENABLED |
启用代理 |
false |
--proxy-host |
DM_DB_PROXY_HOST |
代理主机 |
无 |
--proxy-port |
DM_DB_PROXY_PORT |
代理端口 |
无 |
--proxy-type |
DM_DB_PROXY_TYPE |
代理类型 |
http |
环境变量配置示例
export DM_DB_PROXY_ENABLED="true"
export DM_DB_PROXY_HOST="proxy.company.com"
export DM_DB_PROXY_PORT="8080"
export DM_DB_PROXY_TYPE="http"
npx mcp-dm8-server --username SYSDBA --password 密码 --host your_dm_host --schema SYSDBA
🛠️ 可用工具
| 工具名 |
描述 |
参数 |
list_tables |
列出指定 Schema 的所有表 |
schema (可选) |
describe_table |
显示表结构信息 |
schema (可选), table (必填) |
execute_query |
执行只读 SQL 查询 |
schema (可选), query (必填) |
⚠️ 安全限制:只允许执行 SELECT/SHOW/DESCRIBE/EXPLAIN 语句
📋 命令行参数
| 参数 |
环境变量 |
必填 |
默认值 |
说明 |
--host |
DM_HOST |
✅ |
无 |
数据库主机地址 |
--port |
DM_PORT |
❌ |
5236 |
数据库端口 |
--username |
DM_USERNAME |
✅ |
无 |
数据库用户名 |
--password |
DM_PASSWORD |
✅ |
无 |
数据库密码 |
--schema |
DM_SCHEMA |
✅ |
无 |
默认数据库模式 |
--proxy-enabled |
DM_DB_PROXY_ENABLED |
❌ |
false |
启用代理连接 |
--proxy-host |
DM_DB_PROXY_HOST |
❌ |
无 |
代理服务器地址 |
--proxy-port |
DM_DB_PROXY_PORT |
❌ |
无 |
代理服务器端口 |
--proxy-type |
DM_DB_PROXY_TYPE |
❌ |
http |
代理类型 |
🔧 开发与本地构建
git clone https://github.com/lianekai/mcp-dm8-server.git
cd mcp-dm8-server
npm install
npm run dev
npm run build
npm test
node dist/index.js --host 127.0.0.1 --port 5236 --username SYSDBA --password 密码 --schema SYSDBA
📌 注意事项
Node.js 版本要求
- Node.js 16.x:直接使用
- Node.js 18.x+:需要添加
--openssl-legacy-provider 参数
NODE_OPTIONS=--openssl-legacy-provider npx mcp-dm8-server --host 127.0.0.1 --username SYSDBA --password 密码 --schema SYSDBA
安全最佳实践
- 密码安全:建议使用环境变量存储敏感信息。
- 网络安全:在企业环境中使用代理连接。
- 权限控制:使用只读数据库用户。
- 审计日志:启用数据库审计功能。
❓ 常见问题
Q:Node.js 18+ 启动失败?
A:使用 NODE_OPTIONS=--openssl-legacy-provider 参数。
Q:代理连接失败?
A:
- 检查代理服务器状态。
- 验证代理地址和端口。
- 确认网络连接通畅。
Q:如何在 Claude Desktop 中使用?
A:将配置添加到 claude_desktop_config.json 文件中。
Q:支持哪些数据库操作?
A:仅支持只读操作:SELECT、SHOW、DESCRIBE、EXPLAIN。
📄 许可证
ISC License
维护状态:生产就绪,活跃维护
npm 包:mcp-dm8-server
GitHub:lianekai/mcp-dm8-server