SQLite MCP Server
A comprehensive Model Context Protocol (MCP) server implementation for SQLite databases, providing secure and controlled access to SQLite operations through a standardized interface.
📋 Table of Contents
- Features
- Quick Start
- Installation
- Integration Guide
- Available Tools (28 Tools)
- Tool Documentation
- Permission System
- Configuration
- Security Guidelines
⚡ Quick Start
Get up and running in 30 seconds:
# Run directly with npx (no installation required)
npx @berthojoris/mcp-sqlite-server sqlite:////path/to/database.sqlite list,read,create,update,delete
Or add to your MCP client configuration:
{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": ["-y", "@berthojoris/mcp-sqlite-server", "sqlite:////path/to/db.sqlite", "list,read,create,update,delete"]
}
}
}
🚀 Features
Core Functionality
- MCP Protocol Compliance: Full implementation of the Model Context Protocol for seamless integration with MCP clients
- SQLite Integration: Native SQLite support using
better-sqlite3for optimal performance - Granular Permissions: Fine-grained permission system with 10 distinct permission types
- Security First: Comprehensive SQL injection protection and query validation
- Schema Introspection: Complete database schema analysis and reporting
- Connection Pooling: Efficient database connection management
- Audit Logging: Detailed operation logging for security and compliance
Permission System
The server implements a granular permission system with the following types:
list- List tables and schemasread- SELECT queries and data retrievalcreate- INSERT operationsupdate- UPDATE operationsdelete- DELETE operationsexecute- Execute stored procedures/functionsddl- Data Definition Language (CREATE, ALTER, DROP)procedure- Stored procedures (N/A for SQLite - reserved for compatibility)transaction- Transaction control (BEGIN, COMMIT, ROLLBACK)utility- Utility operations (VACUUM, ANALYZE, PRAGMA, etc.)
Security Features
- SQL Injection Prevention: Parameterized queries and pattern detection
- Query Validation: Comprehensive query analysis and sanitization
- Permission Enforcement: Operation-level permission checking
- Rate Limiting: Configurable request rate limiting
- Audit Trail: Complete operation logging with client tracking
- Input Sanitization: Parameter validation and sanitization
Auto-Creation Features
- Database Auto-Creation: Automatically creates database files if they don't exist
- Directory Auto-Creation: Creates parent directories recursively as needed
- Intelligent Initialization: Detects new vs existing databases and logs appropriately
- Zero-Configuration Setup: Works out-of-the-box with any valid SQLite path
📦 Installation
NPX Usage (Recommended)
npx @berthojoris/mcp-sqlite-server sqlite:////path/to/your/database.sqlite list,read,utility
Global Installation
npm install -g @berthojoris/mcp-sqlite-server
mcp-sqlite-server sqlite:////path/to/your/database.sqlite list,read,create,update
Local Installation
npm install @berthojoris/mcp-sqlite-server
🔗 Integration Guide
Standard MCP Configuration
Add this configuration to your MCP client's config file:
{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": [
"-y",
"@berthojoris/mcp-sqlite-server",
"sqlite:////path/to/database.sqlite",
"list,read,create,update,delete,utility"
]
}
}
}
Arguments Explained:
| # | Argument | Description |
|---|---|---|
| 1 | -y | Auto-confirm npx installation |
| 2 | @berthojoris/mcp-sqlite-server | Package name |
| 3 | sqlite:////path/to/database.sqlite | Database connection string |
| 4 | list,read,create,update,delete,utility | Comma-separated permissions |
Config File Locations by Client
| Client | Config File Location |
|---|---|
| Claude Desktop (macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop (Windows) | %APPDATA%\Claude\claude_desktop_config.json |
| Claude Desktop (Linux) | ~/.config/Claude/claude_desktop_config.json |
| Cursor IDE (macOS/Linux) | ~/.cursor/mcp.json |
| Cursor IDE (Windows) | %USERPROFILE%\.cursor\mcp.json |
| Windsurf IDE | ~/.windsurf/mcp.json |
| Cline (VS Code) | VS Code settings.json under cline.mcpServers |
Platform-Specific Path Examples
# macOS/Linux
"sqlite:////Users/yourname/databases/app.sqlite"
"sqlite:////home/user/projects/data.sqlite"
# Windows
"sqlite:///C:/Users/yourname/databases/app.sqlite"
# Relative path (from working directory)
"sqlite://./data/app.sqlite"
# In-memory database
"sqlite://:memory:"
Multiple Databases
{
"mcpServers": {
"main-db": {
"command": "npx",
"args": ["-y", "@berthojoris/mcp-sqlite-server", "sqlite:////path/to/main.sqlite", "list,read,create,update,delete"]
},
"analytics-db": {
"command": "npx",
"args": ["-y", "@berthojoris/mcp-sqlite-server", "sqlite:////path/to/analytics.sqlite", "list,read"]
}
}
}
🔧 Configuration
Connection String Formats
The server supports multiple SQLite connection string formats:
# Absolute path
sqlite:////absolute/path/to/database.sqlite
# Relative path
sqlite://./relative/path/to/database.sqlite
# In-memory database
sqlite://:memory:
# Direct file path
/path/to/database.sqlite
Permission Combinations
Detailed Permission Descriptions
| Permission | Description | Allowed Operations | Example Use Cases |
|---|---|---|---|
list | View database structure and metadata |
• List all tables • View table schemas • Check column information • View indexes and constraints • Access database metadata |
• Database exploration • Schema documentation • Development planning • Data modeling |
read | Execute SELECT queries and retrieve data |
• SELECT statements • JOIN operations • Aggregate functions (COUNT, SUM, etc.) • Subqueries • View data content |
• Data analysis • Reporting • Business intelligence • Read-only applications |
create | Insert new records into tables |
• INSERT statements • Bulk insert operations • Add new rows • Populate tables with data |
• Data entry applications • ETL processes • User registration • Content creation |
update | Modify existing records |
• UPDATE statements • Bulk update operations • Modify existing data • Change field values |
• Profile updates • Status changes • Data corrections • Content editing |
delete | Remove records from tables |
• DELETE statements • Bulk delete operations • Remove rows • Data cleanup |
• User account deletion • Data archiving • Content removal • Cleanup operations |
execute | Run stored procedures and functions |
• Execute stored procedures • Call database functions • Run custom database logic • Execute complex operations |
• Business logic execution • Complex calculations • Batch processing • Custom workflows |
ddl | Modify database structure |
• CREATE TABLE/INDEX • ALTER TABLE structure • DROP tables/indexes • Modify schema • Create/drop views |
• Database migrations • Schema updates • Development setup • Structure modifications |
transaction | Control transaction boundaries |
• BEGIN transactions • COMMIT changes • ROLLBACK operations • Manage data consistency • Atomic operations |
• Financial operations • Data integrity • Batch processing • Critical updates |
utility | Perform maintenance and optimization |
• VACUUM database • ANALYZE statistics • PRAGMA commands • Database backup • Performance optimization |
• Database maintenance • Performance tuning • Backup operations • System administration |
Common permission combinations for different use cases:
# Read-only access
list,read
# Basic CRUD operations
list,read,create,update,delete
# Full database access
list,read,create,update,delete,execute,ddl,transaction,utility
# Analytics/reporting
list,read,utility
# Development/testing
list,read,create,update,delete,ddl,transaction,utility
🔌 Available Tools
The MCP server provides 28 powerful tools for comprehensive SQLite database management:
Tools Summary
| # | Tool | Description | Permission |
|---|---|---|---|
| 1 | sqlite_query | Execute SELECT queries with parameterized support | read |
| 2 | sqlite_insert | Insert single records into tables | create |
| 3 | sqlite_update | Update existing records | update |
| 4 | sqlite_delete | Delete records from tables | delete |
| 5 | sqlite_schema | Get comprehensive schema information | list |
| 6 | sqlite_tables | List all tables in database | list |
| 7 | sqlite_relations | Analyze table relationships and foreign keys | list |
| 8 | sqlite_transaction | Execute multiple queries atomically | transaction |
| 9 | sqlite_backup | Create database backup | utility |
| 10 | sqlite_bulk_insert | Bulk insert with relational support | create |
| 11 | sqlite_bulk_update | Bulk update with progress tracking | update |
| 12 | sqlite_bulk_delete | Bulk delete with cascade support | delete |
| 13 | sqlite_ddl | Schema management (CREATE/ALTER/DROP) | ddl |
| 14 | sqlite_views | Create and manage database views | ddl |
| 15 | sqlite_indexes | Index management and optimization | list, ddl |
| 16 | sqlite_constraints | View constraints and foreign keys | list |
| 17 | sqlite_migrate | Data migration between tables | read, create, update |
| 18 | sqlite_backup_restore | Backup tables and restore from SQL | utility, read, ddl |
| 19 | sqlite_column_statistics | Column statistics and data profiling | read |
| 20 | sqlite_database_summary | Database summary and metadata | read |
| 21 | sqlite_schema_erd | Entity relationship diagram data | read |
| 22 | sqlite_schema_rag_context | RAG context for AI models | read |
| 23 | sqlite_analyze_query | Query analysis and execution plans | read |
| 24 | sqlite_optimization_hints | Query optimization suggestions | read |
| 25 | sqlite_database_health_check | Database health and integrity checks | read |
| 26 | sqlite_unused_indexes | Find unused or redundant indexes | read |
| 27 | sqlite_connection_pool_stats | Connection pool statistics | read |
Tool Categories
Data Query & Retrieval:
sqlite_query- Run SELECT statementssqlite_schema- Inspect database structuresqlite_tables- List available tablessqlite_relations- Analyze table relationships and foreign keys
Data Manipulation (CRUD):
sqlite_insert- Create new recordssqlite_update- Modify existing recordssqlite_delete- Remove records
Bulk Operations:
sqlite_bulk_insert- Insert many records efficientlysqlite_bulk_update- Update many records at oncesqlite_bulk_delete- Delete many records with cascade support
Schema Management:
sqlite_ddl- CREATE/ALTER/DROP tables and indexessqlite_views- Create, drop, and manage database viewssqlite_indexes- Index management and optimization
Constraints & Relationships:
sqlite_constraints- View and analyze constraints and foreign keys
Data Migration:
sqlite_migrate- Clone tables, compare structures, and copy data
Database Operations:
sqlite_transaction- Atomic multi-query executionsqlite_backup- Database backup utilitysqlite_backup_restore- Backup tables and restore from SQL files
📖 Full Documentation: See DOCUMENTATIONS.md for detailed parameters, examples, and response formats for each tool.
🔒 Security Guidelines
Best Practices
- Principle of Least Privilege: Only grant necessary permissions
- Use Parameterized Queries: Always use parameters for dynamic values
- Regular Backups: Implement automated backup strategies
- Monitor Audit Logs: Review operation logs regularly
- Connection Limits: Set appropriate connection pool limits
- Read-Only When Possible: Use read-only mode for reporting/analytics
Security Features
- SQL Injection Protection: Automatic detection of dangerous patterns
- Query Validation: Comprehensive query analysis before execution
- Permission Enforcement: Operation-level access control
- Rate Limiting: Configurable request throttling
- Audit Logging: Complete operation tracking
- Input Sanitization: Parameter validation and cleaning
Dangerous Operations
The server automatically blocks or restricts:
- Multiple statement execution
- Dangerous SQL patterns (UNION-based injections, etc.)
- Unauthorized schema modifications
- Excessive query complexity
- Operations without proper permissions
📄 License
MIT License - see LICENSE file for details.
🆘 Support
For issues, questions, or contributions:
- GitHub Issues: Repository Issues
- Documentation: Full Documentation
Note: This server is designed for secure, controlled access to SQLite databases through the Model Context Protocol. Always follow security best practices and regularly review audit logs in production environments.
Last Updated: 2025-12-20 20:00:00