chiraggahujaa/db-mcp
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.
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.