Windows下 claude-desktop 的 mcp-server-sqlite 配置:uv 与 claude_desktop_config.json 实战
1. Windows 下 claude-desktop 接入 mcp-server-sqlite 的真实场景如果你在 Windows 上用 claude-desktop想让它直接读你本地的 SQLite 数据库文件比如查一张订单表、统计某个字段、跑一句 SELECT 看结果那 mcp-server-sqlite 就是最省事的入口。它本质是一个 MCPModel Context Protocol服务claude-desktop 启动时会按claude_desktop_config.json里的配置把服务拉起来之后你在对话里就能让模型调用 sqlite 工具去操作指定的.db文件。问题在于 Windows 这套链路比 macOS、Linux 更容易翻车。官方文档给的配置骨架通常是command: uvx看起来干净但实际跑起来 claude-desktop 经常找不到uvx或者干脆用系统里的 node 去解析最后报一堆spawn uvx ENOENT、command not found之类的错。核心原因就一个claude-desktop 启动子进程时用的 PATH 和你 PowerShell 里的 PATH 不是一回事它不认你终端里能跑通的uvx。所以这篇聚焦的是完整链路装 uv、确认 uvx.exe 的真实路径、把绝对路径写进claude_desktop_config.json、重启 claude-desktop、验证 sqlite 工具是否真的生效。适合已经装好 claude-desktop、手上有 SQLite 文件、但卡在配置这一步的人。下面每一步都给可复制的命令和 JSON照着做基本能通。2. 前置准备uv 安装与 uvx.exe 路径确认mcp-server-sqlite 官方推荐用 uv 生态来拉起uvx是 uv 提供的工具运行器能直接跑 PyPI 上的命令行工具不用你手动建虚拟环境。Windows 上装 uv 最稳的方式是官方 PowerShell 脚本。打开 PowerShell普通权限即可不用管理员执行powershell -c irm https://astral.sh/uv/install.ps1 | iex装完之后uv 默认会放到用户目录下的.local\bin。你需要确认两件事uv能不能跑uvx.exe的绝对路径是什么。uv --version uvx --version where.exe uvxwhere.exe uvx会输出类似C:\Users\PC\.local\bin\uvx.exe把这个路径记下来后面 JSON 里要用。注意这里的PC是你的 Windows 用户名每个人不一样别直接抄。如果你装完uv --version报「无法将 uv 项识别为 cmdlet」说明.local\bin没进当前会话的 PATH可以临时加一下再验证$env:Path ;$env:USERPROFILE\.local\bin uv --version这一步只是为了让当前终端能验证真正写进 JSON 时我们用的是绝对路径不依赖 PATH所以不用纠结永久环境变量。另外提前准备好你的 SQLite 文件。没有的话可以先用一个测试库# 如果你装了 sqlite3 命令行工具 sqlite3 E:\SQL\test.db CREATE TABLE demo(id INTEGER PRIMARY KEY, name TEXT); INSERT INTO demo(name) VALUES(alpha),(beta);没有 sqlite3 也没关系mcp-server-sqlite 首次连接一个不存在的路径时会自己建库但建议还是先放一个真实文件方便验证查询结果。3. 可复制配置claude_desktop_config.json 骨架与路径写法claude-desktop 的配置文件位置在 Windows 上是%APPDATA%\Claude\claude_desktop_config.json在文件资源管理器地址栏直接粘贴%APPDATA%\Claude就能打开。如果文件不存在新建一个claude_desktop_config.json。用记事本或 VS Code 打开写入下面这份骨架{ mcpServers: { sqlite: { command: C:\\Users\\PC\\.local\\bin\\uvx.exe, args: [ mcp-server-sqlite, --db-path, E:\\SQL\\test.db ] } } }几个关键点必须说清楚这是最容易错的地方。第一command一定要写uvx.exe的绝对路径不要写uvx。写uvx时 claude-desktop 会去它自己的 PATH 里找找不到就报错甚至有些版本会 fallback 到 node 去解析日志里出现 node 相关的报错让人误以为是 node 的问题。第二JSON 里的反斜杠必须双写。C:\Users\PC在 JSON 字符串里要写成C:\\Users\\PC否则\U、\S会被当成转义序列解析直接失败。这是 Windows 路径写 JSON 的经典坑。第三--db-path后面跟的数据库路径同样双写反斜杠。路径里有空格的话JSON 里不用额外加引号args 数组本身已经把它当独立参数了。第四整个文件必须是合法 JSON不能有注释、不能有尾逗号。改完可以用 PowerShell 快速校验Get-Content $env:APPDATA\Claude\claude_desktop_config.json -Raw | ConvertFrom-Json没报错就说明 JSON 结构没问题。如果报ConvertFrom-Json : 传入的对象无效就是格式错了重点查反斜杠和逗号。注意如果你之前已经配过别的 MCP 服务不要把整个文件覆盖掉只往mcpServers里加sqlite这一项保留原有的键。4. 验证请求重启 claude-desktop 并确认 sqlite 工具生效配置写完必须完全退出 claude-desktop 再重启。注意是彻底退出不是关窗口。右下角托盘图标右键退出或者任务管理器里结束所有 Claude 进程否则它不会重新读配置。Get-Process | Where-Object { $_.ProcessName -like *claude* } | Stop-Process -Force然后重新打开 claude-desktop。启动后看两个地方。第一界面左下角或输入框附近会有一个工具/连接器图标点开应该能看到sqlite这个 server状态是已连接。不同版本 UI 位置略有差异但只要有 sqlite 条目且不是红色报错就说明进程拉起来了。第二直接在对话里发一句让它调用工具的话比如用 sqlite 工具列出 E:\SQL\test.db 里所有的表如果配置正确模型会触发 sqlite 工具调用返回类似demo这样的表名。你也可以让它跑具体查询查询 demo 表里 name 字段的所有值预期返回alpha和beta。这一步能出结果说明整条链路通了claude-desktop 用绝对路径拉起 uvx.exeuvx 下载并运行 mcp-server-sqlite服务连上你的 db 文件工具调用正常返回。如果工具图标里 sqlite 显示连接失败或者对话里模型说没有可用工具就进入下一节的排查。5. 本篇常见报错排查报错一spawn uvx ENOENT / 找不到 uvx这是最高频的。原因就是command写了uvx而不是绝对路径。改成本机uvx.exe的完整路径双写反斜杠。改完彻底重启 claude-desktop。报错二日志里出现 node 相关错误有些版本在找不到 command 时会尝试用 node 解析日志里出现node: command not found或 node 的堆栈。别被带偏去装 node根因还是 uvx 路径不对。确认where.exe uvx的输出原样填进 JSON。报错三JSON 解析失败配置完全不生效表现是重启后 sqlite 条目根本不出现。用第 3 节的ConvertFrom-Json校验。常见原因是单反斜杠、尾逗号、用了中文引号。全部改成英文双引号和双反斜杠。报错四uvx 能跑但 mcp-server-sqlite 启动失败在 PowerShell 里手动跑一遍看真实报错C:\Users\PC\.local\bin\uvx.exe mcp-server-sqlite --db-path E:\SQL\test.db如果提示下载失败或网络问题多试几次uvx 首次运行需要从 PyPI 拉包。如果提示路径不存在检查--db-path指向的目录是否存在mcp-server-sqlite 不会自动创建父目录。报错五工具连上了但查询报 database is locked说明你的 db 文件正被别的程序占用写锁。关掉其他打开该文件的工具或者换一个测试库验证。SQLite 同一时刻只允许一个写连接读一般没问题但被独占锁住时会报这个。报错六改了配置没反应九成是没彻底退出 claude-desktop。托盘退出 任务管理器确认无残留进程再启动。6. 后续接入与工具入口配置跑通之后你可能会想把这套 MCP 能力用到更多场景比如让模型在编码时直接查本地数据、或者把 sqlite 工具接到更长的自动化流程里。这时候可以按需分流需要重新生成或管理接入用的密钥去 API Keys 页面https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentsqlite_mcp_windowsutm_campaignrewrite想先在线验证模型对工具调用的理解用模型对话https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentsqlite_mcp_windowsutm_campaignrewrite长期做编码或 Agent 类任务看 Coding Planhttps://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentsqlite_mcp_windowsutm_campaignrewrite接入文档和参数细节在https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentsqlite_mcp_windowsutm_campaignrewrite控制台入口https://taotoken.net/console?utm_sourcetaotoken_aicg_blog_endutm_contentsqlite_mcp_windowsutm_campaignrewriteClaudeCodeAnthropic 相关https://taotoken.net/claude-code-anthropic?utm_sourcetaotoken_aicg_blog_endutm_contentsqlite_mcp_windowsutm_campaignrewrite官网首页https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_contentsqlite_mcp_windows最后补一个我踩过的坑uvx.exe的路径在不同机器上可能是.local\bin也可能是.cargo\bin下的软链别照抄别人的用户名和盘符一定用where.exe uvx的输出为准。配置这东西路径对了就通路径错了报错五花八门先把绝对路径确认死后面都顺。