Skip to content

eduresser/sqlite-mcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

Variable Required Default Description
SQLITE_DB_PATH Yes Path to the SQLite database file
SQLITE_READ_ONLY No false Set to true to disable write operations
SQLITE_TIMEOUT No 30 Query 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.

Parameter Type Default Description
sql str The SQL statement to execute
dry_run bool false Return the query plan instead of executing
max_rows int 100 Maximum 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.

Parameter Type Description
table str The 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.

About

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.

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages