Server data from the Official MCP Registry
MCP server for AlertOps' incident alerting/on-call API.
About
MCP server for AlertOps' incident alerting/on-call API.
Security Report
This is a well-architected, read-only MCP server for AlertOps' incident management API with proper authentication, credential handling, and deliberate scope restrictions. The code demonstrates security-conscious design with clear documentation of excluded write operations and proper use of async local storage for per-request credential isolation in gateway mode. Minor code quality observations do not materially impact security. Supply chain analysis found 4 known vulnerabilities in dependencies (2 critical, 0 high severity).
7 files analyzed · 7 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Permissions Required
This plugin requests these system permissions. Most are normal for its category.
What You'll Need
Set these up before or after installing:
Environment variable: ALERTOPS_API_KEY
Environment variable: MCP_TRANSPORT
Environment variable: AUTH_MODE
Environment variable: LOG_LEVEL
How to Install
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-wyre-ai-alertops-mcp": {
"env": {
"AUTH_MODE": "your-auth-mode-here",
"LOG_LEVEL": "your-log-level-here",
"MCP_TRANSPORT": "your-mcp-transport-here",
"ALERTOPS_API_KEY": "your-alertops-api-key-here"
},
"args": [
"-y",
"@wyre-ai/alertops-mcp"
],
"command": "npx"
}
}
}Documentation
View on GitHubFrom the project's GitHub README.
AlertOps MCP Server
MCP server for AlertOps's incident alerting/on-call API - alerts, message topics, users and their contact methods, groups, configured inbound integrations, and on-call schedules, for AI assistants and the WYRE Conduit gateway.
Authentication
AlertOps' REST API (https://api.alertops.com/api/..., per its published OpenAPI spec at api.alertops.com/swagger/v1/swagger.json) authenticates with a static account-level API key, generated under Account Settings -> Configurations -> Integrations -> API. Unlike most WYRE Conduit sidecars, the key is not sent as a bearer token or custom auth header - AlertOps requires it as an APIKey query-string parameter on every single request, GET and POST alike (live-verified 2026-09-20: an invalid key returns a clean {"reason":"Invalid API Key"} HTTP 401 on every endpoint this connector calls). This connector receives the key per-request via a custom header (never OAuth, same shape as every other static-key WYRE Conduit sidecar) and itself appends ?APIKey=<key> when calling AlertOps' API. In gateway mode the key arrives per-request via the X-AlertOps-Api-Key header; in local/stdio mode it's read once from ALERTOPS_API_KEY.
Two separate claims here, at deliberately different confidence levels - don't collapse them into one "read-only" statement:
- Structurally verified (checked directly, stated with full confidence): this connector's own code makes zero calls to a write/mutating AlertOps endpoint. Every function in
client.tscalls one of the 11 documented GET operations listed under Tools below; noPOSTcall exists anywhere insrc/. - Vendor-documented, not independently verified (hedged deliberately): AlertOps ships role-based access control with built-in and custom roles built from individually-grantable read-only entitlements (e.g.
Messages_View_GlobalAccess,User_View_GlobalAccess,Groups_View_GlobalAccess) - AlertOps' own docs describe a custom role built this way as letting a user "browse incidents, reports, users, and groups but cannot create, modify, or delete anything" (help.alertops.com, Role Based Access Control). A distinct User API Key, shown on a user's own Profile page, is described elsewhere in AlertOps' docs as gated by theUserAPIKey_Addentitlement, implying an API key issued this way inherits the issuing user's role/entitlements. Whether that's actually enforced server-side against this connector'sAPIKeyquery parameter and its write endpoints specifically - i.e. whether AlertOps' backend rejects a write call (Create Alert, Close Alert, Assign, etc.) made with a key belonging to a read-only-scoped user, versus that restriction only ever being surfaced in AlertOps' own UI - has not been tested by WYRE. Nobody sent a write call against a live key to check, correctly: that would risk creating a real page/notification against real on-call staff, not something to run without consent. Do not read this connector, or this README, as having established that a read-only-provisioned AlertOps API key technically cannot perform writes - only that this connector's own code never attempts one, and that AlertOps' documented role system supports provisioning a key that way.
Configuration
| Env var | Description |
|---|---|
ALERTOPS_API_KEY | API key issued under Account Settings -> Configurations -> Integrations -> API. |
MCP_TRANSPORT | stdio (default) or http. |
AUTH_MODE | env (default, reads the var above) or gateway (credential arrives per-request via the X-AlertOps-Api-Key header, injected by the Conduit gateway). |
CONDUIT_S2S_SECRET | When set, the HTTP transport requires a valid X-Gateway-S2S header (Conduit sidecar auth) on every /mcp request. |
LOG_LEVEL | debug | info (default) | warn | error. |
Tools
11 read-only tools, one per GET operation in AlertOps' published REST API spec (25 operations total; the other 14 are POST/write and are deliberately excluded - see Scope below).
Alerts
alertops_list_alerts- list alerts, filterable by status/date range/group/integration/escalation, paginated.alertops_get_alert_id_by_inbound_message_id- resolve the AlertID an inbound integration's messageID was mapped to.alertops_get_alert_id_by_unique_inbound_id- resolve the AlertID an inbound integration's uniqueInboundID was mapped to.
Users
alertops_list_users- list users (username, full name, user type).alertops_get_user_contact_methods- list a user's configured contact methods (email, phone/SMS). Contact PII.
Groups
alertops_list_groups- list groups (group ID -> group name).
Topics
alertops_list_topics- list message topics used for alert routing/escalation.
Integrations
alertops_list_integrations- list configured inbound integrations (integration rule ID -> integration type).
Schedule
alertops_get_oncall_now- list who is on-call right now, for every group or one specific group.alertops_get_user_schedule- a user's on-call schedule for a date range (max 3 months).alertops_get_group_schedule- a group's on-call schedule for a date range (max 3 months).
Scope
This is a deliberately narrow, read-only v1 surface, hard-scoped to exactly 11 of AlertOps' 25 documented operations. AlertOps is a live incident-paging system - every excluded operation either mutates state or can trigger a real page/notification to a human, so none of it is implemented here, by design, not by oversight:
Hard-excluded (creates or mutates a live alert - can page a human) - never implemented:
POST /api/alert/Create(Alert_Create) - creates a new alert, which pages/notifies its recipients.POST /api/alert/Close(Alert_Close) - closes a live alert.POST /api/alert/Update(Alert_Update) - updates a field on a live alert.POST /api/alert/Assign(Alert_Assign) - assigns a user to an alert.POST /api/alert/Note(Alert_Note) - adds a note to an alert.POST /api/alert/AddRecipients(Alert_AddRecipients) - adds recipients to an alert, i.e. pages additional people.POST /api/alert/Reply(Alert_Reply) - replies to an alert.
Hard-excluded (provisioning/mutation - users, groups, schedules, integrations) - never implemented:
POST /api/user/CreateUser(User_CreateUser) - creates a new user.POST /api/user/CreateOutOfOffice(User_CreateOutOfOffice) - creates an out-of-office record, which changes who gets paged.POST /api/group/CreateGroup(Group_CreateGroup) - creates a new group.POST /api/group/AddGroupMember(Group_AddGroupMember) - adds a member to a group, which changes who gets paged.POST /api/schedule/CreateFixedSchedule(Schedule_CreateFixedSchedule) - creates a fixed on-call schedule.POST /api/schedule/CreateRecurringSchedule(Schedule_CreateRecurringSchedule) - creates a recurring on-call schedule.POST /api/integration/CreateMaintenanceWindows(Integration_CreateMaintenanceWindows) - creates a maintenance window, which suppresses alerting.
They can be added as a follow-up if there's demand, after a deliberate scope decision - not by default.
Development
npm install
npm run build
npm test
npm run lint # tsc --noEmit
Docker
docker build -t alertops-mcp .
docker run -p 8080:8080 -e ALERTOPS_API_KEY=... alertops-mcp
License
Apache-2.0
Reviews
No reviews yet
Be the first to review this server!
More Developer Tools MCP Servers
Git
Freeby Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
Fetch
Freeby Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
Paperclip
Freeby Paperclipai · Developer Tools
Trending hip-hop artist momentum scores across four cultural dimensions.
Toleno
Freeby Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
mcp-creator-python
Freeby mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
MCP Marketplace
Freeby mcp-marketplace · Developer Tools
Search and install MCP servers from inside your AI client.
