db-mcp

chiraggahujaa/db-mcp

3.2

If you are the rightful owner of db-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.

A comprehensive Model Context Protocol (MCP) server for MySQL database operations, designed for AI agents and applications that need to interact with MySQL databases safely and efficiently.

Tools
5
Resources
0
Prompts
0

Multi-Database MCP Server

A Model Context Protocol (MCP) server supporting MySQL, PostgreSQL, SQLite, and Supabase with fault-tolerant architecture and security features.

Features

Database Support

  • MySQL/MariaDB: Full SQL support with connection pooling
  • PostgreSQL: Native support using Bun.sql with JSON/JSONB
  • SQLite: File-based and in-memory databases
  • Supabase: REST API integration with real-time capabilities

Security & Reliability

  • SQL injection detection and query validation
  • Rate limiting and access controls
  • Independent connection management with auto-retry
  • Health monitoring with graceful degradation
  • Audit logging and security reporting

Prerequisites

Install Bun

This project requires Bun runtime. Install it using:

macOS/Linux:

curl -fsSL https://bun.sh/install | bash

Windows:

powershell -c "irm bun.sh/install.ps1 | iex"

After installation, restart your terminal and verify with:

bun --version

Setup

1. Install Dependencies

bun install

2. Configure Environment

Create .env file with your database connections:

cp .env.example .env
# Edit .env with your database credentials

3. Start Server

bun run start

4. Claude Desktop Integration

Add to your Claude Desktop MCP settings:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %AppData%\Claude\claude_desktop_config.json (or C:\Users\{username}\AppData\Roaming\Claude\claude_desktop_config.json)

{
  "mcpServers": {
    "db-mcp": {
      "command": "/Users/{user}/.bun/bin/bun", // Use full path - run `which bun` to get your specific path
      "args": ["run", "start"],
      "cwd": "/path/to/your/db-mcp",
      "env": {
        "NODE_ENV": "production",
        "DEFAULT_DATABASE": "db_1",
        "READ_ONLY_MODE": "false",
        "MAX_QUERY_RESULTS": "1000",
        "DB_TYPE_1": "mysql",
        "DB_HOST_1": "localhost",
        "DB_PORT_1": "3306",
        "DB_USER_1": "root",
        "DB_PASSWORD_1": "your_password",
        "DB_NAME_1": "your_database"
      }
    }
  }
}

Note: Replace the environment variables with your actual database credentials. You can configure multiple databases using the numbered pattern (DB_TYPE_2, DB_HOST_2, etc.).

Restart Claude Desktop to activate the database server.

Configuration

Uses numbered environment variables (DB_TYPE_1, DB_HOST_1, etc.) for multi-database configuration:

# MySQL
DB_TYPE_1=mysql
DB_HOST_1=localhost
DB_PORT_1=3306
DB_USER_1=username
DB_PASSWORD_1=password
DB_NAME_1=database

# PostgreSQL
DB_TYPE_2=postgresql
DB_CONNECTION_STRING_2=postgresql://user:pass@host:5432/dbname

# SQLite
DB_TYPE_3=sqlite
DB_FILE_3=/path/to/database.db

# Supabase
DB_TYPE_4=supabase
DB_PROJECT_URL_4=https://your-project.supabase.co
DB_ANON_KEY_4=your_anon_key

# Global settings
DEFAULT_DATABASE=db_1
READ_ONLY_MODE=false
MAX_QUERY_RESULTS=1000

Usage

# Start server
bun run start

# Development mode
bun run dev

Basic Operations

// Switch databases
await switchEnvironment({ databaseId: 'db_2' })

// List tables
await listTables({ databaseId: 'db_1' })

// Query data
await selectData({
  table: 'users',
  columns: ['id', 'name'],
  where: 'status = ?',
  params: ['active'],
  limit: 50
})

Architecture

  • Fault Tolerance: Independent connections with auto-retry and health monitoring
  • Database Factory: Common interface for all database types
  • Security: Query validation, rate limiting, and audit logging

Development

# Add new database
DB_TYPE_3=postgresql
DB_HOST_3=localhost
# Restart server - auto-discovered as db_3

# Switch context
switch_environment db_3

See for detailed configuration examples.