如何通过 MCP 协议让 Claude 直接读写我的本地 SQLite 数据库

技术宅的日常 高级 2026/5/13 406 浏览 15 点赞 约 2 分钟

Claude Code 刚出的时候我就在试,但真正让它产生“生产力”的是配上 MCP(Model Context Protocol)。以前让 AI 改数据库,得手动导出 Schema 丢给它,它写完 SQL 我再复制回来运行,链路太长。现在用 MCP 协议,Claude 能直接通过 Tool Call 读写本地 SQLite 文件。

如何通过 MCP 协议让 Claude 直接读写我的本地 SQLite 数据库

我目前用的方案是 modelcontextprotocol/server-sqlite,配置过程其实很简单,但有个细节最关键:路径必须是绝对路径。

配置步骤

如果你用的是 Claude Desktop,直接在 claude_desktop_config.json 里加入这个配置:

{
  "mcpServers": {
    "sqlite": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-sqlite",
        "--db",
        "/Users/yourname/projects/my_app/local.db"
      ]
    }
  }
}

重启 Claude 后,你会发现对话框右下角出现了一个小锤子图标。这时候你直接下指令:“查一下用户表里最近注册的 5 个人”,它会先调用 list_tables 确认表名,再调用 execute_query 执行 SQL,最后把结果直接呈现在对话框里。

实战中的效率提升点

最爽的场景是快速数据清洗。比如我有个本地库里有几千条格式混乱的地址数据,以前得写 Python 脚本跑一遍,现在直接对 Claude 说:

分析 users 表的 address 字段,把所有包含“街道”但没有门牌号的记录找出来,并帮我更新为‘地址缺失’。

它会自动执行 SELECT → 分析结果 → 执行 UPDATE。整个过程不需要我写一行 SQL,而且它能实时看到执行结果,如果报错了它会自己修正 SQL 语句重新跑。

踩过的坑

1. 权限锁死: SQLite 在写入时会产生 -journal-wal 文件。如果在某些同步盘(如 iCloud/OneDrive)目录下,可能会因为文件锁导致 Claude 报错 database is locked。建议把 .db 文件放在纯本地路径。

2. 索引缺失的性能崩盘: 当数据库超过 100MB 时,如果让 Claude 做复杂 Join 查询且没索引,会导致响应极慢甚至超时。建议先手动给常用字段建索引,或者在 Prompt 里明确告诉它:优先通过索引字段查询,不要全表扫描

3. 破坏性操作: 它是真的能执行 DROP TABLE。为了安全,我习惯给它一个只读的副本,或者在执行大规模更新前,先让它 show me the SQL you are going to run 确认一遍。

全部回复 (0)

还没有回复,来发第一条吧!

发表回复

支持 Markdown 格式