DBA MCP Server

$npx @grec0/dba-mcp --local sqlite://data.db --prod postgres://user:pass@host/db
README.md

Multi-vendor Database Tool for DevOps, Migrations & Knowledge Management

DBA MCP Server 🚀

Multi-vendor Database Tool for DevOps, Migrations & Knowledge Management

dba-mcp is a Model Context Protocol (MCP) server designed to enable LLMs (like Claude, ChatGPT, or local models) to interact with, manage, and migrate SQL databases directly. It operates over stdio, making it ideal for integration with tools like Claude Desktop, Cursor, or any MCP client.

It combines "Infrastructure as Code" principles with persistent knowledge management, allowing AI agents to save specific context about databases (Governance, Business Rules, Schema Explanations) and recall it on demand.


🌟 Features

  • Multi-Vendor Support: Connect to Oracle, PostgreSQL, MySQL/MariaDB, SQL Server, and SQLite simultaneously.
  • Hybrid Configuration:
    • Stateless: Inject connections via CLI arguments (--[id] [connection_string]).
    • Persistent: Save connections permanently using the save_connection tool (stored in local SQLite).
  • Context & Knowledge Management 🧠:
    • Save AI-generated context (Markdown) about a database (e.g., "This endpoint creates users based on table X").
    • Recall context automatically to answer complex questions about specific databases.
  • Schema Intelligence:
    • Compare schemas between different engines.
    • Generate DDL scripts (CREATE, ALTER) to synchronize structures.
  • Data Migration:
    • migrate_data: Move data between connections with optimized bulk inserts.
    • replicate_database: Auto-Magic cloning of an entire database (Schema + Data).

📦 Installation

Via NPX (Recommended)

You can run it directly without installing. Connections defined in CLI are loaded alongside any persistent connections saved previously.

npx @grec0/dba-mcp --local sqlite://data.db --prod postgres://user:pass@host/db

Local Installation

git clone https://github.com/grecoLab/mcp-dba.git
cd mcp-dba
npm install
npm run build

🛠️ Configuration & Persistence

1. CLI Arguments (Ephemeral/Stateless)

Ideal for CI/CD or temporary sessions. Format: --[id] [connection_string]

/* claude_desktop_config.json */
{
  "mcpServers": {
    "dba-tools": {
      "command": "npx",
      "args": [
        "-y",
        "@grec0/dba-mcp",
        "--staging", "mysql://root:pass@localhost:3306/staging_db"
      ]
    }
  }
}

2. Persistent Storage (Stateful)

You can use tools to save connections. They are stored in an internal SQLite database (.dba-mcp/storage.db) within the running directory.

  • Save: save_connection
  • Remove: remove_connection
  • List: list_connections (Shows source: 💾=Saved, 🖥️=CLI)

🧰 Available Tools for LLMs

Once connected, the LLM will have access to these tools:

Connection & Context Management

Tool Description
list_connections Lists all active connections. Icons indicate status: 💾 Saved to Disk 🖥️ From CLI Args 📝 Context Available
save_connection Saves a new connection URL permanently.
remove_connection Removes a stored connection.
save_database_context Saves AI-generated markdown documentation for a specific connection (Governance, Business Logic).
get_database_context Retrieves the stored markdown context for a connection.

Database Operations

Tool Description
inspect_schema Explore the database structure. Pass tableName to see columns/PKs, or empty to list all tables.
sql_query Execute a read-only SQL query on a specific connection.
generate_migration_ddl Compares two schemas (Source -> Target) and generates the SQL DDL commands to make Target match Source.
migrate_data Migrates specific tables from Source to Target using bulk inserts.
replicate_database 🔥 Power Tool: Clones an ENTIRE database. Scans source, creates tables in target, and migrates all data automatically.

🧠 Supported Connection Strings

  • SQLite: sqlite://path/to/file.db
  • PostgreSQL: postgres://user:pass@host:5432/db
  • MySQL: mysql://user:pass@host:3306/db
  • Oracle: oracle://user:pass@host:1521/service
  • SQL Server: sqlserver://user:pass@host:1433/db

💻 Development & Release

Build

npm run build

This runs TypeScript compiler and ensures the binary is executable (shx chmod +x).

Release

To version and publish (follows Semantic Versioning):

npm run release:patch  # 0.0.1 -> 0.0.2
npm run release:minor  # 0.1.0 -> 0.2.0
npm run release:major  # 1.0.0 -> 2.0.0

Note: These scripts automatically push to Git and publish to NPM.

Inspector

To debug the MCP server communication visually:

npm run inspector -- --local sqlite://test.db

🐳 Docker

A multi-stage Dockerfile is included for containerized deployments.

docker

Tools (10)

list_connectionsLists all active connections including saved, CLI-based, and those with context available.
save_connectionSaves a new connection URL permanently to the local storage.
remove_connectionRemoves a stored connection from the persistent storage.
save_database_contextSaves AI-generated markdown documentation for a specific connection regarding governance or business logic.
get_database_contextRetrieves the stored markdown context for a specific database connection.
inspect_schemaExplore the database structure; lists all tables or columns/PKs for a specific table.
sql_queryExecute a read-only SQL query on a specific database connection.
generate_migration_ddlCompares two schemas and generates the SQL DDL commands to make the target match the source.
migrate_dataMigrates specific tables from a source connection to a target using optimized bulk inserts.
replicate_databaseClones an entire database by scanning source, creating tables in target, and migrating all data.

Configuration

claude_desktop_config.json
{
  "mcpServers": {
    "dba-tools": {
      "command": "npx",
      "args": [
        "-y",
        "@grec0/dba-mcp",
        "--staging", "mysql://root:pass@localhost:3306/staging_db"
      ]
    }
  }
}

Try it

List all my active database connections and show which ones have saved context.
Inspect the schema of the 'users' table on my staging connection.
Compare the schema of my local SQLite database with the production PostgreSQL database and generate the DDL to sync them.
Replicate the entire 'sales_db' from MySQL to my local PostgreSQL instance.
Save this explanation of our user permission logic as context for the 'prod' database.

Frequently Asked Questions

What are the key features of DBA MCP Server?

Multi-Vendor Support for Oracle, PostgreSQL, MySQL, SQL Server, and SQLite.. Persistent Knowledge Management to save and recall AI-generated context about business rules.. Schema Intelligence for comparing structures and generating synchronization DDL scripts.. Auto-Magic Database Replication for cloning entire databases including schema and data..

What can I use DBA MCP Server for?

DevOps engineers migrating data between different SQL engines (e.g., MySQL to PostgreSQL).. AI agents needing to remember complex business rules and table relationships across sessions.. Developers needing to quickly clone production schemas to local environments for testing.. Database administrators performing schema audits and generating migration scripts..

How do I install DBA MCP Server?

Install DBA MCP Server by running: npx @grec0/dba-mcp --local sqlite://data.db --prod postgres://user:pass@host/db

What MCP clients work with DBA MCP Server?

DBA MCP Server works with any MCP-compatible client including Claude Desktop, Claude Code, Cursor, and other editors with MCP support.

Use DBA MCP Server with Conare

Manage MCP servers visually, upload persistent context, and never start from zero with Claude Code & Codex.

Try Free