PagerDuty MCP Server
About
MCP server exposing PagerDuty incidents, services, schedules, and on-calls to AI agents — read, acknowledge, resolve, with OAuth and API key auth
Details
- License
- MIT
Explore
- Exposes PagerDuty API tools for LLMs
- Read and write operations on incidents, services, teams, users
- Optional include parameter to reduce token usage
- Consistent response format with metadata and optional error
- Automatic pagination and rate limit handling
- Supports API token, OAuth, and per-request token authentication
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
PagerDuty MCP ServerCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
1. Initialize your local Python environment:
cd pagerduty-mcp-server
brew install uv
uv sync
2. Configure authentication (see Authentication below).
Priority: X-PagerDuty-Token HTTP header > PAGERDUTY_API_TOKEN environment variable > OAuth 2.0 PKCE
The test suite includes both unit tests and integration tests. Integration tests require a real connection to the PagerDuty API, while unit tests can run without API access.
The pytest-cov args are optional, use them to include a test coverage report in the output.
To run all tests (integration tests will be automatically skipped if PAGERDUTY_API_TOKEN is not set):
uv run pytest [--cov=src --cov-report=term-missing]
To run only unit tests (no API token required):
uv run pytest -m unit [--cov=src --cov-report=term-missing]
To run only integration tests (requires PAGERDUTY_API_TOKEN set in environment):
uv run pytest -m integration [--cov=src --cov-report=term-missing]
To run only tests related to a specific submodule:
uv run pytest -m <client|escalation_policies|...> [--cov=src --cov-report=term-missing]
get_escalation_policies
List or get details for escalation policies
get_incidents
List or get details for incidents (supports filtering by status, urgency, service, team, and time range)
get_oncalls
List on-call entries for a time range
get_schedules
List or get details for schedules
get_services
List or get details for services
get_teams
List or get details for teams
get_users
List or get details for users
list_users_oncall
List users on call for a specific schedule
build_user_context
Build a context object for the current authenticated user
acknowledge_incident
Acknowledge an incident (signals active investigation)
resolve_incident
Resolve an incident (stops further escalations)
add_incident_note
Add a note to an incident (for recording investigation progress or context)
- get_escalation_policies — List or get details for escalation policies
- get_incidents — List or get details for incidents (supports filtering by status, urgency, service, team, and time range)
- get_oncalls — List on-call entries for a time range
- get_schedules — List or get details for schedules
- get_services — List or get details for services
- get_teams — List or get details for teams
- get_users — List or get details for users
- list_users_oncall — List users on call for a specific schedule
- build_user_context — Build a context object for the current authenticated user
- acknowledge_incident — Acknowledge an incident (signals active investigation)
- resolve_incident — Resolve an incident (stops further escalations)
- add_incident_note — Add a note to an incident (for recording investigation progress or context)
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"pagerduty mcp server": {
"pagerduty-mcp-server": {
"command": "uv",
"args": [
"sync"
]
}
}
}
}
McpServers
{
"pagerduty-mcp-server": {
"command": "uv",
"args": [
"sync"
]
}
}
<a href="https://glama.ai/mcp/servers/@wpfleger96/pagerduty-mcp-server">
</a>
Overview
The PagerDuty MCP Server provides a set of tools for interacting with the PagerDuty API. These tools are designed to be used by LLMs to perform various operations on PagerDuty resources such as incidents, services, teams, and users.Getting Started
1. Initialize your local Python environment:
cd pagerduty-mcp-server
brew install uv
uv sync
2. Configure authentication (see Authentication below).
Authentication
Priority: X-PagerDuty-Token HTTP header > PAGERDUTY_API_TOKEN environment variable > OAuth 2.0 PKCE
Option 1: X-PagerDuty-Token Header (Platform Integration)
When running as part of a platform that injects per-request credentials, the server reads theX-PagerDuty-Token HTTP header. This takes highest priority and does not require any local configuration.
Option 2: API Token (Recommended for Most Users)
Set thePAGERDUTY_API_TOKEN environment variable, or add it to a .env file in the project root. The server will automatically load environment variables from the .env file if present.
Environment variable:
export PAGERDUTY_API_TOKEN=your_api_token_here
.env file (recommended):
echo "PAGERDUTY_API_TOKEN=your_api_token_here" > .env
Option 3: OAuth 2.0 PKCE (Local Interactive Use)
OAuth is available for local standalone usage. It opens a browser for authentication and stores tokens securely in the OS keyring. OAuth is opt-in — it only activates whenPAGERDUTY_CLIENT_ID is set and no API token is present.
Setup:
1. Register a PagerDuty OAuth application at Integrations → Developer Tools → My Apps.
2. Set the required scope to read write.
3. Set the redirect URI to http://localhost:5173/oauth/pagerduty (default port).
4. Set the PAGERDUTY_CLIENT_ID environment variable to your application's client ID.
Optional configuration:
- Set PAGERDUTY_CLIENT_SECRET to enable token refresh (confidential client).
- Set PAGERDUTY_OAUTH_CALLBACK_PORT to override the default callback port (5173).
Usage
Claude/Cursor
{
"mcpServers": {
"pagerduty-mcp-server": {
"command": "uvx",
"args": ["pagerduty-mcp-server"],
"env": {
"PAGERDUTY_API_TOKEN": "<PAGERDUTY_API_TOKEN>"
}
}
}
}
As Standalone Server
uv run pagerduty-mcp-server
Available Tools
Read Tools
-get_escalation_policies — List or get details for escalation policies
- get_incidents — List or get details for incidents (supports filtering by status, urgency, service, team, and time range)
- get_oncalls — List on-call entries for a time range
- get_schedules — List or get details for schedules
- get_services — List or get details for services
- get_teams — List or get details for teams
- get_users — List or get details for users
- list_users_oncall — List users on call for a specific schedule
- build_user_context — Build a context object for the current authenticated user
Write Tools
-acknowledge_incident — Acknowledge an incident (signals active investigation)
- resolve_incident — Resolve an incident (stops further escalations)
- add_incident_note — Add a note to an incident (for recording investigation progress or context)
The include Parameter
Most read tools accept an optional include parameter — a list of field names to return. When specified, only those fields are included in each response object, which reduces token usage in LLM contexts.
```python
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



