PluginBench
MCP Server
Active
Apache-2.0

io.github.PagerDuty/pagerduty-mcp MCP Server

io.github.PagerDuty/pagerduty-mcp

PagerDuty's official MCP server for managing incidents, services, schedules, and event orchestrations directly from your IDE.

What is the io.github.PagerDuty/pagerduty-mcp MCP server?

The PagerDuty MCP server is PagerDuty's official Model Context Protocol server that provides tools to interact with your PagerDuty account. It enables you to manage incidents, services, schedules, event orchestrations, and more directly from MCP-enabled clients like Claude, Cursor, and VS Code, with embedded React UIs for incident management, on-call scheduling, and service dependencies.

This server connects your PagerDuty account to AI agents and IDEs, letting you query incidents, manage on-call schedules, create escalation policies, configure alert grouping, and perform incident lifecycle operations without leaving your development environment. It includes interactive embedded apps for incident command center, on-call management, compensation reporting, and service dependency visualization.

How to install io.github.PagerDuty/pagerduty-mcp

Copy-paste configuration for popular MCP clients.

transport: stdio
Config generated by PluginBench — verify against the source before use.
Environment / auth
  • PAGERDUTY_USER_API_KEY

    PagerDuty User API Token - obtain from User Settings > API Access in your PagerDuty account

  • PAGERDUTY_API_HOST

    PagerDuty API host URL (default: https://api.pagerduty.com, EU: https://api.eu.pagerduty.com)

~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "pagerduty-mcp": {
      "command": "uvx",
      "args": [
        "pagerduty-mcp",
        "--enable-write-tools"
      ],
      "env": {
        "PAGERDUTY_USER_API_KEY": "<YOUR_PAGERDUTY_USER_API_KEY>",
        "PAGERDUTY_API_HOST": "<YOUR_PAGERDUTY_API_HOST>"
      }
    }
  }
}

Tools & capabilities

Tools this server exposes to the agent.

  • create_alert_grouping_setting — Creates a new alert grouping setting
  • delete_alert_grouping_setting — Deletes an alert grouping setting
  • get_alert_grouping_setting — Retrieves a specific alert grouping setting
  • list_alert_grouping_settings — Lists alert grouping settings with filtering
  • update_alert_grouping_setting — Updates an existing alert grouping setting
  • get_incident_metrics_all — Retrieves aggregated incident metrics

Use cases

  • View and manage your latest incidents with real-time updates, acknowledge, resolve, or escalate directly from your IDE
  • Manage on-call schedules, create and edit schedule overrides, and view current on-call rotations across your teams
  • Generate on-call compensation reports with hours worked, incident counts, and compliance tracking against working time directives
  • Visualize service dependencies and relationships with an interactive dependency graph showing upstream/downstream impacts
  • Set up and configure PagerDuty accounts with the onboarding wizard, including teams, schedules, escalation policies, and alert grouping

io.github.PagerDuty/pagerduty-mcp MCP server FAQ

What is the PagerDuty MCP server?

It's PagerDuty's official MCP server that gives AI agents and IDEs access to your PagerDuty account. You can manage incidents, schedules, services, and event orchestrations through Claude, Cursor, or VS Code without leaving your development environment.

Is it free to use?

The server itself is free and open-source. You need a PagerDuty account and a User API Token to authenticate. PagerDuty's pricing depends on your account tier.

How do I install it in Cursor?

Open Cursor settings, go to Tools > Add MCP, and add the configuration with command 'uvx', args ['pagerduty-mcp', '--enable-write-tools'], and set the PAGERDUTY_USER_API_KEY environment variable with your API token.

How do I install it in Claude Desktop?

Edit your Claude Desktop config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS), add the pagerduty-mcp server configuration with your API key, and restart Claude Desktop.

What authentication is required?

You need a PagerDuty User API Token. Generate it in PagerDuty by going to your user profile > My Profile > User Settings > API Access > Create API User Token.

Can I modify data with this server?

Yes, but only if you start the server with the --enable-write-tools flag. By default, it operates in read-only mode to prevent accidental changes.

