MCP server for database operations. Supports PostgreSQL, MySQL, and SQLite with a unified interface and multi-database architecture.
- Node.js >= 18
- At least one of: PostgreSQL, MySQL, or SQLite
npm installThis server supports managing multiple databases simultaneously. Instead of environment variables, databases are configured in databases.json:
cp databases.example.json databases.json
# Edit databases.json with your connectionsdatabases.json structure:
| Field | Description |
|---|---|
name |
Unique identifier for the database |
description |
Optional description |
connectionString |
Connection string (format depends on dbType) |
dbType |
Database type: postgres, mysql, or sqlite |
enabled |
Optional boolean, defaults to true. Set false to disable |
readonly |
Optional boolean, defaults to false. Block all write operations |
Example:
[
{
"name": "production",
"description": "Main production database",
"connectionString": "postgresql://user:pass@prod-host:5432/prod_db",
"dbType": "postgres",
"enabled": true
},
{
"name": "mysql_prod",
"description": "MySQL production database",
"connectionString": "mysql://user:pass@mysql-host:3306/prod_db",
"dbType": "mysql",
"enabled": false
},
{
"name": "local_sqlite",
"description": "Local SQLite file",
"connectionString": "/home/user/data/app.db",
"dbType": "sqlite",
"enabled": false
}
]All MCP tools now require a database parameter specifying which database to operate on.
| Variable | Description |
|---|---|
MIGRATIONS_ENABLED |
Auto-record DDL changes to migration files (default: true) |
MIGRATIONS_DIR |
Migrations directory (default: ./migrations) |
DATABASE_URL is no longer needed - all connections are defined in databases.json.
npm start
# or
npx tsx src/index.tsReplace PATH_TO_PROJECT with the absolute path to this project (e.g. /home/user/postgresql-mcp). When the project is your current workspace, VS Code supports ${workspaceFolder}.
Add to Cursor MCP settings (.cursor/mcp.json or Settings → MCP):
{
"mcpServers": {
"database": {
"command": "npx",
"args": ["tsx", "PATH_TO_PROJECT/src/index.ts"]
}
}
}Add a local stdio server via CLI:
claude mcp add --transport stdio database -- npx tsx PATH_TO_PROJECT/src/index.tsOr add to .mcp.json in the project root (for project scope):
{
"mcpServers": {
"database": {
"command": "npx",
"args": ["tsx", "PATH_TO_PROJECT/src/index.ts"]
}
}
}Add to .vscode/mcp.json (workspace) or user mcp.json (Command Palette → MCP: Open User Configuration):
{
"servers": {
"database": {
"type": "stdio",
"command": "npx",
"args": ["tsx", "PATH_TO_PROJECT/src/index.ts"]
}
}
}Add to settings.json (Command Palette → Preferences: Open User Settings):
{
"context_servers": {
"database": {
"source": "custom",
"command": "npx",
"args": ["tsx", "PATH_TO_PROJECT/src/index.ts"]
}
}
}Add to opencode.json or opencode.jsonc in the project root:
{
"mcp": {
"database": {
"type": "local",
"command": ["npx", "tsx", "PATH_TO_PROJECT/src/index.ts"],
"enabled": true
}
}
}db_list_databases- List all configured databases (with enabled status)db_get_database- Get details of a specific database
Important: All tools now require a database parameter to specify which database to operate on. Example: { "database": "production", "schema": "public" }
db_list_schemas- List schemasdb_create_schema- Create schemadb_get_schema- Get schema detailsdb_alter_schema- Rename schemadb_drop_schema- Drop schema
db_list_tables- List tablesdb_create_table- Create tabledb_get_table- Get table detailsdb_alter_table- Alter tabledb_drop_table- Drop table
db_list_*/db_create_*/db_drop_*for each type
db_query- Execute SELECTdb_insert- Insert rowsdb_update- Update rowsdb_delete- Delete rowsdb_execute_sql- Execute arbitrary SQL
db_list_roles- List rolesdb_create_role- Create roledb_create_user- Create user (role with LOGIN)db_alter_role- Alter roledb_drop_role- Drop roledb_grant_role_membership- Grant role to roledb_revoke_role_membership- Revoke role membershipdb_grant_schema- Grant USAGE/CREATE on schemadb_revoke_schema- Revoke schema privilegesdb_grant_table- Grant SELECT/INSERT/UPDATE/DELETE on tabledb_revoke_table- Revoke table privilegesdb_grant_all_tables_in_schema- Grant on all tables in schemadb_revoke_all_tables_in_schema- Revoke on all tables in schemadb_list_grants- List grants for a role
db_list_migrations- List applied and pending migrationsdb_apply_migration- Apply a single migration by filenamedb_apply_all_migrations- Apply all pending migrations (sync DB)
Each DDL change (create schema, table, index, etc.) is automatically recorded to migrations/ when MIGRATIONS_ENABLED=true.
The database-mcp skill helps AI models use this MCP correctly. It works in Cursor, Claude Code, OpenCode, Antigravity, and Gemini CLI.
npm run setup:skillsThis creates symlinks so the skill is discoverable in each platform's expected path. Canonical source: skills/database-mcp/.
npm run build