# SAP HANA Performance MCP Server An MCP server that gives AI assistants direct access to SAP HANA performance data — query plans, execution stats, memory usage. Built on the [Model Context Protocol](https://modelcontextprotocol.io/) with `hdbcli`. ## Tools | Tool | What it does | |---|---| | `analyze_query` | Captures compile-time and runtime query plans, flags bottlenecks | | `download_planviz` | Exports query plan data as JSON for offline review | | `get_expensive_statements` | Top resource-heavy queries from `M_EXPENSIVE_STATEMENTS` | | `get_plan_cache` | Cached execution plans from `M_SQL_PLAN_CACHE` | | `get_table_statistics` | Table and column-level stats for a schema/table | | `get_memory_stats` | Host and per-service memory usage | | `get_active_sessions` | Active connections and running statements | ## Prerequisites - Python 3.11+ - A running SAP HANA instance - A database user with `MONITORING` role (or at minimum, SELECT on `SYS.M_*` views) ## Setup Clone the repo and install dependencies with [uv](https://docs.astral.sh/uv/): ```bash git clone https://git.epod.dev/erhan/HANAPerformanceMCP.git cd HANAPerformanceMCP uv sync ``` Copy the example env file and fill in your HANA connection details: ```bash cp .env.example .env ``` ```ini HANA_HOST=your-hana-host HANA_PORT=30015 HANA_USER=DBADMIN HANA_PASSWORD=your-password HANA_ENCRYPT=true HANA_SSLVALIDATECERTIFICATE=false # Optional — set this to connect to a tenant database instead of the system DB HANA_DATABASE_NAME=CCQ ``` ## Running Start the server directly: ```bash uv run hana-performance-mcp ``` Or configure it in your MCP client. Example for Claude Desktop (`claude_desktop_config.json`): ```json { "mcpServers": { "hana-performance": { "command": "uv", "args": [ "--directory", "/path/to/HANAPerformanceMCP", "run", "hana-performance-mcp" ], "env": { "HANA_HOST": "your-hana-host", "HANA_PORT": "30015", "HANA_USER": "DBADMIN", "HANA_PASSWORD": "your-password", "HANA_ENCRYPT": "true", "HANA_SSLVALIDATECERTIFICATE": "false", "HANA_DATABASE_NAME": "your-tenant-db" } } } } ``` For Claude Code, add the same config under `mcpServers` in `.claude/settings.json`. ## How It Works The server connects to HANA through a thread-safe connection pool (3 connections by default). Each tool runs read-only queries against system views. `analyze_query` runs `EXPLAIN PLAN` for the compile-time plan, then optionally executes the query and pulls runtime stats from `M_EXPENSIVE_STATEMENTS`. It checks for full table scans, inefficient joins, memory hotspots, engine mismatches, and cost outliers. Only `SELECT`/`WITH` statements are allowed. Row limits are enforced (max 10,000). ## License MIT