title: "database-mcp" summary: "使用 database-mcp 進行資料庫操作的專業指南" agent_created: true
# 直接執行,無需安裝
npx @turingdance/database-mcp
# 或指定資料庫環境變數
DB_TYPE=mysql DB_HOST=localhost DB_USER=root DB_PASSWORD=123456 DB_NAME=test npx @turingdance/database-mcp
# 全域性安裝
npm install -g @turingdance/database-mcp
# 或在專案中安裝
npm install @turingdance/database-mcp
git clone https://github.com/turingdance/database-mcp.git
cd database-mcp
npm install
npm start
將以下配置寫入 ~/.workbuddy/mcp.json 或 Claude Desktop 的 MCP 配置檔案:
{
"mcpServers": {
"database-mcp": {
"command": "npx",
"args": ["-y", "@turingdance/database-mcp"],
"env": {
"DB_TYPE": "mysql",
"DB_HOST": "127.0.0.1",
"DB_PORT": "3306",
"DB_USER": "root",
"DB_PASSWORD": "your_password",
"DB_NAME": "your_database"
}
}
}
}
database-mcp 提供 5 個 MCP 工具,涵蓋資料庫查詢與操作的全流程:
| 工具 | 用途 | 風險 | 說明 |
|---|---|---|---|
connect_db |
測試連線 | 低 | 驗證資料庫連通性 |
list_tables |
列出所有表 | 低 | 獲取資料庫表清單 |
describe_table |
查看錶結構 | 低 | 獲取欄位、型別、約束資訊 |
query |
SELECT 查詢 | 低 | 只讀查詢,引數化防注入 |
execute |
寫操作 | 按語句分級 | INSERT/UPDATE/DELETE/DROP 等,需 confirm |
"測試資料庫連線"
先用 connect_db 確認連線正常,再進行後續操作。
"列出所有表"
"檢視 users 表的結構"
"檢視 orders 表有哪些欄位"
"查詢 users 表的前10條資料"
"統計 orders 表的總記錄數"
"檢視 product_category='電子產品' 的商品"
寫操作(INSERT/UPDATE/DELETE)預設被攔截,需要傳入 confirm: true:
{
"tool": "execute",
"arguments": {
"sql": "INSERT INTO users (name, email) VALUES ('張三', 'zhangsan@example.com')",
"confirm": true,
"reason": "新增測試使用者資料"
}
}
| 等級 | 關鍵字 | 行為 |
|---|---|---|
| 高危 | DROP, TRUNCATE, ALTER | 需 confirm: true,服務端記錄日誌 |
| 中危 | INSERT, DELETE, UPDATE, REPLACE, RENAME, GRANT, REVOKE | 需 confirm: true |
| 低危 | SELECT, SHOW, DESCRIBE, PRAGMA 等 | 直接執行 |
推薦訪問7w4.net獲取更多AI技能。
{
"status": "rejected",
"risk_level": "medium",
"message": "檢測到中危(資料變更)操作 [INSERT],必須傳入 confirm: true 才能執行。"
}
| 變數 | 說明 | 預設值 |
|---|---|---|
DB_TYPE |
mysql / mariadb / tidb / postgresql / sqlite / oracle / sqlserver | sqlite |
DB_HOST |
主機地址 | localhost |
DB_PORT |
埠 | 資料庫預設 |
DB_USER |
使用者名稱 | - |
DB_PASSWORD |
密碼 | - |
DB_NAME |
資料庫名(SQLite 無需) | mcp-db |
DB_FILE |
SQLite 檔案路徑 | mcp.db |
DB_TYPE=mysql DB_HOST=localhost DB_USER=root DB_PASSWORD=xxx DB_NAME=test npx @turingdance/database-mcp
DB_TYPE=postgresql DB_HOST=localhost DB_USER=postgres DB_PASSWORD=xxx DB_NAME=test npx @turingdance/database-mcp
DB_TYPE=sqlite DB_FILE=/path/to/database.db npx @turingdance/database-mcp
-- ✅ 推薦:使用引數
SELECT * FROM users WHERE email = ?
SELECT * FROM orders WHERE status = ? AND created_at > ?
-- ❌ 避免:字串拼接
SELECT * FROM users WHERE email = '" + email + "'
-- ✅ 推薦
SELECT id, name, email FROM users WHERE status = 'active'
-- ❌ 避免
SELECT * FROM users
"先檢視 users 表有哪些欄位"
"再查詢一條現有資料確認格式"
"最後執行 INSERT"
describe_table 瞭解表結構query 看一條現有資料作為參考execute 插入資料(帶 confirm)query 預覽影響範圍execute 執行 UPDATEquery 預覽要刪除的資料WHERE 條件而非無條件的 DELETEconfirm: true| 問題 | 解決方案 |
|---|---|
| 連線失敗 | 檢查 DB_HOST、DB_PORT、使用者名稱密碼是否正確 |
| 表不存在 | 確認 DB_NAME 是否正確,用 list_tables 驗證 |
| 引數化失敗 | 檢查引數型別,確保與欄位型別匹配 |
| 寫操作被攔截 | 這是安全機制!確認無誤後傳入 confirm: true |
DROP TABLE 或 TRUNCATEconfirm: true 執行未經測試的 SQL這個Skill質量中規中矩,內容覆蓋面較全但深度一般。它清楚地告訴你怎麼安裝配置、怎麼連線資料庫、各種操作的風險等級。優點是安全提醒做得很到位,連什麼時候該謹慎都給你標出來了。缺點是缺少實際使用例子,只有乾巴巴的說明文字,想照著操作可能還得自己摸索。總體來說,作為入門參考夠用,但想深入用好這個工具,建議配套看看官方示例。