SQL Query Optimizer
Analyzes SQL queries for performance issues, provides optimization suggestions with automated rewriting, and recommends indexes across multiple database dialects (PostgreSQL, MySQL, Oracle, SQL Server).
README
SQL Query Optimizer MCP Server
A powerful Model Context Protocol (MCP) server that analyzes, optimizes, and suggests indexes for SQL queries across multiple dialects (PostgreSQL, MySQL, Oracle, SQL Server). Built with Python and sqlglot.
Features
Advanced Query Analysis
- Complexity Scoring: Calculates a heuristic complexity score (1-10) based on joins, subqueries, and set operations.
- Detailed Breakdown: Provides a granular breakdown of what contributes to the complexity.
- Anti-Pattern Detection: Identifies performance killers like:
SELECT *usage- Implicit type casts (e.g.,
id = '123') - Potential N+1 queries (LIMIT without ORDER BY)
- NULL pitfalls in
NOT INsubqueries - Join explosions (> 3 joins)
Query Optimization
- Automated Rewriting: Uses
sqlglotto apply optimization rules like predicate pushdown and simplification. - Alternative Suggestions: Generates alternative query forms (e.g., formatted only, CTE refactoring) alongside the main optimization.
- Cost Estimation: Estimates the structural complexity reduction (e.g., "~30%").
- DDL Generation: Generates
CREATE INDEXstatements for suggested indexes.
Explain Plan Visualization
- ASCII Tree View: Visualizes
EXPLAINoutput as an easy-to-read ASCII tree. - Plan Parsing: Extracts scans, costs, and rows from Postgres and MySQL plans.
Index Suggestions
- Composite Indexes: Suggests multi-column indexes for
ANDconditions. - Covering Indexes: Recommends extending indexes to include selected columns (Index-Only Scans).
- Smart Prioritization: Ranks suggestions by impact (Critical, High, Medium, Low).
Installation
-
Clone the repository:
git clone https://github.com/yourusername/mcp-sql-optimizer.git cd mcp-sql-optimizer -
Create a virtual environment:
python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate -
Install dependencies:
pip install -r requirements.txt
Configuration
Add the server to your MCP client configuration (e.g., claude_desktop_config.json):
{
"mcpServers": {
"sql-optimizer": {
"command": "C:\\path\\to\\venv\\Scripts\\python.exe",
"args": [
"C:\\path\\to\\mcp-sql-optimizer\\server.py"
],
"env": {
"PYTHONPATH": "C:\\path\\to\\mcp-sql-optimizer"
}
}
}
}
Note: On Windows, use double backslashes \\ in paths. The PYTHONPATH is crucial for the server to find its internal modules.
š³ Docker (Recommended)
Run the server in a container to avoid environment issues.
-
Build the image:
docker build -t mcp-sql-optimizer . -
Configure Claude Desktop:
{ "mcpServers": { "sql-optimizer": { "command": "docker", "args": [ "run", "-i", "--rm", "mcp-sql-optimizer" ] } } }
Usage
The server exposes the following MCP tools:
analyze_query
Analyzes a SQL query for performance issues, complexity, and anti-patterns. Optionally accepts an explain_plan string to visualize the execution plan.
Input:
{
"sql": "SELECT * FROM orders WHERE user_id = '123'",
"dialect": "postgres"
}
optimize_query
Rewrites the query to be more performant and provides alternative suggestions.
Input:
{
"sql": "SELECT * FROM users WHERE id IN (SELECT user_id FROM orders)",
"dialect": "postgres"
}
suggest_indexes
Suggests indexes to improve query performance, including DDL statements.
Input:
{
"sql": "SELECT * FROM users WHERE region_id = 5 AND status = 'active'",
"dialect": "postgres"
}
Project Structure
mcp-sql-optimizer/
āāā server.py # Main MCP server entry point
āāā core/
ā āāā analyzer.py # Performance & complexity analysis
ā āāā rewriter.py # Query optimization & alternatives
ā āāā indexer.py # Index suggestion logic
ā āāā explain_parser.py # Explain plan parsing & visualization
ā āāā parser.py # SQL parsing wrapper
ā āāā dialect_detector.py# Dialect inference
āāā utils/ # Helper utilities
āāā tests/ # Unit tests
Development
Run the demo client to test features without an MCP client:
python demo_client.py
Run unit tests:
python -m unittest discover tests
License
MIT
Recommended Servers
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.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.