Claude Multi-Database MCP Server

Claude Multi-Database MCP Server

An MCP server that enables Claude to query multiple databases (PostgreSQL, ClickHouse, MaxCompute) with automatic schema discovery and intelligent table search.

Category
Visit Server

README

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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured