flink-mcp-server
Provides read-only monitoring of Apache Flink clusters through a reachable JobManager REST endpoint. It exposes tools for cluster overview, job listing and details, exceptions, checkpoint statistics, backpressure, TaskManagers, job configuration and metrics, uploaded JARs, multi-cluster fleet overview, and one-call job diagnosis with ranked findings.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@flink-mcp-serverdiagnose the latest Flink job on prod and summarize the issues"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
flink-mcp-server
Read-only MCP server for monitoring Apache Flink clusters. It only needs a reachable JobManager REST endpoint, so it works the same on bare metal, Docker, Kubernetes or YARN. Tool output is summarized for LLMs rather than returning raw REST JSON.
Tools (V1)
Tool | What it returns |
| Flink version, slots, job counts |
| Jobs with state and duration |
| Per-vertex status and parallelism |
| Root exception and recent history (stacktraces trimmed) |
| Counts, failure rate, last completed/failed |
| Per-vertex backpressured/busy/idle ms per second |
| Slots and resources per TaskManager |
| Job execution config |
| Job metric values, or the catalogue of available metric ids (filterable) |
| Uploaded JARs and their entry classes |
| JobManager configuration, filterable by key |
| Configured clusters (names and URLs only) |
| Overview of all clusters in one call; unreachable ones report an error |
| One-call verdict ( |
All per-cluster tools take an optional cluster argument; omit it for the default cluster.
Related MCP server: flink-mcp
Configuration
Variable | Default | |
|
| JobManager REST endpoint |
| unset | Sent as |
|
|
|
|
| HTTP bind address |
| unset | Bearer token required on every HTTP request |
|
|
|
| unset | YAML with several clusters (overrides the two above) |
Multiple clusters: copy clusters.example.yaml, then set FLINK_CLUSTERS_FILE.
Per cluster: url, token or token_env (preferred, keeps secrets out of the file),
ca_cert, insecure, timeout.
Install and run
One-line installers. They install uv first if it is missing, then the server. They download and run a script, so read it first if you prefer (install.sh, install.ps1).
macOS / Linux:
curl -LsSf https://raw.githubusercontent.com/hakkiburakalks/flink-mcp-server/main/install.sh | shWindows (PowerShell):
irm https://raw.githubusercontent.com/hakkiburakalks/flink-mcp-server/main/install.ps1 | iexOptions: register in Claude Code and point at your cluster, or remove everything.
curl -LsSf .../install.sh | sh -s -- --claude-code --url http://localhost:8081
& ([scriptblock]::Create((irm .../install.ps1))) -ClaudeCode -Url http://localhost:8081Uninstall with --uninstall / -Uninstall. The installers use the release on PyPI; set
FLINK_MCP_SOURCE to install something else, e.g. the latest main
(git+https://github.com/hakkiburakalks/flink-mcp-server) or a local checkout.
Or skip installing and let uv run it on demand (Windows, macOS, Linux):
uvx flink-mcp-serverAdd it to an MCP client. Claude Code:
claude mcp add flink -e FLINK_REST_URL=http://localhost:8081 -- uvx flink-mcp-serverClaude Desktop, Cursor and others (mcpServers in their JSON config):
{
"mcpServers": {
"flink": {
"command": "uvx",
"args": ["flink-mcp-server"],
"env": { "FLINK_REST_URL": "http://localhost:8081" }
}
}
}From a checkout: uv sync --extra dev && uv run flink-mcp-server.
Optional: run the latest main straight from git instead of the PyPI release
(for uvx and the installers; unreleased changes may be unstable):
uvx --from git+https://github.com/hakkiburakalks/flink-mcp-server flink-mcp-server
FLINK_MCP_SOURCE=git+https://github.com/hakkiburakalks/flink-mcp-server sh install.shPin a release or branch with @v0.1.0 / @main after the URL.
Remote access (Streamable HTTP)
FLINK_MCP_AUTH_TOKEN=change-me flink-mcp-server --transport streamable-http --host 0.0.0.0 --port 8000The endpoint is http://<host>:8000/mcp. Clients send Authorization: Bearer <token>.
Authentication is on by default:
Situation | Behaviour |
| Token enforced (always, even with |
Loopback bind, no token | Open; fine for local use |
Non-loopback bind, no token | A random token is generated and printed to stderr at startup |
Non-loopback bind, no token, | Open, with a warning. Only do this on a trusted network |
The server speaks plain HTTP: put it behind a TLS-terminating proxy before exposing it.
Test
uv run pytest # unit tests
docker compose -f tests/docker-compose.yml up -d
uv run pytest -m integration # needs the local cluster (Docker)Roadmap
Done: V2 multi-cluster, token/TLS options, Streamable HTTP with bearer auth. Next: Kubernetes discovery, V3 diagnostics (Prometheus, logs), V4 approval-gated operations and SQL Gateway.
This server cannot be deployed
Maintenance
Related MCP Connectors
Discover Frontier inference capabilities and read sanitized usage through read-only tools.
Read-only server insight: why a Linux server or K8s cluster is slow, failing or changed.
LLM API discovery: access conditions, dated costs, sampled checks and keyless configs. Read-only.
Read-only access to your Drivara fleet — jobs, drivers, vehicles, fuel, profit & analytics.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceExposes Spark History Server metrics and metadata as tools for LLM-based analysis of Spark applications. It enables deep optimization of Spark jobs by providing access to job summaries, stage details, SQL execution plans, and executor performance.-
- AlicenseNot gradedqualityCmaintenanceEnables interaction with Apache Flink clusters via the SQL Gateway, allowing query execution, session management, and job control through MCP tools.8Apache 2.0
- AlicenseNot gradedqualityDmaintenanceProvides read-only monitoring of Apache Airflow DAGs, including listing active DAGs, fetching recent runs, and analyzing execution history and performance metrics.1MIT
- FlicenseNot gradedqualityCmaintenanceProvides a read-only interface to Kubernetes clusters, enabling LLMs to list pods, get pod status and logs, fetch deployment manifests, and perform pod health analysis with resource trend tracking.-