Docker MCP Toolkit + SQLite MCP 服务器¶
一份可复现的操作手册,用于将 SQLite MCP 服务器 安装到
Docker MCP Toolkit 中,使任何
已连接的 MCP 客户端(Claude Code、Claude Desktop、Cursor、VS Code 等)都能获得
六个 SQLite 工具:read_query、write_query、create_table、list_tables、
describe_table 和 append_insight。
本文档并非使用 graphify 所必需——它作为一份已验证可用的方案放在这里,供那些希望 将轻量、持久化的 SQL 工作区暴露给 AI 客户端,并与 graphify 的知识图谱工具一同 使用的用户参考。
为什么用 SQLite(而不是 sqlite-mcp-server)¶
在撰写本文时,目录中附带两个 SQLite MCP 镜像:
| 目录名称 | 镜像 | 状态 |
|---|---|---|
SQLite |
mcp/sqlite |
在目录元数据中被标记为 “Archived”,但 可以正常启动并提供服务 |
sqlite-mcp-server |
mcp/sqlite-mcp-server |
已损坏:已发布层中不存在入口点 /app/.venv/bin/mcp-server-sqlite |
在新镜像于上游修复之前,请使用 SQLite(mcp/sqlite)。
前提条件¶
- Docker Desktop 正在运行且状态健康
docker info返回Server Version- 公共套接字存在于
/var/run/docker.sock(或其指向~/.docker/run/docker.sock的符号链接) - Docker MCP Toolkit CLI 插件(
docker mcp) - 随近期 Docker Desktop 版本捆绑提供;
docker mcp --version应打印出版本字符串
安装¶
# Add the working SQLite server to the default MCP profile
docker mcp profile server add default \
--server catalog://mcp/docker-mcp-catalog/SQLite
# Pre-pull the image so the first tool call is fast
docker pull mcp/sqlite:latest
验证配置文件现在同时包含 fetch(内置)和 SQLite:
预期输出:
Docker MCP 网关现在应额外暴露 6 个工具:
冒烟测试¶
CLI 可以直接调用 MCP 工具(每次调用都会启动全新的网关,每次调用约 5 秒开销):
docker mcp tools call list_tables
docker mcp tools call create_table \
query='CREATE TABLE IF NOT EXISTS notes (id INTEGER PRIMARY KEY AUTOINCREMENT, body TEXT NOT NULL, created_at TEXT DEFAULT CURRENT_TIMESTAMP)'
docker mcp tools call write_query \
query="INSERT INTO notes(body) VALUES ('first row'), ('second row')"
docker mcp tools call read_query \
query='SELECT * FROM notes ORDER BY id'
docker mcp tools call describe_table table_name=notes
docker mcp tools call append_insight insight='3 rows inserted; aggregates work.'
read_query 应返回带时间戳的已插入行。
存储布局¶
数据库文件位于 Docker 命名卷 mcp-sqlite 中,容器内挂载于 /mcp:
从宿主机检查:
docker volume inspect mcp-sqlite
docker run --rm -v mcp-sqlite:/mcp:ro alpine ls -la /mcp
docker run --rm -v mcp-sqlite:/mcp:ro keinos/sqlite3 \
sqlite3 /mcp/db.sqlite '.schema'
该卷在 SQLite MCP 容器的多次 docker run --rm 调用之间持续存在,因此一次 MCP
工具调用的写入内容对下一次调用可见。
接入 MCP 客户端¶
每个客户端只需连接一次;网关会暴露活动配置文件中的每个服务器:
docker mcp client connect claude-code # already connected for many users
docker mcp client connect cursor
docker mcp client connect vscode
docker mcp client connect claude-desktop
# Supported: claude-code, claude-desktop, cline, codex, continue, crush,
# cursor, gemini, goose, gordon, kiro, lmstudio, opencode, sema4,
# vscode, zed
验证连接:
卸载 / 重置¶
# Remove server from the profile
docker mcp profile server remove default SQLite
# Drop the database volume (irreversible)
docker volume rm mcp-sqlite
# Remove the image
docker rmi mcp/sqlite:latest
故障排查¶
starting client: calling "initialize": EOF— 请求的服务器未通过 MCP 握手。直接运行该镜像以查看错误:常见原因:镜像中缺少入口点二进制文件(即printf '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"smoke","version":"0.0"}}}\n' \ | docker run --rm -i -v mcp-sqlite:/mcp <image-ref> --db-path /mcp/db.sqlitesqlite-mcp-server的故障模式), 或缺少所需的环境变量/密钥。cannot use --enable-all-servers with --servers flag— 这些网关参数互斥;请选择其一。- 安装后
docker mcp tools count中未出现新工具 — 网关可能以启用dynamic-tools的方式运行,在配置文件于会话中途被激活之前,仅暴露元工具(mcp-add、mcp-find等)。请调用docker mcp tools(它会针对默认配置文件启动一个临时网关),或在 MCP 会话内调用mcp-activate-profile。
本页原文 Markdown:在 AtomGit 查看·内容源自开源项目 graph/graphify