/ 目錄 / 演練場 / SQLite
● 官方 modelcontextprotocol ⚡ 即開即用

SQLite

作者 modelcontextprotocol · modelcontextprotocol/servers

查詢本地 SQLite 檔案。適合個人專案、匯出的資料傾印或日誌/記錄/資料庫檔案分析。

SQLite MCP 參考實作。指向一個 SQLite 檔案,提供結構描述檢查、讀取查詢和寫入查詢(可配置)。零設定、無伺服器、無網路——不像 Postgres MCP,若你允許的話它也能寫入。

為什麼要用

核心特性

即時演示

實際使用效果

sqlite.replay ▶ 就緒
0/0

安裝

選擇你的客戶端

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/data/sample.db"
      ]
    }
  }
}

開啟 Claude Desktop → Settings → Developer → Edit Config。儲存後重啟應用。

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/data/sample.db"
      ]
    }
  }
}

Cursor 使用與 Claude Desktop 相同的 mcpServers 格式。專案級設定優先於全域。

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/data/sample.db"
      ]
    }
  }
}

點擊 Cline 側欄中的 MCP Servers 圖示,然後選 "Edit Configuration"。

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/data/sample.db"
      ]
    }
  }
}

格式與 Claude Desktop 相同。重啟 Windsurf 生效。

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "sqlite",
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/data/sample.db"
      ]
    }
  ]
}

Continue 使用伺服器物件陣列,而非映射。

~/.config/zed/settings.json
{
  "context_servers": {
    "sqlite": {
      "command": {
        "path": "uvx",
        "args": [
          "mcp-server-sqlite",
          "--db-path",
          "/data/sample.db"
        ]
      }
    }
  }
}

加入 context_servers。Zed 儲存後熱重載。

claude mcp add sqlite -- uvx mcp-server-sqlite --db-path /data/sample.db

一行命令搞定。用 claude mcp list 驗證,claude mcp remove 移除。

使用場景

實戰用法: SQLite

透過載入 SQLite 來分析 CSV/JSON 傾印

👤 分析師、探索匯出資料的工程師 ⏱ ~15 min beginner

何時使用: 有人寄給你一份有 200k 列的 CSV,問「哪個區段轉換率最高?」——對試算表來說太大,對真實資料庫來說太小。

前置條件
  • 磁碟上的來源檔案 — 儲存為工作資料夾下的 .csv 或 .json
  • 空白 SQLite 檔案路徑 — 選擇如 /tmp/analysis.db 的位置;MCP 會建立它
步驟
  1. 建立表格和載入
    在 /tmp/analysis.db 建立表格 signups,與 /data/signups.csv 的欄位相符。載入所有列。告訴我列數。✓ 已複製
    → 表格已建立,列數與檔案相符
  2. 探索結構描述
    有哪些欄位?每個欄位的值分佈為何(分類的前 5 個不同值;數值的最小/最大/平均)?✓ 已複製
    → 每欄位的概況
  3. 回答實際問題
    按 signup_source 分組。針對每組計算:總註冊數、轉換率(completed_onboarding=true 的註冊 / 總數)。按轉換率排序。✓ 已複製
    → 決策級表格,附 SQL 顯示

結果: 5 分鐘內得到可辯護的答案,帶著可重複查詢的 .db 檔案,以應對新問題。

注意事項
  • CSV 欄位自動類型化錯誤(數字作為 TEXT) — 載入後執行 PRAGMA table_info(signups),必要時用 CAST 或以明確類型重建欄位
  • 日期字串作為 TEXT 時排序/比較不正確 — 將日期儲存為 ISO 8601 (YYYY-MM-DDTHH:MM:SSZ),使字典序等於時間序;或使用 julianday() 做數學
搭配使用: filesystem · antv-chart

檢查和編輯個人應用的 SQLite 資料庫

👤 開發 CLI 工具、日誌應用或本地優先軟體的開發者 ⏱ ~10 min beginner

何時使用: 你在構建本地優先應用,想看資料庫裡有什麼,但不想為它寫 CLI。

步驟
  1. 調查結構描述
    列出 /Users/me/Library/Application Support/MyApp/data.db 的每個表格。針對每個,顯示結構描述和列數。✓ 已複製
    → 活動應用資料庫的清單
  2. 調查一列
    尋找 email = '[email protected]' 的使用者記錄。顯示該列和其他表格中任何相關列(訂單、工作階段)。✓ 已複製
    → 一個使用者資料的完整圖景
  3. 修復壞資料
    該使用者有一個從 2 天前起停滯於「待處理」狀態的訂單。將其更新為「已取消」。執行前顯示 SQL。✓ 已複製
    → 變異前的 SQL 預覽,然後列已更新

結果: 無須編寫一次性 SQL 指令就能進行應用除錯。

注意事項
  • 應用可能在 WAL 模式中鎖定 DB 開啟 — 若出現「資料庫已鎖定」,停止應用或透過 ?mode=ro&immutable=1 查詢 WAL 合併的唯讀快照
搭配使用: filesystem

從生產資料樣本構建決定性測試夾具

👤 撰寫整合測試的工程師 ⏱ ~25 min intermediate

何時使用: 你想要可重複的測試資料,類似生產但較小且安全。

