A reproducible runbook for installing the SQLite MCP server into the
Docker MCP Toolkit so any
connected MCP client (Claude Code, Claude Desktop, Cursor, VS Code, etc.) gains
six SQLite tools: read_query, write_query, create_table, list_tables,
describe_table, and append_insight.
This document is not required to use graphify — it lives here as a known-good recipe for users who want a lightweight, persistent SQL workspace exposed to their AI clients alongside graphify's knowledge-graph tools.
At time of writing the catalog ships two SQLite MCP images:
| Catalog name | Image | Status |
|---|---|---|
SQLite |
mcp/sqlite |
Marked "Archived" in catalog metadata, but boots and serves correctly |
sqlite-mcp-server |
mcp/sqlite-mcp-server |
Broken: entrypoint /app/.venv/bin/mcp-server-sqlite does not exist in the published layer |
Use SQLite (mcp/sqlite) until the newer image is fixed upstream.
- Docker Desktop running and healthy
docker inforeturns aServer Version- Public socket present at
/var/run/docker.sock(or its symlink to~/.docker/run/docker.sock)
- Docker MCP Toolkit CLI plugin (
docker mcp)- Bundled with recent Docker Desktop releases;
docker mcp --versionshould print a version string
- Bundled with recent Docker Desktop releases;
# 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:latestVerify the profile now contains both fetch (built-in) and SQLite:
docker mcp profile show default | grep -E '^[[:space:]]+name:'Expected output:
name: fetch
name: SQLite
The Docker MCP gateway should now expose 6 additional tools:
docker mcp tools count
# → 15 tools (was 9 before adding SQLite)The CLI can call MCP tools directly (each call boots a fresh gateway, ~5s overhead per call):
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 should return the inserted rows with timestamps.
Database file lives in a Docker named volume mcp-sqlite, mounted at /mcp
inside containers:
mcp-sqlite (named volume) → /mcp/db.sqlite
Inspect from the host:
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'The volume persists across docker run --rm invocations of the SQLite MCP
container, so writes from one MCP tool call are visible to the next.
Connect once per client; the gateway exposes every server in the active profile:
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, zedVerify wiring:
docker mcp client ls# 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:lateststarting client: calling "initialize": EOF— the requested server failed its MCP handshake. Run the image directly to see the error:Common causes: missing entrypoint binary in the image (theprintf '{"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.sqlite
sqlite-mcp-serverfailure mode) or missing required env/secrets.cannot use --enable-all-servers with --servers flag— these gateway args are mutually exclusive; pick one.- No new tools appear in
docker mcp tools countafter install — the gateway may be running withdynamic-toolsenabled, exposing only meta-tools (mcp-add,mcp-find, …) until a profile is activated mid-session. Either invokedocker mcp tools(which spins up an ephemeral gateway against the default profile) or callmcp-activate-profilefrom inside an MCP session.