🚀 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