Skip to main content
Glama
Pinggu17

sqlite-ro-mcp

by Pinggu17

sqlite-ro-mcp

A read-only SQLite MCP server in one auditable Python file.

Most "read-only" SQLite MCP servers are write-capable servers with a switch: an env var, or even a tool argument the model itself can flip. This server takes a different position: the write path does not exist.

Defense in depth

  1. No mutating tool is defined. There is nothing to toggle.

  2. Every statement is validated - head whitelist (SELECT / WITH / EXPLAIN) plus a write-keyword scan on comment- and literal-stripped SQL, so WITH cte AS (...) INSERT ... and keyword-in-string tricks are caught.

  3. Connections are opened mode=ro. Even if a validation bug slipped through, SQLite itself refuses the write.

Layer 3 matters: SQLite accepts statements like WITH ... INSERT, which a naive first-word check happily approves. Validation bugs are a when, not an if - the connection flag is the guarantee, the validator is just the first line. The test suite proves this directly: one test bypasses the validator entirely (calls the connection layer straight) and confirms SQLite itself still refuses the write.

The whole server is a single file of a few hundred lines with one dependency (the official mcp SDK). You can audit the entire attack surface in a few minutes.

Related MCP server: sqlite-mcp-server

Install

pipx install sqlite-ro-mcp        # or: pip install sqlite-ro-mcp

Or run from a checkout: pip install -e .

Use with Claude Code

claude mcp add sqlite-ro -- sqlite-ro-mcp --db sales=path/to/sales.db --db logs=path/to/logs.db

Multiple databases are exposed by named alias allowlist - only the files you name are reachable (no directory scanning).

Tools

tool

description

list_databases

aliases and file paths this server exposes

list_tables(db)

tables and views

describe_table(db, table)

columns, types, nullability, primary key

read_query(db, sql, params?)

single SELECT / WITH / EXPLAIN, ? binding, 500-row cap, 30s timeout

Options

usage: sqlite-ro-mcp [-h] --db [NAME=]PATH [--timeout TIMEOUT] [--instructions INSTRUCTIONS]

Read-only SQLite MCP server

options:
  -h, --help            show this help message and exit
  --db [NAME=]PATH      SQLite file to expose; repeatable
  --timeout TIMEOUT     per-query timeout in seconds (default 30)
  --instructions INSTRUCTIONS
                        override the instructions text advertised to clients

Non-goals

Writes of any kind, remote databases, authentication. If you need a write-capable server, use one that is honest about being one.

Authorship

Built with Claude Code. Requirements, the no-write-path design constraint, and review are by the author; implementation is AI-assisted and covered by the test suite in tests/.

License

MIT

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A read-only MCP server that enables LLMs to safely explore and query any SQLite database via natural language. It exposes tools for listing tables, describing schemas, and executing SELECT/WITH queries with built-in safety guards like write prevention and row limits.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server for SQLite databases, enabling AI assistants to safely query and inspect database schemas without write access.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server for SQL databases (SQLite/PostgreSQL) that enables listing tables, describing schemas, and executing SELECT queries with safety guardrails.
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Pinggu17/sqlite-ro-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server