get_statusLABSCO SUMMARY
Paging is the feature, not a detail.
An assistant asking "what is firing" during an incident is asking the one question most likely to return hundreds of items. The defaults here are deliberately small and the ceilings are per-endpoint — alert groups cap at 5 because each group carries its own alerts with it. The has_more flag means the model can walk the list rather than guess whether it saw everything.
What it is
A server over the Alertmanager v2 API. It reads status, alerts, silences and receivers, and it creates alerts and silences — with paging on every list call, because an alerting system is exactly the place where a full dump goes badly.
What you get
- get_status returns Alertmanager's own state
- get_alerts lists alerts filtered by silenced, inhibited and active, paginated with count and offset — 10 per page by default, 25 at most — and returns a has_more flag
- get_silences pages the same way, defaulting to 10 and capping at 50
- post_silence creates a silence and delete_silence removes one by id
- get_receivers lists configured receivers
- get_alert_groups pages with a lower ceiling — 3 per page by default, 5 at most — because each group carries all its alerts
- Basic authentication through ALERTMANAGER_USERNAME and ALERTMANAGER_PASSWORD, and multi-tenant Mimir or Cortex setups through the X-Scope-OrgId header, which overrides the static tenant setting per request
Requirements
Python 3.12 or newer with uv, or the container image ghcr.io/ntk148v/alertmanager-mcp-server. ALERTMANAGER_URL is required; username, password and ALERTMANAGER_TENANT are optional. Transport defaults to stdio, with MCP_TRANSPORT switching to http or sse and MCP_HOST and MCP_PORT controlling the binding — port 8000 by default.
Setup effort
Run a container — pull the image and point your client at it
USE CASES
Finding out what is firing right now
Filtered, paged alerts with a flag telling you whether there is more.
Silencing something during a deploy
Create the silence from the conversation and delete it by id afterwards.
Seeing alerts grouped the way Alertmanager groups them
Alert groups come back paged, with lower limits because each carries its own alerts.
Working inside a multi-tenant Mimir or Cortex
The X-Scope-OrgId header switches tenant per request and takes precedence over the static setting.
7 tools
Listed in project docs. Your client may show a different list.
get_alertsget_silencespost_silencedelete_silenceget_receiversget_alert_groupsBEFORE YOU INSTALL
What to know first
Tools you get
7 tools named in the project's documentation.
Requires
- docker on PATH
- Python 3.12+
INSTALLATION
Connect your client
MCP Clients
Claude Desktop — uv
Clone the repository first with git clone https://github.com/ntk148v/alertmanager-mcp-server.git, and use the folder it creates as the full path in this block. Restart Claude Desktop afterwards.
{
"mcpServers": {
"alertmanager": {
"command": "uv",
"args": [
"--directory",
"<YOUR_FULL_PATH_TO_ALERTMANAGER_MCP>",
"run",
"src/alertmanager_mcp_server/server.py"
],
"env": {
"ALERTMANAGER_URL": "http://<YOUR_ALERTMANAGER>:9093",
"ALERTMANAGER_USERNAME": "<YOUR_ALERTMANAGER_USERNAME>",
"ALERTMANAGER_PASSWORD": "<YOUR_ALERTMANAGER_PASSWORD>"
}
}
}
}Claude Desktop — Docker
{
"mcpServers": {
"alertmanager": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"ALERTMANAGER_URL",
"-e",
"ALERTMANAGER_USERNAME",
"-e",
"ALERTMANAGER_PASSWORD",
"ghcr.io/ntk148v/alertmanager-mcp-server:latest"
],
"env": {
"ALERTMANAGER_URL": "http://<YOUR_ALERTMANAGER>:9093",
"ALERTMANAGER_USERNAME": "<YOUR_ALERTMANAGER_USERNAME>",
"ALERTMANAGER_PASSWORD": "<YOUR_ALERTMANAGER_PASSWORD>"
}
}
}
}