⚠️ WARNING: This software is designed for use with testing and development databases only. It makes no assurances that it won't break your database or cause data loss. DO NOT use this software against production databases. Always use dedicated test/development database instances when working with AI assistants.
A Model Context Protocol (MCP) server that provides secure database connectivity for MySQL and PostgreSQL databases. Enable AI assistants in Claude Code, Cursor, and other agentic editors to query, analyze, and interact with your databases safely.
- Multi-Database Support: Connect to MySQL and PostgreSQL databases
- Secure Access Control: Restrict access to specific databases and control connection limits
- Rich Schema Inspection: Get detailed table schemas, indexes, and metadata
- Query Execution: Run SELECT, INSERT, UPDATE, and DELETE operations
- Query Planning: View execution plans for performance optimization
- Paginated Data Access: Efficiently browse large datasets with pagination
go install github.com/jhoffmann/go-database-mcp@latest
Configure the database connection using a connection string.
Create a .env
file in your project directory:
# Basic connection
DB_CONNECTION_STRING=postgresql://myuser:mypassword@localhost:5432/myapp
# With SSL requirements
DB_CONNECTION_STRING=postgresql://myuser:mypassword@localhost:5432/myapp?sslmode=require
# Optional: Allow access to additional databases
# DB_ALLOWED_NAMES=testdb,devdb,staging
# Basic connection
DB_CONNECTION_STRING=mysql://myuser:mypassword@localhost:3306/myapp
# Remote database with SSL
DB_CONNECTION_STRING=mysql://myuser:mypassword@db.example.com:3306/myapp?sslmode=require
# Optional: Allow access to additional databases
# DB_ALLOWED_NAMES=testdb,devdb,staging
Variable | Description | Required | Default | Notes |
---|---|---|---|---|
DB_CONNECTION_STRING |
Full database connection URL (postgresql:// or mysql://) | Yes | - | Primary configuration method |
DB_SSL_MODE |
SSL/TLS mode (none , prefer , require ) |
No | prefer |
Can be set in connection string or separately |
DB_MAX_CONNS |
Maximum open connections | No | 10 | Connection pool setting |
DB_MAX_IDLE_CONNS |
Maximum idle connections | No | 5 | Connection pool setting |
DB_ALLOWED_NAMES |
Comma-separated list of additional allowed databases | No | - | Security setting |
OpenCode (https://opencode.ai)
Add the MCP server to your OpenCode configuration:
- Create or edit
~/.config/opencode/opencode.json
:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"database-mcp": {
"type": "local",
"command": ["go-database-mcp"],
"enabled": true,
"environment": {
"DB_CONNECTION_STRING": "postgresql://myuser:mypassword@localhost:5432/myapp"
}
}
}
}
- Restart OpenCode to load the MCP server
Claude Code (https://www.anthropic.com/claude-code)
Add the MCP server to your Claude Code configuration:
- Create or edit
~/.config/claude-code/mcp_servers.json
:
{
"mcpServers": {
"database": {
"command": "go-database-mcp",
"args": [],
"env": {
"DB_CONNECTION_STRING": "postgresql://myuser:mypassword@localhost:5432/myapp"
}
}
}
}
- Restart Claude Code to load the MCP server
Cursor IDE (https://cursor.com)
Configure the MCP server in your Cursor settings:
- Open Cursor Settings → Extensions → MCP
- Add a new MCP server configuration:
{
"name": "Database Server",
"command": "go-database-mcp",
"args": [],
"env": {
"DB_CONNECTION_STRING": "mysql://app_user:secure_password@localhost:3306/ecommerce"
}
}
For other MCP-compatible tools, configure the server with:
- Command:
go-database-mcp
(assuming it's in your PATH aftergo install
) - Transport: stdio
- Environment: Set
DB_CONNECTION_STRING
with your database connection URL
Once connected, the following tools become available to your AI assistant:
database_connection_info
- Get current database connection detailsdatabase_list_databases
- List all available databasesdatabase_list_tables
- List tables in the current databasedatabase_describe_table
- Get detailed schema for a specific tabledatabase_get_table_data
- Retrieve paginated table datadatabase_query
- Execute SQL queries with optional parametersdatabase_explain_query
- Get query execution plans
Schema Exploration:
- "What tables are in my database?"
- "Describe the structure of the users table"
- "Show me the indexes on the orders table"
Data Analysis:
- "What are the top 10 customers by total order value?"
- "Show me user registration trends over the last 6 months"
- "Find all orders placed in the last week"
Query Optimization:
- "Explain the execution plan for this slow query"
- "How can I optimize this JOIN operation?"
- "What indexes should I add to improve performance?"
- Database Access Control: Use
DB_ALLOWED_NAMES
to restrict which databases can be accessed - User Permissions: Create database users with minimal required permissions
- Connection Limits: Set appropriate
DB_MAX_CONNS
to prevent connection exhaustion - SSL/TLS: Always use encrypted connections when available (
DB_SSL_MODE=require
). Available modes:none
(no encryption, default),prefer
(attempt SSL, fallback to unencrypted),require
(mandatory SSL) - Environment Variables: Store sensitive credentials in environment variables, not in code