PagerDuty MCP Server
PagerDuty's official local MCP server for managing incidents, services, schedules, event orchestrations, teams, users, and status pages from MCP-enabled clients.
PagerDuty MCP Server is the official Model Context Protocol server from PagerDuty that exposes the PagerDuty REST API to MCP-enabled clients like Claude Desktop, Cursor, and VS Code. It lets AI agents inspect and act on incidents, services, on-call schedules, escalation policies, teams, users, event orchestrations, incident workflows, and status pages.
The server runs locally and authenticates with a PagerDuty User API Token via the PAGERDUTY_USER_API_KEY environment variable. It supports both the US (api.pagerduty.com) and EU (api.eu.pagerduty.com) API hosts. By default the server exposes only read-only tools; write operations like creating incidents, assigning responders, updating schedules, or publishing status page posts require launching with the --enable-write-tools flag.
The codebase is maintained in the official PagerDuty/pagerduty-mcp-server GitHub repo and is distributed as a Python package runnable via uvx pagerduty-mcp. It supports stdio transport and ships with a Dockerfile for containerized deployments. Support is community-based through GitHub issues and the PagerDuty community forum.
Tools
| Tool | Description |
|---|---|
list_incidents |
List incidents in your PagerDuty account with optional filters. |
get_incident |
Retrieve details about a specific incident. |
create_incident |
Create a new incident (write mode). |
add_incident_note |
Add a note to an incident (write mode). |
add_incident_responders |
Request additional responders on an incident (write mode). |
update_incident |
Update incident status, urgency, or assignment (write mode). |
list_services |
List PagerDuty services. |
get_service |
Retrieve a service by ID. |
create_service |
Create a new service (write mode). |
update_service |
Update an existing service (write mode). |
list_schedules |
List on-call schedules. |
get_schedule |
Retrieve a schedule and its layers. |
create_schedule |
Create a new on-call schedule (write mode). |
update_schedule |
Update a schedule (write mode). |
create_schedule_override |
Create an override on a schedule (write mode). |
list_schedule_users |
List users on a schedule. |
list_escalation_policies |
List escalation policies. |
get_escalation_policy |
Retrieve an escalation policy. |
list_teams |
List teams in the account. |
create_team |
Create a team (write mode). |
update_team |
Update team details (write mode). |
delete_team |
Delete a team (write mode). |
add_team_member |
Add a user to a team (write mode). |
remove_team_member |
Remove a user from a team (write mode). |
list_users |
List users in the PagerDuty account. |
get_current_user |
Get the user owning the API token. |
list_change_events |
List change events. |
get_change_event |
Retrieve a change event by ID. |
list_event_orchestrations |
List event orchestrations. |
get_event_orchestration |
Retrieve an event orchestration. |
update_event_orchestration_router |
Update router rules on an orchestration (write mode). |
append_event_orchestration_router_rule |
Append a new router rule (write mode). |
list_incident_workflows |
List incident workflows. |
get_incident_workflow |
Retrieve a workflow definition. |
start_incident_workflow |
Trigger an incident workflow (write mode). |
list_log_entries |
List log entries. |
get_log_entry |
Retrieve a specific log entry. |
list_alert_grouping_settings |
List alert grouping settings. |
create_alert_grouping_setting |
Create alert grouping settings (write mode). |
update_alert_grouping_setting |
Update alert grouping settings (write mode). |
delete_alert_grouping_setting |
Delete alert grouping settings (write mode). |
create_status_page_post |
Publish a post to a status page (write mode). |
create_status_page_post_update |
Add an update to an existing status page post (write mode). |
list_status_page_impacts |
List available status page impact levels. |
list_status_page_severities |
List available status page severities. |
list_status_page_statuses |
List available status page statuses. |
get_status_page_post |
Retrieve a status page post. |
Prerequisites
- A PagerDuty account
- A PagerDuty User API Token (User Settings > API Access > Create API User Token)
uv/uvxinstalled locally, or Docker
Quick start with uvx
The fastest way to run the server is via uvx:
uvx pagerduty-mcp --enable-write-tools
Omit the --enable-write-tools flag to run in read-only mode (default).
Claude Desktop config
Edit ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows:
{
"mcpServers": {
"pagerduty-mcp": {
"command": "uvx",
"args": ["pagerduty-mcp", "--enable-write-tools"],
"env": {
"PAGERDUTY_USER_API_KEY": "your-key-here",
"PAGERDUTY_API_HOST": "https://api.pagerduty.com"
}
}
}
}
EU customers should set PAGERDUTY_API_HOST to https://api.eu.pagerduty.com.
Environment variables
PAGERDUTY_USER_API_KEY(required): PagerDuty User API TokenPAGERDUTY_API_HOST(optional): defaults tohttps://api.pagerduty.com
Docker
docker build -t pagerduty-mcp:latest .
Run the container with PAGERDUTY_USER_API_KEY passed via -e. The Docker image uses stdio transport.
Local development
Clone the repo, install asdf plugins for Python, Node.js, and uv, then run asdf install followed by uv sync to create the virtual environment.
- Triage active incidents during an on-call shift: list open incidents, pull log entries, and ask the agent to summarize root cause hypotheses.
- Automate incident response: create incidents from chat, assign responders, add notes, and trigger incident workflows without leaving the agent.
- Manage on-call coverage: create one-off schedule overrides when someone goes out, or rebalance schedule layers programmatically.
- Maintain services and escalation policies: audit which services map to which teams and update configurations in bulk.
- Publish status page posts and updates from a runbook agent during ongoing customer-impacting incidents.
- "List all triggered and acknowledged incidents on the Payments service from the last 24 hours and summarize the top issues."
- "Add a note to incident PXXXXX saying we have engaged the database team, then page the on-call DBA."
- "Create a one-week schedule override on the SRE Primary schedule so Alice covers Bob from Friday to next Friday."
- "Publish a status page post titled 'Investigating elevated API latency' with major impact on the API service."
- "Show me the current on-call user for every escalation policy on the Checkout team."
- Official server maintained by PagerDuty in their GitHub org.
- Broad coverage of the PagerDuty REST API: incidents, schedules, services, teams, users, event orchestrations, incident workflows, alert grouping, and status pages.
- Safe by default: read-only mode unless
--enable-write-toolsis passed. - Supports both US and EU API hosts via
PAGERDUTY_API_HOST.
- Local-only server, no provider-hosted remote URL, so each user must run it themselves.
- Authenticates with a User API Token tied to one user's permissions rather than per-agent OAuth credentials.
- Community-based support only, no formal SLA on the MCP server itself.
- Opsgenie MCP server for teams on Atlassian's incident platform (community implementations exist).
- Incident.io MCP server for incident management on incident.io.
- Direct use of the PagerDuty REST API via a generic HTTP MCP server such as a custom OpenAPI-based MCP wrapper.