README (reference)

Source of truth, from the repository.

PagerDuty's official MCP Server

<!-- mcp-name: io.github.PagerDuty/pagerduty-mcp -->

PagerDuty's local MCP (Model Context Protocol) server which provides tools to interact with your PagerDuty account, allowing you to manage incidents, services, schedules, event orchestrations, and more directly from your MCP-enabled client.

Embedded MCP Apps (Developer Experience)

Interactive React UIs for PagerDuty incident management, embedded directly in the Python MCP server for seamless IDE integration. Manage your full incident lifecycle without leaving your IDE.

Available Apps:

1. Incident Command Center 🚨

Full incident lifecycle management from your IDE:

  • Real-time incident feed with auto-refresh
  • Deep incident details: timeline, notes, alerts, changes
  • Quick actions: acknowledge, resolve, escalate
  • AI-powered similar incident detection
  • Alert inspection with raw data

Usage in VS Code: Ask Claude: Show me the incident command center

2. On-Call Manager 📅

Schedule management with override CRUD and coverage wizards:

  • View current on-call rotations across schedules
  • Create, edit, and delete schedule overrides
  • Escalation policy management with modal-based UI

Usage in VS Code: Ask Claude: Show me the on-call manager

3. On-Call Compensation Report 💰

Per-user on-call metrics with compliance tracking:

  • Hours worked, incident counts, interruption rates
  • Business hours vs. off-hours breakdown
  • Compliance status with EU Working Time Directive limits
  • Fairness/equity scoring across responders
  • CSV export

Usage in VS Code: Ask Claude: Show me the oncall compensation report

4. Service Dependency Graph 🕸️

Interactive graph of service relationships and dependencies:

  • Directed graph visualization
  • Impact sidebar showing upstream/downstream services

Usage in VS Code: Ask Claude: Show me the service dependency graph

5. Onboarding Wizard 🧙

Step-by-step PagerDuty account setup:

  • Team creation and user onboarding
  • Schedule setup with timezone support
  • Escalation policy and service configuration
  • AIOps / alert grouping configuration
  • Incident workflow setup

Usage in VS Code: Ask Claude: Open the onboarding wizard

Architecture:

  • ✅ Native VS Code integration (MCP resources)
  • ✅ Single process, no HTTP server management
  • ✅ Direct access to all PagerDuty MCP tools
  • ✅ Simple deployment: uv run pagerduty-mcp

Prerequisites

  • asdf-vm installed.

  • uv installed globally.

  • A PagerDuty User API Token. To obtain a PagerDuty User API Token, follow these steps:

    1. Navigate to User Settings. Click on your user profile icon, then select My Profile and then User Settings.

      For Freemium accounts, the permissions for generating User API tokens are limited to the user role as defined here.

    2. In your user settings, locate the API Access section.
    3. Click the Create API User Token button and follow the prompts to generate a new token.
    4. Copy the generated token and store it securely. You will need this token to configure the MCP server.

    Use of the PagerDuty User API Token is subject to the PagerDuty Developer Agreement.

Using with MCP Clients

Cursor Integration

You can configure this MCP server directly within Cursor's settings.json file, by following these steps:

  1. Open Cursor settings (Cursor Settings > Tools > Add MCP, or Cmd+, on Mac, or Ctrl+, on Windows/Linux).

  2. Add the following configuration:

    {
      "mcpServers": {
        "pagerduty-mcp": {
          "type": "stdio",
          "command": "uvx",
          "args": [
            "pagerduty-mcp",
            "--enable-write-tools"
            // This flag enables write operations on the MCP Server enabling you to creating incidents, schedule overrides and much more
          ],
          "env": {
            "PAGERDUTY_USER_API_KEY": "${input:pagerduty-api-key}"
          }
        }
      }
    }
    

VS Code Integration

