Skip to content

Repository files navigation

Database MCP Server

MCP server for database operations. Supports PostgreSQL, MySQL, and SQLite with a unified interface and multi-database architecture.

Requirements

  • Node.js >= 18
  • At least one of: PostgreSQL, MySQL, or SQLite

Installation

npm install

Configuration

Multi-Database Support

This 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 connections

databases.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.

Environment Variables

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.

Usage

Run the server

npm start
# or
npx tsx src/index.ts

MCP configuration by editor

Replace 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}.

Cursor

Add to Cursor MCP settings (.cursor/mcp.json or Settings → MCP):

{
  "mcpServers": {
    "database": {
      "command": "npx",
      "args": ["tsx", "PATH_TO_PROJECT/src/index.ts"]
    }
  }
}

Claude Code

Add a local stdio server via CLI:

claude mcp add --transport stdio database -- npx tsx PATH_TO_PROJECT/src/index.ts

Or add to .mcp.json in the project root (for project scope):

{
  "mcpServers": {
    "database": {
      "command": "npx",
      "args": ["tsx", "PATH_TO_PROJECT/src/index.ts"]
    }
  }
}

VS Code

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"]
    }
  }
}

Zed

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"]
    }
  }
}

OpenCode

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
    }
  }
}

Tools

Databases

  • 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" }

Schemas

  • db_list_schemas - List schemas
  • db_create_schema - Create schema
  • db_get_schema - Get schema details
  • db_alter_schema - Rename schema
  • db_drop_schema - Drop schema

Tables

  • db_list_tables - List tables
  • db_create_table - Create table
  • db_get_table - Get table details
  • db_alter_table - Alter table
  • db_drop_table - Drop table

Indexes, Views, Sequences, Triggers, Functions, Extensions

  • db_list_* / db_create_* / db_drop_* for each type

Data

  • db_query - Execute SELECT
  • db_insert - Insert rows
  • db_update - Update rows
  • db_delete - Delete rows
  • db_execute_sql - Execute arbitrary SQL

Auth (roles and permissions)

  • db_list_roles - List roles
  • db_create_role - Create role
  • db_create_user - Create user (role with LOGIN)
  • db_alter_role - Alter role
  • db_drop_role - Drop role
  • db_grant_role_membership - Grant role to role
  • db_revoke_role_membership - Revoke role membership
  • db_grant_schema - Grant USAGE/CREATE on schema
  • db_revoke_schema - Revoke schema privileges
  • db_grant_table - Grant SELECT/INSERT/UPDATE/DELETE on table
  • db_revoke_table - Revoke table privileges
  • db_grant_all_tables_in_schema - Grant on all tables in schema
  • db_revoke_all_tables_in_schema - Revoke on all tables in schema
  • db_list_grants - List grants for a role

Migrations

  • db_list_migrations - List applied and pending migrations
  • db_apply_migration - Apply a single migration by filename
  • db_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.

Agent Skill (multi-platform)

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:skills

This creates symlinks so the skill is discoverable in each platform's expected path. Canonical source: skills/database-mcp/.

Build

npm run build

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages