A Model Context Protocol (MCP) server that provides comprehensive SQLite database management and analysis capabilities. This server allows LLMs to explore database schemas, query data, perform updates, and conduct statistical analysis.
-
Schema Exploration
- List all tables in the database
- View detailed schema information for specific tables
- Examine column types and constraints
-
Data Management
- Execute read-only SQL queries
- Perform data modifications (UPDATE, INSERT, DELETE)
- Safe execution with error handling
-
Data Analysis
- Basic statistical analysis (row counts, null counts, numeric stats)
- Detailed analysis including categorical data distributions
- Automatic type detection and appropriate statistical measures
- Python 3.8 or higher
- SQLite database file
Claude Desktop (optional, for desktop integration)
- First, ensure you have the required Python packages:
pip install mcp pandas
- Download the SQLite MCP server script:
# Clone this repository or download sqlite_mcp.py directly
curl -O https://raw.githubusercontent.com/yourusername/sqlite-mcp/main/sqlite_mcp.py
- For Claude Desktop integration:
# Install using MCP CLI
mcp install sqlite_mcp.py --name "SQLite Explorer" --env DB_PATH=/path/to/your/database.sqlite
- Locate the claude_desktop_config.json file and add below to the mcpServers section
- change the paths to the correct ones for your system.
- Set database location in DB_PATH variable in the .env file.
"sqlite_mcp": {
"command": "C:\\path\\to\\python.exe",
"args": [
"C:\\path\\to\\sqlite-mcp\\server.py"
]
}
The server exposes the following MCP resources:
-
schema://tables
- Lists all available tables in the database
- Example response:
Available tables: - users - products - orders
-
schema://{table}
- Returns detailed schema information for a specific table
- Example response:
Table: users Create Statement: CREATE TABLE users ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, email TEXT UNIQUE ) Columns: - id (INTEGER) NOT NULL PRIMARY KEY - name (TEXT) NOT NULL - email (TEXT)
Execute read-only SQL queries:
SELECT * FROM users LIMIT 5
Perform data modifications:
INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com')
UPDATE users SET email = 'new@example.com' WHERE id = 1
Perform statistical analysis on table data:
Parameters:
table
: Name of the table to analyzeanalysis_type
: Either 'basic' or 'detailed'
Example response:
{
"row_count": 1000,
"column_count": 5,
"null_counts": {
"id": 0,
"name": 0,
"email": 15
},
"numeric_columns": {
"id": {
"mean": 500.5,
"std": 288.819,
"min": 1,
"max": 1000
}
}
}
The server implements several security measures:
- Input validation for all SQL operations
- Read-only queries are separated from data modifications
- Database connection error handling
- SQL injection protection through parameterized queries
The server provides clear error messages for common issues:
- Database connection failures
- Invalid SQL syntax
- Table not found errors
- Permission issues
- Type mismatches
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.