mcp-server-sqlite
# mcp-server-sqlite
[](https://www.npmjs.com/package/mcp-sqlite-server)
[](https://www.npmjs.com/package/mcp-sqlite-server)
[](https://github.com/ofershap/mcp-server-sqlite/actions/workflows/ci.yml)
[](https://www.typescriptlang.org/)
[](https://opensource.org/licenses/MIT)
Query SQLite databases, inspect schemas, and explain queries from your AI assistant. Read-only by default for safety.
```bash
npx mcp-sqlite-server
```
> Works with Claude Desktop, Cursor, VS Code Copilot, and any MCP client. Reads local `.db` files, no auth needed.

<sub>Demo built with <a href="https://github.com/ofershap/remotion-readme-kit">remotion-readme-kit</a></sub>
## Why
SQLite is everywhere. It's the default database for mobile apps, Electron apps, local-first tools, and increasingly for server-side projects too (Turso, Cloudflare D1, Bun's built-in SQLite). The official MCP reference includes a basic SQLite server, but it's Python-only. If you're working in a TypeScript/Node.js environment and want to ask your assistant "what tables are in this database?" or "run this query and show me the results," this server handles that. It opens the database read-only by default so you can explore safely, and you can opt into write mode when you need it.
## Tools
| Tool | What it does |
| ---------------- | ------------------------------------------------------------------------ |
| `query` | Execute SQL (SELECT, PRAGMA, EXPLAIN, WITH). Returns results as a table. |
| `schema` | Get full schema: all tables with columns, types, and row counts. |
| `table_info` | Detailed info for a single table: columns, constraints, row count. |
| `explain` | Run EXPLAIN QUERY PLAN to optimize queries. |
| `list_databases` | List .db, .sqlite, .sqlite3 files in a directory. |
## Quick Start
### Cursor
Add to `.cursor/mcp.json`:
```json
{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": ["mcp-sqlite-server"]
}
}
}
```
### Claude Desktop
Add to `claude_desktop_config.json` (macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"sqlite": {
"command": "npx",
"args": ["mcp-sqlite-server"]
}
}
}
```
### VS Code
Configure the MCP server in your VS Code settings to run `npx mcp-sqlite-server`.
## Example prompts
- "Show me the schema of my database at ./data.db"
- "Query the users table: SELECT \* FROM users LIMIT 10"
- "Explain the query plan for this complex join"
- "What tables are in this database?"
- "Find all .db files in the current directory"
## Safety
Read-only by default. The `query` tool accepts only SELECT, PRAGMA, EXPLAIN, and WITH in readonly mode. Set `readonly=false` in the tool args to enable INSERT, UPDATE, DELETE, etc.
## Development
```bash
npm install
npm run typecheck
npm run build
npm test
npm run format
npm run lint
```
## See also
More MCP servers and developer tools on my [portfolio](https://gitshow.dev/ofershap).
## Author
[](https://gitshow.dev/ofershap)
[](https://linkedin.com/in/ofershap)
[](https://github.com/ofershap)
---
<sub>README built with [README Builder](https://ofershap.github.io/readme-builder/)</sub>
## License
MIT © 2026 Ofer Shapira
TDQS
Scored across 5 tools
The tools have some overlap that could cause confusion, particularly between 'schema' and 'table_info', which both provide table structure information. However, 'explain', 'list_databases', and 'query' are clearly distinct in purpose, and descriptions help differentiate the overlapping tools.
The naming is mostly consistent with a verb_noun pattern (e.g., 'list_databases', 'table_info'), but 'explain' and 'query' deviate as standalone verbs without nouns. This minor inconsistency does not severely impact readability or predictability.
With 5 tools, the server is well-scoped for SQLite database operations. Each tool serves a clear and necessary function, such as listing databases, querying, and inspecting schemas, making the count appropriate without being too sparse or bloated.
The toolset covers core SQLite operations like listing databases, querying, and schema inspection, with minor gaps such as the lack of write operations (e.g., insert, update, delete) and database management tools (e.g., create, delete). Agents can work around these gaps for read-only use cases.