[!NOTE] This is a read-only mirror. Original repo and development: git.epod.dev/erhan/HANAPerformanceMCP
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 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
MONITORINGrole (or at minimum, SELECT onSYS.M_*views)
Setup
Clone the repo and install dependencies with uv:
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:
cp .env.example .env
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:
uv run hana-performance-mcp
Or configure it in your MCP client. Example for Claude Desktop (claude_desktop_config.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











