Provides comprehensive SQLite database access with granular permissions, enabling secure query execution, schema introspection, transaction management, and database operations through a controlled interface with SQL injection protection and audit logging.
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.
๐ 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 performanceGranular Permissions: Fine-grained permission system with 9 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)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
๐ฆ Installation
NPX Usage (Recommended)
Global Installation
Local Installation
๐ง Configuration
MCP Client Configuration
Add to your MCP client configuration:
Connection String Formats
The server supports multiple SQLite connection string formats:
Permission Combinations
Common permission combinations for different use cases:
๐ ๏ธ CLI Usage
Start MCP Server
Schema Information
Database Backup
Generate Configuration
๐ Available Tools
The MCP server provides the following tools:
sqlite_query
Execute SELECT queries with full result sets.
Parameters:
query(string): SQL SELECT statementparameters(array, optional): Query parameters for prepared statements
Required Permissions: read
Example:
sqlite_insert
Insert new records into tables.
Parameters:
query(string): SQL INSERT statementparameters(array, optional): Values to insert
Required Permissions: create
Example:
sqlite_update
Update existing records.
Parameters:
query(string): SQL UPDATE statementparameters(array, optional): Update values
Required Permissions: update
Example:
sqlite_delete
Delete records from tables.
Parameters:
query(string): SQL DELETE statementparameters(array, optional): Condition parameters
Required Permissions: delete
Example:
sqlite_schema
Get comprehensive database schema information.
Parameters:
table(string, optional): Specific table name
Required Permissions: list
Returns: Complete schema information including tables, columns, indexes, views, triggers, and foreign keys.
sqlite_tables
List all tables in the database.
Required Permissions: list
Returns: Array of table names with basic metadata.
sqlite_transaction
Execute multiple queries within a transaction.
Parameters:
queries(array): Array of query objects withqueryand optionalparameters
Required Permissions: transaction + permissions for individual operations
Example:
sqlite_backup
Create a backup of the database.
Parameters:
backupPath(string): Path for the backup file
Required Permissions: utility
๐ 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
๐ Performance & Monitoring
Connection Pooling
Configurable maximum connections
Automatic connection lifecycle management
Connection reuse optimization
Idle connection cleanup
Performance Metrics
Query execution time tracking
Success/failure rate monitoring
Connection pool statistics
Rate limiting metrics
Logging
Comprehensive logging includes:
Query execution details
Permission checks
Security violations
Performance metrics
Error conditions
๐งช Development & Testing
Building from Source
Running Tests
Development Mode
Type Checking
๐ API Reference
Configuration Options
--config <path>: Configuration file path--log-level <level>: Logging level (debug, info, warn, error)--read-only: Open database in read-only mode--max-connections <number>: Maximum database connections--backup-dir <path>: Directory for automatic backups
Environment Variables
LOG_LEVEL: Default logging levelMCP_SQLITE_CONFIG: Default configuration file path
๐ค Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests for new functionality
Ensure all tests pass
Submit a pull request
๐ License
MIT License - see LICENSE file for details.
๐ Support
For issues, questions, or contributions:
GitHub Issues: Repository Issues
Documentation: Full Documentation
๐ Version History
v1.0.0
Initial release
Full MCP protocol implementation
Comprehensive permission system
Security features and audit logging
CLI interface and schema introspection
Connection pooling and performance optimization
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.
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
Enables secure and controlled access to SQLite databases through the Model Context Protocol. Provides comprehensive database operations with granular permissions, SQL injection protection, and audit logging for safe database interactions.