
PagerDuty MCP
OfficialPagerDuty's official MCP server — agents triage incidents, manage on-call schedules, and query services from your IDE.
Add to your client
Copy the config for your MCP client and paste it into its config file.
uvx pagerduty-mcpPaste into ~/Library/Application Support/Claude/claude_desktop_config.json
{
"mcpServers": {
"pagerduty-mcp": {
"command": "uvx",
"args": [
"pagerduty-mcp"
],
"env": {
"PAGERDUTY_USER_API_KEY": "<your-pagerduty-user-api-token>"
}
}
}
}Requires `uv` (the Python package runner). Install it from https://docs.astral.sh/uv/ if `uvx` is not found.
Step-by-step guides: Add to Claude Desktop · Add to Cursor · Add to Windsurf
Before you start
- uv installed globally — the standard config launches the server with uvx
- A PagerDuty User API Token: profile icon → My Profile → User Settings → API Access → Create API User Token
- EU-hosted accounts: PAGERDUTY_API_HOST=https://api.eu.pagerduty.com in env
About PagerDuty MCP
PagerDuty MCP is a thin but complete layer over the PagerDuty REST API, published to PyPI as pagerduty-mcp and typically launched with uvx so nothing is installed permanently. Every tool maps to a documented API call and carries a read-only flag; the server refuses to register write tools unless you pass --enable-write-tools, so the default posture is safe for exploration. Configuration is two environment variables: the User API Token and an optional PAGERDUTY_API_HOST for EU data residency.
The tool surface is organized by domain: incidents (list, get, manage status/urgency/assignment, notes, responders, related and outlier incidents), schedules and on-call (including overrides), services, teams, users, escalation policies, event orchestrations (down to router rules), webhooks, status pages, change events, log entries, and alert grouping settings. That breadth is the point — during an incident an agent can pull the alert payload, past similar incidents, recent change events, and the on-call chain without you tabbing into the web UI.
A distinctive extra is the embedded MCP Apps layer: React UIs served as MCP resources, so VS Code can render an Incident Command Center, On-Call Manager with override CRUD, an EU-Working-Time-Directive-aware compensation report, and a service dependency graph — all in-process, no separate HTTP server. Prompts like "Show me the incident command center" open them.
Trade-offs: auth is a personal User API Token rather than a scoped OAuth app, so the agent inherits everything that user can do (freemium accounts also limit token permissions by role). There is no hosted/remote endpoint — it runs on your machine (uvx or Docker with stdio) — and support is community-based via GitHub issues even though the org is official.
Tools & capabilities (71)
list_incidentsLists incidents with filtering
get_incidentRetrieves a specific incident
manage_incidentsUpdates incident status, urgency, assignment, or escalation level (write)
create_incidentCreates a new incident (write)
add_note_to_incidentAdds a note to an incident (write)
add_respondersAdds responders to an incident (write)
list_incident_notesLists all notes for a specific incident
list_alerts_from_incidentLists all alerts for an incident with pagination
get_alert_from_incidentRetrieves a specific alert from an incident
get_outlier_incidentOutlier incident information for a specific incident
get_past_incidentsPast incidents related to a specific incident
get_related_incidentsRelated incidents for a specific incident
get_incident_workflowRetrieves a specific incident workflow
list_incident_workflowsLists incident workflows with filtering
start_incident_workflowStarts a workflow instance for an incident (write)
list_oncallsLists on-call entries across schedules
list_schedulesLists schedules
get_scheduleRetrieves a specific schedule
list_schedule_usersLists users in a schedule
create_scheduleCreates a new on-call schedule (write)
update_scheduleUpdates an existing schedule (write)
create_schedule_overrideCreates an override for a schedule (write)
list_escalation_policiesLists escalation policies
get_escalation_policyRetrieves a specific escalation policy
list_servicesLists services
get_serviceRetrieves a specific service
create_serviceCreates a new service (write)
update_serviceUpdates an existing service (write)
list_teamsLists teams
get_teamRetrieves a specific team
create_teamCreates a new team (write)
update_teamUpdates an existing team (write)
delete_teamDeletes a team (write)
list_team_membersLists members of a team
add_team_memberAdds a user to a team with a role (write)
remove_team_memberRemoves a user from a team (write)
list_usersLists users in the account
get_user_dataGets the current user's data
list_event_orchestrationsLists event orchestrations with filtering
get_event_orchestrationRetrieves a specific event orchestration
get_event_orchestration_globalGlobal orchestration configuration for an orchestration
get_event_orchestration_routerRouter configuration for an event orchestration
get_event_orchestration_serviceService orchestration configuration for a service
update_event_orchestration_routerUpdates an orchestration's router configuration (write)
append_event_orchestration_router_ruleAdds a routing rule to an orchestration router (write)
list_change_eventsLists change events with filtering
get_change_eventRetrieves a specific change event
list_incident_change_eventsChange events related to a specific incident
list_service_change_eventsChange events for a specific service
list_log_entriesLists account-wide log entries with time filtering
get_log_entryRetrieves a specific log entry by ID
list_alert_grouping_settingsLists alert grouping settings with filtering
get_alert_grouping_settingRetrieves a specific alert grouping setting
create_alert_grouping_settingCreates an alert grouping setting (write)
update_alert_grouping_settingUpdates an alert grouping setting (write)
delete_alert_grouping_settingDeletes an alert grouping setting (write)
list_status_pagesLists status pages with filtering
get_status_page_postDetails of a specific status page post
create_status_page_postCreates an incident/maintenance post on a status page (write)
create_status_page_post_updateAdds an update to a status page post (write)
list_status_page_post_updatesLists updates for a status page post
list_status_page_impactsLists available impact levels for a status page
list_status_page_severitiesLists available severity levels for a status page
list_status_page_statusesLists available statuses for a status page
list_webhook_subscriptionsLists webhook subscriptions with type filtering
get_webhook_subscriptionRetrieves a specific webhook subscription
create_webhook_subscriptionCreates a webhook subscription, returns signing secret (write)
update_webhook_subscriptionUpdates a webhook subscription (write)
delete_webhook_subscriptionDeletes a webhook subscription (write)
list_extension_schemasLists available extension schemas (vendors)
get_extension_schemaRetrieves a specific extension schema
What this server can do
PagerDuty MCP provides tools for these capabilities — tap one to see every MCP server that does the same:
When to use it
- Triage a page without leaving the IDE: pull the incident, its alerts, notes, change events, and similar past incidents, then acknowledge or reassign
- Ask who is on call right now across schedules and create an override for a shift swap
- Edit event orchestration routing rules through review-able tool calls instead of clicking through the UI
- Post and update status page comms during an outage while the agent gathers timeline data
Quick setup
- 1Create a User API Token in PagerDuty: profile icon → My Profile → User Settings → API Access → Create API User Token
- 2Install uv globally so uvx is on PATH (brew install uv, or the installer at docs.astral.sh/uv)
- 3Add the server to your MCP client: command uvx, args ["pagerduty-mcp"], env PAGERDUTY_USER_API_KEY
- 4Append --enable-write-tools to args only if the agent should create/modify incidents, schedules, teams, or status pages
- 5Restart the client and test with "Show me my latest PagerDuty incidents"
Security notes
The server acts with the full permissions of whichever user's API token you configure; it starts read-only and only exposes write tools when launched with --enable-write-tools, and Claude Desktop stores the token in plaintext config, so restrict file permissions. EU accounts must set PAGERDUTY_API_HOST=https://api.eu.pagerduty.com or requests go to the US API.
PagerDuty MCP FAQ
Is the PagerDuty MCP server official and free?
Yes — it lives in PagerDuty's GitHub org under an Apache-2.0 license and costs nothing beyond your PagerDuty subscription, since it just calls the normal REST API with your User API Token. Support is community-based (GitHub issues and the PagerDuty forum), not part of paid support.
Can it modify or delete things in my PagerDuty account?
Not unless you opt in. The server starts in read-only mode; write tools like create_incident, manage_incidents, delete_team, and status page posts only register when you launch it with the --enable-write-tools flag.
Does it work with EU-hosted PagerDuty accounts?
Yes — set PAGERDUTY_API_HOST=https://api.eu.pagerduty.com in the env block. Without it the server defaults to https://api.pagerduty.com and EU tokens will fail to authenticate.
Alternatives to PagerDuty MCP
Compare all alternatives →Official Elastic server: list indices, read mappings, and search with Query DSL.
Official PostHog server: product analytics, feature flags, experiments, error tracking and SQL.
Run PromQL queries and analyze Prometheus metrics from any MCP client.