You can configure this MCP server directly within Visual Studio Code's settings.json file, allowing VS Code to manage the server lifecycle.

  1. Open VS Code settings (File > Preferences > Settings, or Cmd+, on Mac, or Ctrl+, on Windows/Linux).

  2. Search for "mcp" and ensure "Mcp: Enabled" is checked under Features > Chat.

  3. Click "Edit in settings.json" under "Mcp > Discovery: Servers".

  4. Add the following configuration:

    {
        "mcp": {
            "inputs": [
                {
                    "type": "promptString",
                    "id": "pagerduty-api-key",
                    "description": "PagerDuty API Key",
                    "password": true
                }
            ],
            "servers": {
                "pagerduty-mcp": { 
                    "type": "stdio",
                    "command": "uvx",
                    "args": [
                        "pagerduty-mcp",
                        "--enable-write-tools"
                        // This flag enables write operations on the MCP Server enabling you to creating incidents, schedule overrides and much more
                    ],
                    "env": {
                        "PAGERDUTY_USER_API_KEY": "${input:pagerduty-api-key}",
                        "PAGERDUTY_API_HOST": "https://api.pagerduty.com"
                        // If your PagerDuty account is located in EU update your API host to https://api.eu.pagerduty.com
                    }
                }
            }
        }
    }
    

Trying it in VS Code Chat (Agent)

  1. Ensure MCP is enabled in VS Code settings (Features > Chat > "Mcp: Enabled").
  2. Configure the server as described above.
  3. Open the Chat view in VS Code (View > Chat).
  4. Make sure Agent mode is selected. In the Chat view, you can enable or disable specific tools by clicking the 🛠️ icon.
  5. Enter a command such as Show me the latest incident or List my event orchestrations to interact with your PagerDuty account through the MCP server.
  6. You can start, stop, and manage your MCP servers using the command palette (Cmd+Shift+P/Ctrl+Shift+P) and searching for MCP: List Servers. Ensure the server is running before sending commands. You can also try to restart the server if you encounter any issues.

Claude Desktop Integration

You can configure this MCP server to work with Claude Desktop by adding it to Claude's configuration file.

  1. Locate your Claude Desktop configuration file:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
  2. Create or edit the configuration file and add the following configuration:

    {
      "mcpServers": {
        "pagerduty-mcp": {
          "command": "uvx",
          "args": [
            "pagerduty-mcp",
            "--enable-write-tools"
          ],
          "env": {
            "PAGERDUTY_USER_API_KEY": "your-pagerduty-api-key-here",
            "PAGERDUTY_API_HOST": "https://api.pagerduty.com"
          }
        }
      }
    }
    
  3. Replace the placeholder values:

    • Replace /path/to/your/mcp-server-directory with the full path to the directory where you cloned the MCP server (e.g., /Users/yourname/code/pagerduty-mcp)
    • Replace your-pagerduty-api-key-here with your actual PagerDuty User API Token
    • If your PagerDuty account is located in the EU, update the API host to https://api.eu.pagerduty.com
  4. Restart Claude Desktop completely for the changes to take effect.

  5. Test the integration by starting a conversation with Claude and asking something like "Show me my latest PagerDuty incidents" or "List my event orchestrations" to verify the MCP server is working.

    Security Note: Unlike VS Code's secure input prompts, Claude Desktop requires you to store your API key directly in the configuration file. Ensure this file has appropriate permissions (readable only by your user account) and consider the security implications of storing credentials in plain text.

Running with Docker

The PagerDuty MCP server can be run in a Docker container, providing an isolated and portable deployment option. The Docker image uses stdio transport for MCP communication.

Prerequisites

  • Docker installed
  • A PagerDuty User API Token (see Prerequisites)

Quick Start

Build the Docker image:

docker build -t pagerduty-mcp:latest .

Run in read-only mode (default):

docker run -i --rm \
  -e PAGERDUTY_USER_API_KEY="your-api-key-here" \
  pagerduty-mcp:latest

Run with write tools enabled:

docker run -i --rm \
  -e PAGERDUTY_USER_API_KEY="your-api-key-here" \
  pagerduty-mcp:latest --enable-write-tools

For EU region:

docker run -i --rm \
  -e PAGERDUTY_USER_API_KEY="your-api-key-here" \
  -e PAGERDUTY_API_HOST="https://api.eu.pagerduty.com" \
  pagerduty-mcp:latest

