Sqlite MCP Server

Communauté Données et bases de données

Safe, read-only SQLite MCP server with auto schema discovery, row limits, and structured AI error handling.

Que pouvez-vous faire avec Sqlite MCP Server ?

  • Automated Schema Discovery: Automatically inspect table lists, object types (tables/views), row count estimates, columns, primary keys, foreign keys, and complete DDL definitions.
  • Strict Read-Only Query Security:
  • Context Overflow Protection (max_rows): Safely truncates large query results with an informative warning advising AI models to use LIMIT and OFFSET clauses.
  • Structured Error Handling for AI: Returns standardized JSON error envelopes (error_type, message, query, and suggestion) to allow AI models to self-correct queries without hallucinations.
  • Full MCP Capabilities: Exposes Tools, direct Resources (sqlite://schema, sqlite://tables), and guided Prompts (schema_analysis, safe_query_assistant).
  • Flexible Configuration: Set the database path via CLI argument (--db-path), environment variable (SQLITE_DB_PATH), or dynamically per tool invocation (db_path).

Installation

Les étapes d'installation sont dans la documentation ci-dessous. Documentation

Documentation

Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.

Sommaire
  1. sqlite-mcp-server
  2. 🌟 Key Features
  3. 🛠️ MCP Tools
  4. 📦 MCP Resources & Prompts
  5. 📋 Structured Error Format
  6. 🚀 Installation & Getting Started
  7. ⚙️ Claude Desktop Configuration
  8. 💻 Cursor Integration
  9. 🧪 Testing
  10. 📂 Project Structure
  11. 📄 License

sqlite-mcp-server

An open-source Model Context Protocol (MCP) server connecting LLM assistants (such as Claude Desktop and Cursor) to local SQLite databases with strict read-only security, context overflow protection, and structured AI error handling.


🌟 Key Features

  • Automated Schema Discovery: Automatically inspect table lists, object types (tables/views), row count estimates, columns, primary keys, foreign keys, and complete DDL definitions.
  • Strict Read-Only Query Security:
    • Parser-Level Validation: Rejects all mutation statements (INSERT, UPDATE, DELETE, DROP, ALTER, CREATE, ATTACH, VACUUM, REINDEX, etc.).
    • Statement Chaining Prevention: Blocks execution of multiple chained statements separated by ;.
    • Restricted PRAGMAs: Prohibits dangerous PRAGMAs (writable_schema, permissions, and configuration mutation).
    • Engine-Level Enforcement: SQLite connections are opened using read-only URI mode (file:path?mode=ro) with PRAGMA query_only = ON;.
  • Context Overflow Protection (max_rows): Safely truncates large query results with an informative warning advising AI models to use LIMIT and OFFSET clauses.
  • Structured Error Handling for AI: Returns standardized JSON error envelopes (error_type, message, query, and suggestion) to allow AI models to self-correct queries without hallucinations.
  • Full MCP Capabilities: Exposes Tools, direct Resources (sqlite://schema, sqlite://tables), and guided Prompts (schema_analysis, safe_query_assistant).
  • Flexible Configuration: Set the database path via CLI argument (--db-path), environment variable (SQLITE_DB_PATH), or dynamically per tool invocation (db_path).

🛠️ MCP Tools

Tool NameDescriptionKey Arguments
list_tablesLists all tables and views in the database with estimated row counts.db_path (optional)
describe_tableRetrieves column definitions, data types, nullability, default values, primary keys, foreign keys, and indexes for a specific table.table_name (required), db_path (optional)
get_database_schemaReturns the complete DDL schema definition for all tables, views, and indexes.db_path (optional)
read_querySafely executes a read-only SELECT or EXPLAIN query and returns structured row records.query (required), params (optional), max_rows (optional, default: 1000), db_path (optional)

📦 MCP Resources & Prompts

MCP Resources (Direct Context Access)

Clients that support MCP Resources can inspect the database context directly without invoking a tool:

  • sqlite://schema: Returns the full formatted SQL DDL schema of the database.
  • sqlite://tables: Returns a concise list of all tables, views, and their respective row counts.
MCP Prompts (Interactive Assistant Guides)
  • schema_analysis: Prompts the AI model to inspect database structure, relationships, normalization, and optimization opportunities.
  • safe_query_assistant(user_goal): Guides the AI model in formulating an optimized, safe SELECT query tailored to the user's objective.

📋 Structured Error Format

When a syntax or validation error occurs, the server responds with a structured JSON object designed for LLM consumption:

{
  "success": false,
  "error_type": "DisallowedQueryError",
  "message": "Forbidden modification keyword 'DROP' detected. Only read operations are allowed.",
  "query": "DROP TABLE employees;",
  "suggestion": "Remove any data modification or schema alteration commands. Only SELECT queries are permitted."
}

Supported error categories:

  • DisallowedQueryError: Query attempts data modification or invokes forbidden SQL operations.
  • SyntaxError: SQLite syntax error.
  • TableNotFoundError: Table was not found (includes advice to run list_tables).
  • ColumnNotFoundError: Column was not found (includes advice to run describe_table).
  • DatabaseNotFoundError: Database file does not exist at the specified path.
  • DatabaseConfigError: No database path was provided or configured.
  • ValidationError: Invalid input parameter (e.g. empty table name or max_rows < 1).

🚀 Installation & Getting Started

If you have uv installed, run the server instantly without cloning:

uvx sqlite-mcp-server --db-path "/path/to/database.db"
Option 2: Install from Source
# 1. Clone repository
git clone https://github.com/Aderali06/sqlite-mcp-server.git
cd sqlite-mcp-server

# 2. Create virtual environment
python -m venv .venv

# Windows
.venv\Scripts\activate
# macOS / Linux
source .venv/bin/activate

# 3. Install package and development dependencies
pip install -e ".[dev]"

⚙️ Claude Desktop Configuration

Add the server to your claude_desktop_config.json:

  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json
Configuration Example:
{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "sqlite-mcp-server",
        "--db-path",
        "C:/Users/A2/Documents/database.db"
      ]
    }
  }
}

