Skip to main content
Glama
prateeik

MCP Database Performance Analyzer

by prateeik

MCP Database Performance Analyzer

Autonomous MCP server for SQL schema analysis, data generation, benchmarking and optimization.

A production-ready Model Context Protocol (MCP) server that acts as an intelligent SQL performance analysis and optimization assistant. Point it at a SQL dump, and it will parse the schema, populate a database with realistic relational data at scale, benchmark queries, identify bottlenecks, explain root causes, and generate optimized SQL and indexing recommendations.


✨ Features

Category

Capabilities

Schema Analysis

Parse SQL dumps · Detect PK/FK/indexes/views/procedures/triggers · Relationship graph · Missing FK indexes

Data Generation

6 business domains · 10k–10M rows · Referential integrity · Deterministic seed

Query Execution

SELECT/JOIN/CTE/Window functions · Execution metrics · EXPLAIN analysis

Benchmarking

P50/P95/P99 latencies · QPS · Concurrent workloads · Before/after comparison

Optimization

Anti-pattern detection · Query rewriting · Index recommendations · Health score (0–100)

Reporting

JSON · Markdown · HTML · CSV · PDF · ERD diagrams


Related MCP server: MCP Database Server

🚀 Quick Start

Prerequisites

  • Node.js 20+

  • MySQL 8.0 (or use Docker)

# Start MySQL + MCP server
docker compose up -d

# Wait for MySQL to be healthy
docker compose logs -f mcp-server

Option 2: Local

# Install dependencies
npm install

# Copy and configure environment
cp .env.example .env
# Edit .env with your MySQL credentials

# Build
npm run build

# Run
npm start

🔧 MCP Tools

Tool

Description

load_schema

Parse a SQL dump file and extract the full schema model

analyze_schema

Analyze relationships, ERD, missing FK indexes, circular dependencies

create_database

Execute all DDL in dependency order and validate creation

generate_test_data

Preview generated data without inserting (dry run)

populate_database

Insert realistic relational data at specified scale

execute_query

Execute a SQL query with metrics capture

benchmark_query

Benchmark a query with P50/P95/P99 and QPS

benchmark_database

Run a mixed workload simulation

analyze_execution_plan

EXPLAIN + EXPLAIN ANALYZE with insights

detect_slow_queries

Classify queries and detect root causes

recommend_indexes

Detect missing, duplicate, unused, redundant indexes

optimize_query

Anti-pattern detection + query rewriting

compare_queries

Side-by-side benchmark with improvement %

generate_report

Full report in JSON/Markdown/HTML/CSV/PDF

reset_database

Truncate or recreate the database


📋 Example Workflow

1. load_schema(sql: "<content of dump.sql>")
2. analyze_schema()
3. create_database()
4. populate_database(domain: "ecommerce", datasetSize: "100k")
5. benchmark_query(sql: "SELECT * FROM orders JOIN customers ON ...")
6. analyze_execution_plan(sql: "...")
7. detect_slow_queries(queries: [...])
8. recommend_indexes()
9. optimize_query(sql: "...")
10. generate_report(formats: ["html", "pdf"])

🗄 Database Support

Database

Status

MySQL 8.0

✅ Full support (primary)

PostgreSQL

🔶 Stub (core ops work, advanced metrics pending)

SQLite

✅ Full support (used for tests)

SQL Server

📋 Planned


🏢 Business Domains

The data generator supports 6 business domain profiles:

  • ecommerce — customers, products, orders, payments, reviews

  • erp — suppliers, purchase orders, inventory, warehouses, accounts

  • crm — contacts, leads, deals, activities, campaigns

  • hospital — patients, doctors, appointments, prescriptions, diagnoses

  • banking — accounts, transactions, loans, cards, branches

  • hr — employees, departments, positions, payroll, performance reviews


🔍 Optimization Detectors

Anti-Pattern

Detection

Auto-Fix

SELECT *

Large OFFSET pagination

Non-sargable predicates

Leading wildcard LIKE

Implicit type cast

Missing FK indexes

Duplicate indexes

Unused indexes

Full table scans

Filesort

Temporary tables


📊 Health Score

The database health score (0–100, Grade A–F) is computed from weighted categories:

Category

Weight

Index Strategy

30%

Schema Design

25%

Query Efficiency

25%

Data Distribution

10%

Security

10%


🧪 Testing

# Unit tests (no external DB required)
npm test

# Integration tests (requires MySQL or use SQLite path)
npm run test:integration

# Type check
npm run typecheck

📁 Project Structure

src/
├── index.ts              # Entry point
├── server.ts             # MCP server + adapter setup
├── config/               # Typed configuration
├── adapters/             # Database adapters (MySQL, PostgreSQL, SQLite)
├── modules/
│   ├── sql-parser/       # SQL DDL/DML parser
│   ├── schema-analyzer/  # Relationship graph, orphan/cycle detection
│   ├── erd-generator/    # Mermaid ERD generation
│   ├── database-creator/ # DDL execution in dependency order
│   ├── data-generator/   # Faker-based relational data generation
│   ├── bulk-loader/      # Batched INSERT with concurrency control
│   ├── query-executor/   # Query execution with metrics
│   ├── benchmark-engine/ # P50/P95/P99 latency benchmarking
│   ├── explain-analyzer/ # EXPLAIN plan parsing and insights
│   ├── slow-query-detector/ # Query classification
│   ├── index-analyzer/   # Missing/duplicate/unused index detection
│   ├── optimization-engine/ # Anti-patterns, query rewriting, health score
│   └── report-generator/ # JSON/MD/HTML/CSV/PDF rendering
├── tools/                # All 15 MCP tool handlers
├── types/                # Shared TypeScript interfaces
└── utils/                # Logger, progress reporter, retry

🌐 Claude Desktop Integration

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "db-optimizer": {
      "command": "node",
      "args": ["/path/to/database-benchmark/dist/index.js"],
      "env": {
        "DB_ADAPTER": "mysql",
        "DB_HOST": "127.0.0.1",
        "DB_PORT": "3306",
        "DB_USER": "root",
        "DB_PASSWORD": "root",
        "DB_NAME": "mcp_benchmark"
      }
    }
  }
}

🤝 Contributing

Contributions are welcome! Please see our Contributing Guide for guidelines on code style, testing, and submitting pull requests.


📄 License

This project is licensed under the terms of the MIT License.

A
license - permissive license
-
quality - not tested
C
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.

Related MCP Servers

  • F
    license
    -
    quality
    F
    maintenance
    A production-ready MCP server that transforms natural language into safe, executable SQL queries with multi-database support and intelligent schema analysis.
    Last updated
    1
  • F
    license
    -
    quality
    D
    maintenance
    A secure multi-database MCP server supporting MySQL, PostgreSQL, and SQLite with read-only enforcement, SQL injection prevention, and tools for schema analysis, performance optimization, and visualization.
    Last updated
    4
  • -
    license
    -
    quality
    C
    maintenance
    An MCP server that bridges AI assistants with SQL databases, enabling natural language querying across multiple database types with built-in optimization and security.
    Last updated
    3
  • A
    license
    -
    quality
    C
    maintenance
    MCP server for accessing Oracle databases, enabling schema exploration, query execution, and performance analysis.
    Last updated
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP server providing access to the Scorecard API to evaluate and optimize LLM systems.

  • GibsonAI MCP server: manage your databases with natural language

  • MCP server for managing Prisma Postgres.

View all MCP Connectors

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/prateeik/mcp-db-analyser'

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