Skip to main content
Glama
xza-m

Claude Multi-Database MCP Server

by xza-m

Claude Multi-Database MCP Server

English | δΈ­ζ–‡

A production-ready MCP (Model Context Protocol) server that enables Claude to query multiple heterogeneous databases with automatic schema discovery and intelligent table search.

🌟 Features

  • πŸ”Œ Multi-Database Support: PostgreSQL, ClickHouse, Alibaba Cloud MaxCompute

  • πŸ” Smart Schema Discovery: Automatically fetches table structures and column comments from databases

  • πŸ”Ž Intelligent Search: Cross-database table search based on keywords

  • πŸ›‘οΈ Security First: SQL validation, read-only access, automatic LIMIT enforcement

  • ⚑ Performance Optimized: Metadata caching, connection pooling

  • πŸ“Š Cross-Source Analysis: Query and analyze data across multiple databases

  • 🎯 Zero Maintenance: No manual schema catalog needed

πŸ“‹ Prerequisites

  • Python 3.8+

  • Access to one or more supported databases

  • Claude Desktop or Anthropic API access

πŸš€ Quick Start

1. Installation

# Clone the repository
git clone https://github.com/yourusername/claude-multi-db-mcp.git
cd claude-multi-db-mcp

# Install dependencies
pip install -r requirements.txt

# Or install as a package
pip install -e .

2. Configuration

# Copy configuration template
cp config/database_config.json.example config/database_config.json

# Edit configuration with your database credentials
nano config/database_config.json

Example configuration:

{
  "datasources": {
    "business_pg": {
      "type": "postgresql",
      "host": "your-host.example.com",
      "port": 5432,
      "database": "business_db",
      "user": "readonly_user",
      "password": "your_password"
    }
  }
}

3. Create Read-Only Users

For security, create read-only database users:

# PostgreSQL
psql -h your-host -U admin -d your_db -f scripts/create_readonly_users.sql

# ClickHouse
clickhouse-client --host your-host --multiquery < scripts/create_readonly_users.sql

4. Test Connection

python scripts/test_connection.py

5. Configure Claude Desktop

Edit your Claude Desktop configuration:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "database-query": {
      "command": "python",
      "args": ["/absolute/path/to/claude-multi-db-mcp/src/mcp_server.py"]
    }
  }
}

Restart Claude Desktop.

πŸ’‘ Usage Examples

Once configured, you can chat with Claude naturally:

Example 1: Search for Tables

You: "Find tables related to users"

Claude will:

  1. Call search_tables(keyword="users")

  2. Return matching tables from all databases

  3. Show table locations and descriptions

Example 2: View Table Structure

You: "What columns does the users table have in business_pg?"

Claude will:

  1. Call get_table_metadata(source="business_pg", table="users")

  2. Display all columns with names, types, and comments

Example 3: Execute Analysis

You: "Count new users by channel for last month"

Claude will:

  1. Search for relevant tables

  2. Check table structure

  3. Generate SQL query

  4. Execute and analyze results

Example 4: Cross-Database Analysis

You: "Compare product data in local_pg with click data in clickhouse to find products with high views but low conversion"

Claude will:

  1. Query product list from local_pg

  2. Query click and conversion data from clickhouse

  3. Join and analyze in memory

  4. Provide insights and recommendations

πŸ› οΈ Available MCP Tools

1. query_database

Execute SQL queries on specified datasource.

{
  "source": "business_pg",
  "sql": "SELECT * FROM users WHERE created_at > '2024-01-01' LIMIT 10"
}

2. get_table_metadata

Get table structure and column comments.

{
  "source": "business_pg",
  "table_name": "users"  # Optional, omit to list all tables
}

3. search_tables

Search tables by keyword across all datasources.

{
  "keyword": "order",
  "sources": ["business_pg", "clickhouse"]  # Optional
}

4. list_datasources

List all available datasources.

{}

πŸ“– Documentation

πŸ§ͺ Testing

# Run all tests
python -m pytest tests/

# Run specific test
python -m pytest tests/test_query_tool.py

# Test with coverage
python -m pytest --cov=src tests/

πŸ”’ Security

  • βœ… Only read-only database users

  • βœ… SQL validation blocks DDL/DML operations

  • βœ… Automatic LIMIT enforcement

  • βœ… Query logging and audit trail

  • βœ… Sensitive data filtered through database views

See Security Best Practices for details.

🀝 Contributing

Contributions are welcome! Please read our Contributing Guide first.

  1. Fork the repository

  2. Create your feature branch (git checkout -b feature/amazing-feature)

  3. Commit your changes (git commit -m 'Add amazing feature')

  4. Push to the branch (git push origin feature/amazing-feature)

  5. Open a Pull Request

πŸ“ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

πŸ“¬ Contact

πŸ—ΊοΈ Roadmap

  • Add MySQL support

  • Add MongoDB support

  • Query result visualization

  • Query template library

  • Redis result caching

  • Multi-user permission system

  • Web UI for management


Made with ❀️ for the Claude community

-
license - not tested
-
quality - not tested
D
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/xza-m/claude-multi-db-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server