Using with MCP Clients via Docker

To integrate the Docker container with MCP clients, you can use Docker as the command:

Claude Desktop example:

{
  "mcpServers": {
    "pagerduty-mcp": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "PAGERDUTY_USER_API_KEY=your-api-key-here",
        "pagerduty-mcp:latest"
      ]
    }
  }
}

Note: The Docker container uses stdio transport, making it compatible with MCP clients that expect standard input/output communication. Ensure you build the image first using docker build -t pagerduty-mcp:latest .

Transport modes

The server supports three MCP transports, selected via the --transport flag:

TransportUse caseDefault
stdioLocal clients launched as a subprocess (Cursor, VS Code).✅
streamable-httpLong-running remote/server deployments. MCP endpoint at /mcp.
sseLegacy Server-Sent Events transport.

For HTTP-based transports, --host (default 127.0.0.1) and --port (default 8000) control the listen address. These can also be set via environment variables MCP_HOST and MCP_PORT. Note: MCP_PORT must always be a valid integer — the CLI parses its type at startup regardless of --transport; range validation (1–65535) only applies for HTTP transports.

⚠️ Security — HTTP transports have no built-in authentication. When running streamable-http or sse, the MCP endpoint is exposed with no authentication, and every request uses the single PAGERDUTY_USER_API_KEY the server was started with. Any client that can reach the host/port can invoke tools — including write tools when --enable-write-tools is set — with that key's full PagerDuty privileges.

  • The default bind address is 127.0.0.1 (loopback only) — keep it that way for local use.
  • Only bind to 0.0.0.0/a routable address when the endpoint sits behind an authenticating reverse proxy / API gateway (e.g. oauth2-proxy, mTLS) or on a trusted network. Do not expose it directly to untrusted networks.

Example: run as a remote streamable-HTTP server

pagerduty-mcp --transport streamable-http --host 0.0.0.0 --port 8000
# MCP endpoint: http://<your-machine-ip>:8000/mcp
# ⚠️ Only use --host 0.0.0.0 behind an authenticating proxy or on a trusted network.

Using environment variables:

MCP_HOST=0.0.0.0 MCP_PORT=8000 pagerduty-mcp --transport streamable-http
# ⚠️ Only use MCP_HOST=0.0.0.0 behind an authenticating proxy or on a trusted network.

Docker:

docker run -d -p 8000:8000 \
  -e PAGERDUTY_USER_API_KEY="your-api-key-here" \
  -e MCP_HOST=0.0.0.0 \
  -e MCP_PORT=8000 \
  pagerduty-mcp:latest \
  --transport streamable-http
# ⚠️ Only use MCP_HOST=0.0.0.0 behind an authenticating proxy or on a trusted network.

The default remains stdio so existing local integrations are unaffected.

Set up locally

  1. Clone the repository

  2. Install asdf plugins

    asdf plugin add python
    asdf plugin add nodejs https://github.com/asdf-vm/asdf-nodejs.git
    asdf plugin add uv
    
  3. Install tool versions using asdf:

    asdf install
    
  4. Create a virtual environment and install dependencies using uv (now that asdf has set the correct Python and uv versions):

    uv sync
    
  5. Ensure uv is available globally.

    The MCP server can be run from different places so you need uv to be available globally. To do so, follow the official documentation.

    Tip: You may need to restart your terminal and/or VS Code for the changes to take effect.

  6. Run it locally

    To run your cloned PagerDuty MCP Server you need to update your configuration to use uv instead of uvx.

    "pagerduty-mcp": { 
        "type": "stdio",
        "command": "uv",
        "args": [
            "run",
            "--directory",
            "/path/to/your/mcp-server-directory",
            // Replace with the full path to the directory where you cloned the MCP server, e.g. "/Users/yourname/code/mcp-server",     
            "python",
            "-m",
            "pagerduty_mcp",
            "--enable-write-tools"
            // This flag enables write operations on the MCP Server enabling you to creating incidents, schedule overrides and much more
        ],
        "env": {
            "PAGERDUTY_USER_API_KEY": "${input:pagerduty-api-key}",
            "PAGERDUTY_API_HOST": "https://api.pagerduty.com"
            // If your PagerDuty account is located in EU update your API host to https://api.eu.pagerduty.com
        }
    }
    

