資料庫操作

👤 user_16c0d092 📦 v1.0.1 ⭐ 4.5 ⬇️ 1.1K 下載
💻 開發程式設計 免費

📖 技能介紹


title: "database-mcp" summary: "使用 database-mcp 進行資料庫操作的專業指南" agent_created: true


database-mcp 使用指南

獲取與安裝

方式一:直接執行(推薦,無需安裝)

# 直接執行,無需安裝
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 / Claude Desktop 配置

將以下配置寫入 ~/.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

工作流程

1. 連線測試(必做)

"測試資料庫連線"

先用 connect_db 確認連線正常,再進行後續操作。

2. 探索資料庫

"列出所有表"
"檢視 users 表的結構"
"檢視 orders 表有哪些欄位"

3. 資料查詢

"查詢 users 表的前10條資料"
"統計 orders 表的總記錄數"
"檢視 product_category='電子產品' 的商品"

4. 資料操作(需確認)

寫操作(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

MySQL 示例

DB_TYPE=mysql DB_HOST=localhost DB_USER=root DB_PASSWORD=xxx DB_NAME=test npx @turingdance/database-mcp

PostgreSQL 示例

DB_TYPE=postgresql DB_HOST=localhost DB_USER=postgres DB_PASSWORD=xxx DB_NAME=test npx @turingdance/database-mcp

SQLite 示例

DB_TYPE=sqlite DB_FILE=/path/to/database.db npx @turingdance/database-mcp

SQL 編寫規範

1. 引數化查詢(防注入)

-- ✅ 推薦:使用引數
SELECT * FROM users WHERE email = ?
SELECT * FROM orders WHERE status = ? AND created_at > ?

-- ❌ 避免:字串拼接
SELECT * FROM users WHERE email = '" + email + "'

2. 只查詢需要的欄位

-- ✅ 推薦
SELECT id, name, email FROM users WHERE status = 'active'

-- ❌ 避免
SELECT * FROM users

3. 寫操作前先查詢確認

"先檢視 users 表有哪些欄位"
"再查詢一條現有資料確認格式"
"最後執行 INSERT"

常見場景

場景 1:新增資料

  1. describe_table 瞭解表結構
  2. query 看一條現有資料作為參考
  3. 最後 execute 插入資料(帶 confirm)

場景 2:批次更新

  1. 先用 query 預覽影響範圍
  2. 確認無誤後 execute 執行 UPDATE

場景 3:刪除資料

  1. 先用 query 預覽要刪除的資料
  2. 使用 WHERE 條件而非無條件的 DELETE
  3. 執行時務必 confirm: true

故障排除

問題 解決方案
連線失敗 檢查 DB_HOST、DB_PORT、使用者名稱密碼是否正確
表不存在 確認 DB_NAME 是否正確,用 list_tables 驗證
引數化失敗 檢查引數型別,確保與欄位型別匹配
寫操作被攔截 這是安全機制!確認無誤後傳入 confirm: true

安全提醒

  1. 永遠不要在不確認的情況下執行 DROP TABLETRUNCATE
  2. 永遠不要在生產環境使用 confirm: true 執行未經測試的 SQL
  3. 始終先查詢預覽,再執行寫操作
  4. 使用引數化查詢,避免 SQL 注入風險

🤖 AI 評測

這個Skill質量中規中矩,內容覆蓋面較全但深度一般。它清楚地告訴你怎麼安裝配置、怎麼連線資料庫、各種操作的風險等級。優點是安全提醒做得很到位,連什麼時候該謹慎都給你標出來了。缺點是缺少實際使用例子,只有乾巴巴的說明文字,想照著操作可能還得自己摸索。總體來說,作為入門參考夠用,但想深入用好這個工具,建議配套看看官方示例。

📊 多維度評分

適應性4.2
規範性4.2
有效性4.9
可靠性4.3
可信度4.8

📁 包含檔案 (1 個)

📄 SKILL.md 5.6 KB