Skip to main content

mcp-allquiet

CI PyPI License

An MCP server for All Quiet, the incident management and on-call platform. It lets Claude, Cursor or any MCP client triage incidents, check who is on call and reach every operation of the All Quiet public API.

Built on the official MCP Python SDK v2 (mcp 2.x). Not affiliated with All Quiet.

Why

All Quiet has a complete public API (136 operations) but no official MCP server. Exposing one tool per operation would put 136 tool schemas into the model's context before the first question. This server ships 10 tools:

  • 5 incident tools for the on-call loop, returning compact summaries.
  • 5 generic tools driven by the bundled OpenAPI spec, which reach every other operation (teams, schedules, overrides, integrations, routing, status pages, maintenance windows...).

Install

Requires uv and an All Quiet API key (the API needs a Pro or Enterprise plan).

Claude Code:

claude mcp add allquiet -e ALLQUIET_API_KEY=your-key -- uvx mcp-allquiet

Claude Desktop, Cursor and other clients (mcpServers JSON):

{
  "mcpServers": {
    "allquiet": {
      "command": "uvx",
      "args": ["mcp-allquiet"],
      "env": { "ALLQUIET_API_KEY": "your-key" }
    }
  }
}

Configuration

Variable Required Default
ALLQUIET_API_KEY yes Organization API key or personal access token
ALLQUIET_BASE_URL no https://allquiet.app Use https://allquiet.eu for the EU region. Must be https://

The API key decides what the model can do

All Quiet keys carry per-resource scopes (incidents:list, teams:update...), can be limited to teams, and can expire. The server has no read-only switch on purpose: create a key with only list/get scopes and every write fails at the API. A personal access token can never do more than its user can in the UI.

A personal access token only reaches teams its user belongs to. A team created through the API stays out of reach (403) until a POST /team-membership adds the user as Administrator. Organization API keys skip team role checks.

Keys spanning several organizations need the organizationId query parameter on many operations. The API says so in its error, and the model can pass it through the generic tools.

Tools

Tool What it does Kind
list_incidents Filter by status, severity, team, user, text, unattended, date. Compact summaries, paged read
get_incident Full incident as markdown: timeline, attributes, assignees read
create_incident Open an incident write
update_incident Record an action (resolve, acknowledge, comment...) and/or change severity write
who_is_on_call Current (or past) on-call per team, with escalation tier read
list_operations Search the 136 API operations, with the key scope each needs read
describe_operation Parameters and request body schema of one operation read
call_read GET any operation read
call_write POST / PUT / PATCH any operation (JSON bodies) write
call_delete DELETE any operation destructive

Tools carry MCP annotations (readOnlyHint, destructiveHint), so clients can ask before writes and deletes.

Security

  • The key is read from the environment and only sent to the configured https:// host. It never appears in tool output or error messages (tested).
  • Generic tools accept only path templates that exist in the bundled spec. Path parameters are percent-encoded as a single segment, so a value cannot rewrite the path.
  • Responses are truncated at 40k characters and error bodies at 2k.
  • Incident content is untrusted input. Titles, messages and attributes often come from alert payloads written by third parties. Treat what the model reads there as data, and keep write scopes off keys you use with untrusted incident sources.

Report vulnerabilities through SECURITY.md.

Limitations

  • stdio transport only.
  • POST /inbound-integration/{id}/call-routing-media/{purpose} needs multipart/form-data and is not supported.
  • No retries. A 429 returns the Retry-After value to the model.

Development

uv sync
uv run pytest
uv run ruff check && uv run ruff format --check && uv run ty check

Try it with the MCP Inspector:

ALLQUIET_API_KEY=your-key npx @modelcontextprotocol/inspector uv run mcp-allquiet

Refresh the bundled OpenAPI spec:

curl -s https://allquiet.app/api/swagger/public-v1/swagger.json \
  | python -c "import json,sys; json.dump(json.load(sys.stdin), sys.stdout, separators=(',',':'))" \
  > src/mcp_allquiet/openapi.json

See CONTRIBUTING.md.

License

MIT

Release files for mcp-allquiet 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-allquiet 0.1.1
File Size Uploaded
mcp_allquiet-0.1.1.tar.gz 35.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for mcp-allquiet 0.1.1
File Interpreter ABI Platform
mcp_allquiet-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 73.0 kB

Release files / mcp_allquiet-0.1.1.tar.gz

Download URL mcp_allquiet-0.1.1.tar.gz
Size 35.9 kB
Tags Source
SHA-256 checksum
How to use checksums
7f317c8210cb1c21281dffb1d69bbb74a917e81bbaa20c7cb10969784b9c370e
BLAKE2b-256 checksum
How to use checksums
4adfb2176b5867c4bf53e0490b599d790fd6369da7e32f3fdccff1bc03081a41
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / mcp_allquiet-0.1.1-py3-none-any.whl

Download URL mcp_allquiet-0.1.1-py3-none-any.whl
Size 37.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
8858774a24e29ea8f44151545ed52cf88c8ee21a3dab45504eee12f08a6b8fab
BLAKE2b-256 checksum
How to use checksums
36d1afc08b630214efe574d62c8e361817216982c6124c4c9d6c82e07fcf4c4e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.15 {"installer":{"name":"uv","version":"0.12.15","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page