Configuration

The MCP server is configured via environment variables:

Environment VariableRequiredDefaultDescription
PAGERDUTY_USER_API_KEYYes—Your PagerDuty User API Token.
PAGERDUTY_API_HOSTNohttps://api.pagerduty.comPagerDuty API base URL. Use https://api.eu.pagerduty.com for EU accounts.

Available Tools and Resources

This section describes the tools provided by the PagerDuty MCP server. They are categorized based on whether they only read data or can modify data in your PagerDuty account.

Important: By default, the MCP server only exposes read-only tools. To enable tools that can modify your PagerDuty account (write-mode tools), you must explicitly start the server with the --enable-write-tools flag. This helps prevent accidental changes to your PagerDuty data.

ToolAreaDescriptionRead-only
create_alert_grouping_settingAlert GroupingCreates a new alert grouping setting❌
delete_alert_grouping_settingAlert GroupingDeletes an alert grouping setting❌
get_alert_grouping_settingAlert GroupingRetrieves a specific alert grouping setting✅
list_alert_grouping_settingsAlert GroupingLists alert grouping settings with filtering✅
update_alert_grouping_settingAlert GroupingUpdates an existing alert grouping setting❌
get_incident_metrics_allAnalyticsRetrieves aggregated incident metrics across all services✅
get_incident_metrics_by_serviceAnalyticsRetrieves incident metrics grouped by service✅
get_incident_metrics_by_teamAnalyticsRetrieves incident metrics grouped by team✅
get_responder_load_metricsAnalyticsRetrieves responder load metrics✅
get_responder_metricsAnalyticsRetrieves responder performance metrics✅
get_business_service_dependenciesBusiness ServicesRetrieves dependencies for a specific business service✅
get_technical_service_dependenciesBusiness ServicesRetrieves technical service dependencies for a business service✅
list_business_servicesBusiness ServicesLists business services✅
get_change_eventChange EventsRetrieves a specific change event✅
list_change_eventsChange EventsLists change events with optional filtering✅
list_incident_change_eventsChange EventsLists change events related to a specific incident✅
list_service_change_eventsChange EventsLists change events for a specific service✅
get_event_orchestrationEvent OrchestrationsRetrieves a specific event orchestration✅
get_event_orchestration_globalEvent OrchestrationsGets the global orchestration configuration for an event orchestration✅
get_event_orchestration_routerEvent OrchestrationsGets the router configuration for an event orchestration✅
get_event_orchestration_serviceEvent OrchestrationsGets the service orchestration configuration for a specific service✅
list_event_orchestrationsEvent OrchestrationsLists event orchestrations with optional filtering✅
update_event_orchestration_routerEvent OrchestrationsUpdates the router configuration for an event orchestration❌
append_event_orchestration_router_ruleEvent OrchestrationsAdds a new routing rule to an event orchestration router❌
create_escalation_policyEscalation PolicyCreates a new escalation policy❌
get_escalation_policyEscalation PolicyRetrieves a specific escalation policy✅
list_escalation_policiesEscalation PolicyLists escalation policies✅
update_escalation_policyEscalation PolicyUpdates an existing escalation policy❌
add_note_to_incidentIncidentsAdds note to an incident❌
add_respondersIncidentsAdds responders to an incident❌
create_incidentIncidentsCreates a new incident❌
get_alert_from_incidentIncidentsRetrieves a specific alert from an incident✅
get_incidentIncidentsRetrieves a specific incident✅
get_outlier_incidentIncidentsRetrieves outlier incident information for a specific incident✅
get_past_incidentsIncidentsRetrieves past incidents related to a specific incident✅
get_related_incidentsIncidentsRetrieves related incidents for a specific incident✅
list_alerts_from_incidentIncidentsLists all alerts for a specific incident with pagination✅
list_incident_notesIncidentsLists all notes for a specific incident✅
list_incidentsIncidentsLists incidents✅
manage_incidentsIncidentsUpdates status, urgency, assignment, or escalation level❌
get_incident_workflowIncident WorkflowsRetrieves a specific incident workflow✅
list_incident_workflowsIncident WorkflowsLists incident workflows with optional filtering✅
start_incident_workflowIncident WorkflowsStarts a workflow instance for an incident❌
get_log_entryLog EntriesRetrieves a specific log entry by ID✅
list_log_entriesLog EntriesLists all log entries across the account with time filtering✅
add_team_memberTeamsAdds a user to a team with a specific role❌
create_teamTeamsCreates a new team❌
delete_teamTeamsDeletes a team❌
get_teamTeamsRetrieves a specific team✅
list_team_membersTeamsLists members of a team✅
list_teamsTeamsLists teams✅
remove_team_memberTeamsRemoves a user from a team❌
update_teamTeamsUpdates an existing team❌
get_user_dataUsersGets the current user's data✅
list_usersUsersLists users in the PagerDuty account✅
list_oncallsOn-callLists on-call schedules✅
list_prioritiesPrioritiesLists priorities defined in the account✅
create_schedule_overrideSchedulesCreates an override for a schedule❌
get_scheduleSchedulesRetrieves a specific schedule✅
list_schedule_usersSchedulesLists users in a schedule✅
list_schedulesSchedulesLists schedules✅
create_scheduleSchedulesCreates a new on-call schedule❌
update_scheduleSchedulesUpdates an existing schedule❌
create_serviceServicesCreates a new service❌
get_serviceServicesRetrieves a specific service✅
list_servicesServicesLists services✅
update_serviceServicesUpdates an existing service❌
create_status_page_postStatus PagesCreates a new post (incident or maintenance) on a status page❌
create_status_page_post_updateStatus PagesAdds a new update to an existing status page post❌
get_status_page_postStatus PagesRetrieves details of a specific status page post✅
list_status_page_impactsStatus PagesLists available impact levels for a status page✅
list_status_page_post_updatesStatus PagesLists all updates for a specific status page post✅
list_status_page_severitiesStatus PagesLists available severity levels for a status page✅
list_status_page_statusesStatus PagesLists available statuses for a status page✅
list_status_pagesStatus PagesLists all status pages with optional filtering✅
create_webhook_subscriptionWebhooksCreates a new webhook subscription (returns signing secret)❌
delete_webhook_subscriptionWebhooksDeletes a webhook subscription❌
get_webhook_subscriptionWebhooksRetrieves a specific webhook subscription✅
list_webhook_subscriptionsWebhooksLists webhook subscriptions with optional type filtering✅
update_webhook_subscriptionWebhooksUpdates an existing webhook subscription❌
get_extension_schemaExtension SchemasRetrieves a specific extension schema✅
list_extension_schemasExtension SchemasLists available extension schemas (vendors)✅

Support

PagerDuty's MCP server is an open-source project, and as such, we offer only community-based support. If assistance is required, please open an issue in GitHub or PagerDuty's community forum.

Contributing

If you are interested in contributing to this project, please refer to our Contributing Guidelines.

Related MCP servers

Run ads on Google, Meta, LinkedIn, TikTok and more from AI. 430+ tools across 13 platforms.

0
JavaScript
MIT
View repository →

Live trading-pipeline intelligence for AI agents: signal scoring, calibration, recorded outcomes.

Agent-complete localization: extract strings, push keys, AI-translate, pull type-safe TS types.

1
TypeScript
MIT
View repository →
RUrun.pay logo

run.pay

Active

Stripe-native marketplace where AI agents discover and pay per call for API services.

1
Python
MIT
View repository →

Real-time Amazon, WIPO & PACER data for AI agents — 19 tools via the MCP protocol.

1
Python
MIT
View repository →
MCMCP Gateway logo

MCP Gateway

Maintained

Multi-tenant MCP platform with OAuth 2.1, Entra SSO, RBAC and audit logging.

6
Python
MIT
View repository →