MCP Hub
Back to servers

sqlite-mcp

An MCP server that enables AI agents to interact with SQLite databases by querying schemas, executing SQL, and inspecting table metadata. It supports safe database access through configurable read-only modes, query timeouts, and dry-run execution plans.

glama
Updated
Mar 17, 2026

sqlite-mcp

An MCP (Model Context Protocol) server that exposes SQLite databases as tools for AI agents. Connect any SQLite database and let LLMs query schemas, run SQL, and inspect tables through a standardized interface.

Features

  • execute_sql — Run arbitrary SQL statements with support for dry-run mode (EXPLAIN QUERY PLAN), automatic result truncation, and configurable row limits.
  • get_table_info — Retrieve complete table metadata in a single call: columns, types, DDL, indexes, foreign keys, and row count.
  • Read-only mode — Optionally block all write operations for safe, production-friendly access.
  • Query timeout — Configurable per-query timeout to prevent runaway queries.

Requirements

  • Python 3.11+
  • uv (recommended) or pip

Installation

# Clone the repository
git clone https://github.com/<owner>/sqlite-mcp.git
cd sqlite-mcp

# Install with uv
uv sync

Or with pip:

pip install .

Usage

Environment Variables

VariableRequiredDefaultDescription
SQLITE_DB_PATHYesPath to the SQLite database file
SQLITE_READ_ONLYNofalseSet to true to disable write operations
SQLITE_TIMEOUTNo30Query timeout in seconds

Running the Server

SQLITE_DB_PATH=./my_database.db sqlite-mcp

The server communicates over stdio and is designed to be launched by an MCP-compatible client (e.g., Cursor, Claude Desktop).

MCP Client Configuration

Add the server to your MCP client config (e.g., .cursor/mcp.json):

{
  "mcpServers": {
    "sqlite": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/sqlite-mcp", "sqlite-mcp"],
      "env": {
        "SQLITE_DB_PATH": "/path/to/database.db",
        "SQLITE_READ_ONLY": "true"
      }
    }
  }
}

Tools

execute_sql

Execute a SQL statement against the connected database.

ParameterTypeDefaultDescription
sqlstrThe SQL statement to execute
dry_runboolfalseReturn the query plan instead of executing
max_rowsint100Maximum rows to return

Example response (SELECT):

{
  "results": [{"id": 1, "name": "Alice"}],
  "row_count": 1,
  "truncated": false
}

Example response (dry run):

{
  "query_plan": [{"id": 0, "parent": 0, "detail": "SCAN users"}]
}

get_table_info

Get complete schema and metadata for a table.

ParameterTypeDescription
tablestrThe table name to inspect

Example response:

{
  "table": "users",
  "columns": [
    {"name": "id", "type": "INTEGER", "nullable": false, "default": null, "primary_key": true},
    {"name": "name", "type": "TEXT", "nullable": true, "default": null, "primary_key": false}
  ],
  "ddl": "CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT)",
  "indexes": [],
  "foreign_keys": [],
  "row_count": 42
}

License

This project is licensed under the MIT License. See LICENSE for details.

Reviews

No reviews yet

Sign in to write a review