mcp-server-sqlite
Provides tools and resources for interacting with SQLite databases, including executing read-only and write queries, managing tables (create, drop, describe), inserting, updating, and deleting records, performing transactions, and analyzing database schema.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-server-sqlitelist all tables in the database"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
SQLite MCP Server
A comprehensive Model Context Protocol (MCP) server for SQLite database operations. This server enables AI assistants to interact with SQLite databases through a standardized interface, providing safe and efficient database operations.
Features
🔍 Resources
Database Schema: View complete database schema with all tables and structures
Tables List: Get a list of all tables in the database
Table Info: Detailed information about specific tables including columns, indexes, and foreign keys
🛠️ Tools
query: Execute read-only SQL queries (SELECT statements)
execute: Execute write operations (INSERT, UPDATE, DELETE, CREATE, DROP)
create-table: Create new tables with column definitions and constraints
drop-table: Remove tables from the database
describe-table: Get detailed table structure information
list-tables: List all tables in the database
insert-record: Insert new records with data validation
update-record: Update existing records with WHERE conditions
delete-record: Delete records with WHERE conditions
transaction: Execute multiple SQL statements atomically
💬 Prompts
analyze-schema: Generate comprehensive database schema analysis
generate-query: Help create SQL queries based on natural language requirements
optimize-query: Get optimization suggestions for existing SQL queries
Installation
Option 1: Install from npm (Recommended)
Install globally:
npm install -g mcp-server-sqliteOr use with npx (no installation required):
npx mcp-server-sqlite --helpOption 2: Local Development with npm link
For local development and testing:
Clone this repository:
git clone https://github.com/madnh/mcp-server-sqlite.git
cd mcp-server-sqliteInstall dependencies and build:
npm install
npm run buildLink globally for development:
npm linkNow you can use the command globally:
mcp-server-sqlite --db ./database.db
mcp-server-sqlite --helpTo unlink when done developing:
npm unlink -g mcp-server-sqliteOption 3: From Source (Development Mode)
Follow steps 1-2 from Option 2
Run directly with:
npm run dev # Development mode
npm run build && npm start # Production modeUsage
Basic Usage
Via npm/npx (Recommended)
# Basic usage (creates database.db if not exists)
npx mcp-server-sqlite
# Specify database path
npx mcp-server-sqlite --db ./my-database.db
# Using long form
npx mcp-server-sqlite --database /path/to/production.db
# Get help
npx mcp-server-sqlite --help
# Check version
npx mcp-server-sqlite --versionVia environment variable
export SQLITE_DB_PATH=./my-database.db
npx mcp-server-sqliteDevelopment mode (from source)
npm run devProduction mode (from source)
npm run build
npm startEnvironment Configuration
Create a .env file based on .env.example:
cp .env.example .envConfigure your database path:
SQLITE_DB_PATH=./your-database.dbExample Database Setup
Create a sample database with test data:
node examples/setup-database.jsThis creates example.db with sample tables and data for testing.
With Claude Desktop
Option 1: Using npx (Recommended)
Add to your Claude Desktop configuration (claude_desktop_config.json):
{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": ["mcp-server-sqlite", "--db", "/path/to/your/database.db"]
}
}
}Option 2: Using global installation
If you installed globally with npm install -g mcp-server-sqlite:
{
"mcpServers": {
"sqlite": {
"command": "mcp-server-sqlite",
"args": ["--database", "/path/to/your/database.db"]
}
}
}Option 3: Using environment variables
{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": ["mcp-server-sqlite"],
"env": {
"SQLITE_DB_PATH": "/path/to/your/database.db"
}
}
}
}Option 4: From source (development)
{
"mcpServers": {
"sqlite": {
"command": "node",
"args": ["/path/to/mcp-server-sqlite/dist/cli.js"],
"env": {
"SQLITE_DB_PATH": "/path/to/your/database.db"
}
}
}
}API Reference
Resources
schema://database
Returns the complete database schema including all tables and their SQL definitions.
tables://list
Returns a JSON list of all table names in the database.
table-info://{tableName}
Returns detailed information about a specific table including:
Column definitions
Indexes
Foreign key constraints
Tools
query
Execute read-only SQL queries.
{
sql: string; // SELECT query to execute
}execute
Execute write operations.
{
sql: string; // INSERT, UPDATE, DELETE, CREATE, or DROP statement
}create-table
Create a new table with structured column definitions.
{
name: string,
columns: Array<{
name: string,
type: string, // TEXT, INTEGER, REAL, BLOB
primaryKey?: boolean,
notNull?: boolean,
unique?: boolean,
defaultValue?: string
}>,
ifNotExists?: boolean
}insert-record
Insert a new record into a table.
{
table: string,
data: Record<string, any> // Column-value pairs
}update-record
Update existing records.
{
table: string,
data: Record<string, any>, // Column-value pairs to update
where: string // WHERE clause
}delete-record
Delete records from a table.
{
table: string,
where: string // WHERE clause
}transaction
Execute multiple statements atomically.
{
statements: string[] // Array of SQL statements
}Prompts
analyze-schema
Generate comprehensive database analysis.
{
includeData?: boolean // Include sample data in analysis
}generate-query
Generate SQL queries from natural language requirements.
{
requirement: string, // What you want to query
tables?: string[] // Specific tables to focus on
}optimize-query
Get query optimization suggestions.
{
query: string, // SQL query to optimize
executionContext?: string // Additional context
}Database Features
Safety & Security
SQL Injection Protection: Uses parameterized queries
Query Validation: Validates SQL statements before execution
Read/Write Separation: Separate tools for read-only vs write operations
Transaction Support: Atomic execution of multiple statements
Performance Optimizations
Connection Pooling: Efficient database connection management
WAL Mode: Write-Ahead Logging for better performance
Prepared Statements: Cached and optimized query execution
Memory Optimization: Configured for optimal memory usage
Supported SQLite Features
All standard SQL data types (TEXT, INTEGER, REAL, BLOB)
Primary keys, foreign keys, unique constraints
Indexes and query optimization
Views and complex queries
Transactions and ACID compliance
PRAGMA statements for configuration
Examples
Query Data
SELECT u.username, COUNT(o.id) as order_count, SUM(o.total_amount) as total_spent
FROM users u
LEFT JOIN orders o ON u.id = o.user_id
GROUP BY u.id, u.username
ORDER BY total_spent DESC;Create Table
{
"name": "customers",
"columns": [
{"name": "id", "type": "INTEGER", "primaryKey": true},
{"name": "name", "type": "TEXT", "notNull": true},
{"name": "email", "type": "TEXT", "unique": true},
{"name": "created_at", "type": "DATETIME", "defaultValue": "CURRENT_TIMESTAMP"}
]
}Insert Record
{
"table": "customers",
"data": {
"name": "John Doe",
"email": "john@example.com"
}
}Transaction
{
"statements": [
"BEGIN TRANSACTION",
"INSERT INTO orders (user_id, total_amount) VALUES (1, 99.99)",
"INSERT INTO order_items (order_id, product_id, quantity, price) VALUES (last_insert_rowid(), 1, 2, 49.99)",
"UPDATE products SET stock_quantity = stock_quantity - 2 WHERE id = 1",
"COMMIT"
]
}Development
Local Development with npm link
The recommended way to develop and test locally:
# Setup for development
npm install
npm run build
npm link
# Now test your changes globally
mcp-server-sqlite --db ./example.db
# After making changes, rebuild and test
npm run build
mcp-server-sqlite --version
# Clean up when done
npm unlink -g mcp-server-sqliteScripts
npm run build: Build TypeScript to JavaScriptnpm run dev: Run in development mode with auto-reloadnpm start: Run the compiled servernpm run stdio: Run server with stdio transportnpm link: Link package globally for development testingnpm pack --dry-run: Preview what will be published
Project Structure
mcp-server-sqlite/
├── src/
│ └── index.ts # Main server implementation
├── examples/
│ ├── sample-data.sql # Sample database schema and data
│ └── setup-database.js # Database setup script
├── dist/ # Compiled JavaScript (after build)
├── package.json
├── tsconfig.json
├── README.md
└── .env.exampleError Handling
The server provides comprehensive error handling:
SQL Syntax Errors: Clear error messages for malformed queries
Constraint Violations: Detailed information about constraint failures
Connection Issues: Graceful handling of database connection problems
Permission Errors: Safe handling of unauthorized operations
Limitations
File System Access: Server can only access databases in allowed paths
Resource Limits: Large result sets may be truncated for performance
Concurrent Access: Uses SQLite's built-in locking mechanisms
Schema Changes: Some DDL operations may require server restart
Contributing
Fork the repository
Create a feature branch
Make your changes
Add tests if applicable
Submit a pull request
License
MIT License - see LICENSE file for details.
Support
For issues and questions:
Check the examples/ directory for usage patterns
Review the SQLite documentation for SQL syntax
Open an issue on the project repository
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/madnh/mcp-server-sqlite'
If you have feedback or need assistance with the MCP directory API, please join our Discord server