Or using local Python:

{
  "mcpServers": {
    "sqlite": {
      "command": "python",
      "args": [
        "-m",
        "src.server",
        "--db-path",
        "C:/Users/A2/Documents/database.db"
      ],
      "env": {
        "PYTHONIOENCODING": "utf-8"
      }
    }
  }
}

💻 Cursor Integration

Method 1: Via Cursor Settings UI
  1. Open Cursor Settings (Ctrl + Shift + J on Windows/Linux or Cmd + , on macOS).
  2. Navigate to Features > MCP Servers.
  3. Click + Add New MCP Server.
  4. Fill in:
    • Name: sqlite-mcp-server
    • Type: command
    • Command: python -m src.server --db-path "C:/path/to/database.sqlite"
Method 2: Project-Level Configuration (.cursor/mcp.json)

Create .cursor/mcp.json in your project root:

{
  "mcpServers": {
    "sqlite": {
      "command": "python",
      "args": [
        "-m",
        "src.server",
        "--db-path",
        "${workspaceFolder}/data/app.db"
      ]
    }
  }
}

🧪 Testing

Run the automated test suite with pytest:

# Run all tests
pytest

# Run tests with test coverage reporting
pytest --cov=src --cov-report=term-missing

📂 Project Structure

sqlite-mcp-server/
├── .github/
│   └── workflows/
│       ├── ci.yml              # Multi-OS CI testing (Linux & Windows)
│       └── publish.yml         # Automated PyPI release workflow
├── src/
│   ├── __init__.py             # Package version & metadata
│   └── server.py               # FastMCP server, tools, resources, prompts & SQL validation
├── tests/
│   └── test_server.py          # 29 unit & integration pytest tests
├── .gitignore                  # Git ignore rules
├── LICENSE                     # Official MIT License
├── pyproject.toml              # Build system, CLI entrypoint, & package metadata
├── README.md                   # Project documentation & configuration guide
└── requirements.txt            # Python dependencies

📄 License

This project is licensed under the MIT License.

Questions fréquentes

Qu'est-ce que Sqlite MCP Server ?

Safe, read-only SQLite MCP server with auto schema discovery, row limits, and structured AI error handling.

Comment installer Sqlite MCP Server ?

Suivez les étapes d'installation de sa documentation, affichée sur cette page et dans son dépôt.

Sqlite MCP Server est-il open source ?

Oui. Son code est sur GitHub sous licence MIT.

Qui maintient Sqlite MCP Server ?

Il est publié par Aderali06. AI.tn le référence sans le maintenir ni le recommander.

Issu des listes communautaires awesome-mcp-servers et du dépôt GitHub du projet. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.