步驟
  1. 樣本匿名列
    從 /prod-export/orders.db 對 orders 進行樣本,涵蓋每個狀態 100 列。匿名化名稱和電郵。✓ 已複製
    → 含匿名化 PII 的樣本
  2. 儲存為夾具檔案
    將樣本列寫入 /test/fixtures/orders.db 作為新的 SQLite 檔案。包括結構描述。✓ 已複製
    → 已建立新夾具檔案
  3. 對照測試載入器驗證
    執行我的測試套件 (npm test)——它是否拾取新夾具?若否,第一個失敗的測試是什麼?✓ 已複製
    → 測試執行;失敗已指出

結果: 真實夾具,不偏離真實資料形狀。

注意事項
  • 破壞參照完整性的匿名化 — 跨表格一致地匿名化 join 鍵(相同雜湊);絕不按列隨機化
搭配使用: filesystem · github

分析 SQLite 支援的日誌/事件檔案

👤 除錯記錄至 SQLite 的 CLI 工具或應用的工程師 ⏱ ~10 min beginner

何時使用: 許多現代工具(homebrew、某些瀏覽器、應用快取)在 SQLite 中儲存狀態。你想查詢它們。

步驟
  1. 確認是正確的檔案
    開啟 ~/Library/Application Support/SomeApp/cache.db。列出表格和最近列的樣本。✓ 已複製
    → 可識別的結構描述確認你有正確的檔案
  2. 尋找答案
    快取每個來源網域持有多少項?前 20 個。✓ 已複製
    → 彙總結果
  3. 可選清理
    刪除 90 天未訪問的網域的項。先顯示計數,刪除前詢問。✓ 已複製
    → 預覽、確認,然後刪除

結果: 關於應用行為的答案,無須內建「統計」指令。

注意事項
  • 在應用執行時修改其活動 DB 可能導致損壞 — 始終先關閉應用,或在 .db 檔案的複本上工作
搭配使用: filesystem

組合

與其他 MCP 搭配,撬動十倍槓桿

sqlite + filesystem

從磁碟讀取 CSV 並載入 SQLite 進行分析

使用 filesystem MCP 讀取 /data/orders.csv,推斷類型,並透過 sqlite MCP 將其載入 /tmp/analysis.db 作為表格 orders✓ 已複製
sqlite + antv-chart

查詢 SQLite DB 並繪製結果圖表

從 /tmp/analysis.db 取得 2026 年的月度註冊。透過 antv-chart 呈現為長條圖。✓ 已複製
sqlite + github

分析資料,將發現寫入 GitHub Issue

在 /tmp/users.db 執行我的流失分析。在 acme/analytics 中建立 GitHub Issue,摘要前 3 項發現附 SQL 附錄。✓ 已複製

工具

此 MCP 暴露的能力

工具輸入參數何時呼叫成本
list_tables none 任何工作階段的第一步 免費
describe_table table_name: str 檢查單個表格的結構描述 免費
read_query query: str (僅 SELECT) 執行 SELECT——預設安全 免費
write_query query: str (INSERT/UPDATE/DELETE) 變異資料——受控;在大多數客戶端中需要明確同意 免費
create_table query: str (CREATE TABLE ...) DDL——建立或修改結構描述 免費
append_insight insight: str 將發現新增至工作階段備忘錄(某些客戶端使用此功能以構建報告) 免費

成本與限制

運行它的成本

API 配額
無限制——本地
每次呼叫 Token 數
結構描述查詢:小。結果集隨列數縮放——探索性查詢時始終使用 LIMIT
費用
免費
提示
在每個探索性查詢新增 LIMIT 100,只在知道會取回什麼時移除。

安全

權限、密鑰、影響範圍

憑證儲存: 無認證。DB 檔案是你透過 --db-path 啟動時的任何路徑。
資料出站: 來自伺服器的無。查詢結果作為內容傳送至你的 LLM 提供者。
切勿授予: 絕不指向存放敏感資料的檔案,除非你打算讓模型看到

故障排查

常見錯誤與修復

database is locked

另一個程序(通常是擁有 DB 的應用)持有鎖。關閉該程序或複製 .db 檔案並查詢副本。

驗證: lsof <db file>
no such table: X

DB 檔案錯誤或結構描述不如你所想。執行 list_tables 看看實際有什麼。檢查你的 MCP 客戶端設定中的啟動引數 --db-path

datatype mismatch / unexpected NULL

SQLite 是動態類型化的——宣告為 INTEGER 的欄位可持有 TEXT。防禦性地使用 CAST(col AS INTEGER),或在載入時修復。

Disk image is malformed

DB 已損壞,通常因在寫入期間終止程序。嘗試 sqlite3 file.db .recover > out.sql 並從傾印重建。

替代方案

SQLite 對比其他方案

替代方案何時用它替代權衡
Postgres MCP多使用者並行存取、網路化 DB 或你已在使用 Postgres需要伺服器;Postgres MCP 依設計為唯讀
DuckDB (via shell)相同的單檔案模型但適合 OLAP 型分析,掃描速度更快尚無第一方 MCP;因為是列式型,效能特性不同
dbHub你需要一個 MCP 來支援 SQLite + Postgres + MySQL + 其他較新;測試程度較低

更多

資源

📖 閱讀 GitHub 上的官方 README

🐙 查看未解決的 issue

🔍 瀏覽全部 400+ MCP 伺服器和 Skills