PagerDuty MCP server: hosted, 18 tools, OAuth or API key
PagerDuty moved its MCP server to a hosted endpoint and archived the local one. The credential now decides what an agent can change.
Checked 6 October 2026 · from PagerDuty's MCP Server docs, its archived repository and the local server's tools/list response
One of 91 guides to monitoring and developer tools. Each covers what an AI coding agent can get out of the tool through MCP, the protocol that lets the agent query the tool directly.
Summary
PagerDuty hosts its official MCP server at https://mcp.pagerduty.com/mcp, with mcp.eu.pagerduty.com/mcp for EU accounts. It accepts OAuth or a PagerDuty API key, and there is nothing to install.
On 4 September 2026, PagerDuty deprecated the local server and archived its GitHub repository. Its docs direct users to the hosted server.
The hosted server groups actions into 18 tools. Eleven browse_ tools read data and seven manage_ tools change it. PagerDuty states that tool filtering is unavailable on the hosted server, so a Scoped OAuth client is the way to limit which calls succeed.
The deprecated local server, pagerduty-mcp 1.1.0 on PyPI, registered 101 tools and started read-only at 63. Its HTTP transports had no authentication. The local figures below were measured on 19 August 2026.
What is the PagerDuty MCP server?
It is PagerDuty's server for the Model Context Protocol. The agent gains tools for reading incidents, schedules, escalation policies and services.
PagerDuty runs it as a hosted service. Each request carries an OAuth token or an API key, and the agent acts with that credential's permissions. Some filters, such as scoping incidents by team or assignee, need user-level credentials.
Each hosted tool takes an action. browse_incidents covers list, get, list_alerts, list_notes and five more, so one tool stands in for several API calls.
The deprecated local server ran on your machine with a user API key. It started read-only: its write tools were absent from the tool list until it was started with --enable-write-tools.
PagerDuty covers production observability partially through incident response, and reaches nothing in code review, release, agent observability or cost.
| Part of the work | What PagerDuty has here | Can an agent reach it |
|---|---|---|
| Code, tests & review | None | No code-review product |
| CI & release | Change events | Partial. Change events record that a deploy happened, which is release context rather than a pipeline |
| Production observability | Incidents, alerts, escalation, on-call schedules | Partial. Specific. PagerDuty holds the human response to an outage, not the telemetry that detected it |
| Agent observability & evals | None | No traces, evaluations or prompt versioning for your own agents |
| AI cost management | None | No token or model spend data |
For an agent, PagerDuty answers questions about who was paged and what happened next, and nothing about why the system broke. An agent connected here can tell you which service alerted, who was on call and how long acknowledgement took. It cannot show you the failing query behind it, so this connector sits beside a telemetry one.
What can an AI agent do with PagerDuty?
| Task | Tools | Works | Watch out for |
|---|---|---|---|
| Understand a live incident | browse_incidents | Yes | Incident detail, not the underlying telemetry |
| Find who is on call now | browse_schedules browse_escalation_policies | Yes | Overrides matter; read the schedule rather than the rotation alone |
| Review how a service is configured | browse_services | Yes | Service records are what someone declared, which can differ from runtime behavior |
| Check what changed before the page | browse_change_events browse_incidents | Yes | Only present if your pipeline sends change events to PagerDuty |
| Analyze response performance | browse_activity browse_incidents | Yes | Log entries are the incident timeline, not application logs |
| Acknowledge or resolve an incident | manage_incidents | Yes | Listed on every hosted connection. The credential's scope decides whether the call succeeds |
| Explain why the service degraded | No | No tool covers this. PagerDuty records the response, not the cause, so there are no metrics, logs or traces |
Each hosted tool takes an action, such as list, get or add_note, so one tool covers several API calls. The manage_ tools are always listed on the hosted server, and a Scoped OAuth client decides which of their calls succeed.
18 hosted tools: 11 that browse and 7 that change your account
- Incidents3
browse_incidentsbrowse_activitybrowse_change_events- Incidents, write1
manage_incidents- On call3
browse_schedulesbrowse_escalation_policiesbrowse_users- Schedules, write1
manage_schedules- Services and teams2
browse_servicesbrowse_teams- Services and teams, write2
manage_servicesmanage_teams- Events and status3
browse_event_orchestrationsbrowse_alert_groupingbrowse_status_pages- Events and status, write3
manage_event_orchestrationsmanage_alert_groupingmanage_status_pages
Listed from PagerDuty's MCP Server page, updated 4 September 2026 and read on 6 October 2026. Every hosted tool is listed on every connection, because tool filtering is unavailable there. The deprecated local server registered 101 tools, 63 of them without its write flag, counted on 19 August 2026.
What the tool definitions cost in context
A client that loads every tool definition at the start of a session spends this much context before the first question. Claude Code defers definitions by default through tool search, and loads a tool's definition when the agent needs it. The method below gives the version and date measured.
A context window is the amount of text a model can hold at once. A client that loads every tool definition upfront sends each tool's name, description and input schema to the model when the session starts. That list is charged whether or not a single tool is called.
These figures were measured on the deprecated local server, on 19 August 2026. Enabling writes there was expensive twice over. It added 38 tools that can change your on-call configuration, and it took the connector from roughly 6% of a 200,000-token window to roughly 16%.
The hosted server's 18 tools carry different definitions, and they have not been measured.
| Tool set | Tools | Tokens (GPT-5.6, GPT-5.5) | Tokens (GPT-4, GPT-3.5) | Tokens (Claude Haiku 4.5 to Opus 5) | Share of a 200,000-token window |
|---|---|---|---|---|---|
| Local server, read-only default | 63 | 12,695 to 19,287 | 12,371 to 19,304 | 17,684 to 23,063 | 6.2% to 11.5% |
| Local server, --enable-write-tools | 101 | 31,904 to 48,129 | 31,058 to 48,209 | 43,430 to 57,729 | 15.5% to 28.9% |
Encodings: GPT-5.6, GPT-5.5 o200k_base; GPT-4, GPT-3.5 cl100k_base; Claude Haiku 4.5 to Opus 5 count_tokens. Counted 19 August 2026 from tools/list on pagerduty-mcp 1.1.0, run locally with a placeholder key. It ran once with defaults and once with --enable-write-tools.
Registration is static, so no PagerDuty account was involved. Figures cover name, description and input schema. The two models in column one share the o200k_base encoding, so they get one count. The spread is formatting, about 52%. Reasoning tokens are output, spent per request. The tool list is billed as input whenever the client loads it.
The Claude figures are measured rather than encoded. Anthropic publishes no local tokenizer, so the definitions were sent to the API's count_tokens endpoint and a no-tools baseline subtracted. The range covers two tokenizer generations rather than two serializations. Haiku 4.5 and Opus 4.6 sit at the low end, Opus 5 and Sonnet 5 at the high end. The gap between them is about a third.
PagerDuty MCP server limits: where answers come back incomplete
PagerDuty documents every limit below. The first comes from the hosted server's own limitations, and the second from the deprecated local server's README.
The agent says: “I am only reading incidents, so I cannot change anything.” Every `manage_` tool is in the hosted tool list.
PagerDuty states that tool filtering is unavailable on the hosted server. All 18 tools are listed, including the seven manage_ tools that create incidents, change schedules and remove team members.
The credential decides what succeeds. A Scoped OAuth client is PagerDuty's documented way to limit which tools work.
Guard: Connect investigation agents with a read-scoped OAuth client, so a manage_ call fails at PagerDuty.
The agent says: “The server is running locally, so it is private.” On HTTP transports it is open to anything that can reach the port.
The deprecated local server's README states it plainly: 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 and port can invoke tools with that key's full PagerDuty privileges. If the server was also started with --enable-write-tools, that includes creating incidents and changing schedules.
Guard: Move to the hosted server, which authenticates every request. A team that keeps the local server should use stdio, or bind HTTP to localhost behind an authenticating proxy.
The agent says: “Nothing changed before the incident.” Nothing was sent to PagerDuty.
Change events exist only if your deployment pipeline sends them. A pipeline that never integrated produces a real, empty answer, and the response does not distinguish that from a quiet period.
Guard: Confirm the change-events integration exists before treating an empty result as evidence that nothing shipped.
How to configure PagerDuty MCP for agents
- 1
Use the hosted server
PagerDuty deprecated the local server on 4 September 2026 and points users to
mcp.pagerduty.com/mcp. - 2
Scope through the credential
Tool filtering is unavailable on the hosted server, so all 18 tools are listed. A Scoped OAuth client limits which calls succeed.
- 3
Prefer user-level credentials for incident work
PagerDuty notes that some filters, such as scoping incidents by team or assignee, need user-level authentication.
- 4
Create the OAuth client first
PagerDuty does not support Dynamic Client Registration, so OAuth needs a client ID and secret from your account.
- 5
If you keep the local server, keep its read-only default
Its write tools were omitted from the tool list until
--enable-write-toolswas set. On 19 August 2026, that default cost about 12,695 tokens, and enabling writes took it to about 31,904.
Paste this into your agent’s instructions
PagerDuty's silent failure is absence rather than truncation: change events that were never sent, and calls the credential is not scoped for. The block makes the agent distinguish an empty result from an unconfigured integration.
When you answer using PagerDuty MCP tools, state: - Whether the credential allows changes. On the hosted server, manage_ tools are always listed, and the OAuth scope decides which calls succeed. - The time window you searched, and the service or team scope. - Whether change events exist for the period. They appear only if a pipeline sends them, so an empty result is not evidence that nothing shipped. When a search returns nothing, say so, and state the constraints above. Write your answer in ASD-STE100 Simplified Technical English. Use short sentences with one idea in each.
Do you need the MCP server at all?
Sometimes. PagerDuty's REST API is well documented, and a coding agent can call it with the same API key the hosted server accepts.
The server earns its place through its tool descriptions and grouped actions. An agent choosing endpoints without descriptions chooses less well.
The trade is context. The hosted server's 18 definitions were not measured here. On the deprecated local server, 63 read-only definitions cost roughly 6% of a 200,000-token window in a client that loads every definition upfront.
Connect the server for open-ended incident investigation. Call the API directly when the question is fixed and you want the context back.
PagerDuty MCP server setup
The server is hosted at https://mcp.pagerduty.com/mcp. EU accounts use https://mcp.eu.pagerduty.com/mcp.
An API key goes in the header as Authorization: Token token=<key>. OAuth takes a client ID and secret from your PagerDuty account, or a token sent as Authorization: Bearer <token>.
The local server is deprecated, and its repository has been read-only since 4 September 2026. Its setup appears at the end for teams that still run it.
Claude Code, with an API key
PagerDuty documents this command. The key stays in an environment variable.
PAGERDUTY_API_KEY=<your-key> claude mcp add-json pagerduty \
'{"type":"http","url":"https://mcp.pagerduty.com/mcp",
"headers":{"Authorization":"Token token=${PAGERDUTY_API_KEY}"}}'Claude Code, with OAuth
Register an OAuth client with a fixed callback, such as http://localhost:8080/callback, then pass its ID and port.
MCP_CLIENT_SECRET=<client-secret> claude mcp add-json pagerduty \
'{"type":"http","url":"https://mcp.pagerduty.com/mcp",
"oauth":{"clientId":"<client-id>","callbackPort":8080}}' \
--client-secretCursor
In ~/.cursor/mcp.json for all projects, or .cursor/mcp.json in one. PagerDuty documents the URL alone for OAuth. Add the header below to use an API key.
{"mcpServers":{"pagerduty":{
"url":"https://mcp.pagerduty.com/mcp",
"headers":{"Authorization":"Token token=<your-key>"}}}}Codex CLI
Codex reads TOML, so the JSON blocks above will not transfer.
[mcp_servers.pagerduty]
url = "https://mcp.pagerduty.com/mcp"
http_headers = { Authorization = "Token token=<your-key>" }Every other client
Each block below is the configuration for one client, with the file path and the key that client expects.
Claude Desktop
macOS ~/Library/Application Support/Claude/claude_desktop_config.json. Windows %APPDATA%\Claude\claude_desktop_config.json. There is no CLI. Edit through Settings, Developer, Edit Config.
Quit and restart fully for changes to load. This route proxies through mcp-remote with the header in env. Logs at ~/Library/Logs/Claude/mcp.log.
{"mcpServers":{"pagerduty":{"command":"npx",
"args":["-y","mcp-remote","https://mcp.pagerduty.com/mcp",
"--header","Authorization:${AUTH_HEADER}"],
"env":{"AUTH_HEADER":"Token token=<your-key>"}}}}Gemini CLI
~/.gemini/settings.json globally, or .gemini/settings.json per project. Key mcpServers, using httpUrl. CLI: gemini mcp add.
{"mcpServers":{"pagerduty":{
"httpUrl":"https://mcp.pagerduty.com/mcp",
"headers":{"Authorization":"Token token=<your-key>"}}}}VS Code Copilot
.vscode/mcp.json per workspace, or your user profile. PagerDuty documents an inputs prompt, so VS Code asks for the key on first use and stores it. With the URL alone, VS Code asks for OAuth client credentials when the server starts.
{"inputs":[{"type":"promptString","id":"pagerduty-api-key",
"description":"PagerDuty API Key","password":true}],
"servers":{"pagerduty":{"type":"http",
"url":"https://mcp.pagerduty.com/mcp",
"headers":{"Authorization":"Token token=${input:pagerduty-api-key}"}}}}`.vscode/mcp.json` takes the key `servers`. VS Code also reads mcpServers from a portable .mcp.json at the project root or ~/.copilot/mcp-config.json. Its docs recommend the portable files for new servers.
Windsurf
~/.codeium/windsurf/mcp_config.json, which is the path Windsurf documents. Key mcpServers, using serverUrl, carrying the same Authorization header.
Zed
~/.config/zed/settings.json, carrying the same Authorization header as the blocks above.
The key is `context_servers`. Zed does not call them MCP servers in config, so searching its settings for mcp finds nothing.
Google Antigravity
~/.gemini/config/mcp_config.json globally, or .agents/mcp_config.json per project. Key mcpServers. There is no CLI. Use the /mcp overlay in the editor. Supports stdio, streamable HTTP, SSE and websocket.
{"mcpServers":{"pagerduty":{"type":"http",
"url":"https://mcp.pagerduty.com/mcp",
"headers":{"Authorization":"Token token=<your-key>"}}}}Amp (Sourcegraph)
~/.config/amp/settings.json or .amp/settings.json, carrying the same Authorization header. The amp mcp CLI covers approve, doctor and oauth.
The key is `amp.mcpServers`, namespaced. A bare mcpServers block is ignored.
Cline
~/.cline/mcp.json per the docs. The source also reads ~/.cline/data/settings/cline_mcp_settings.json. Key mcpServers, standard JSON shape, carrying the same Authorization header. Supports stdio, streamable HTTP and SSE.
Goose (Block)
~/.config/goose/config.yaml, as a streamable HTTP extension carrying the same Authorization header.
YAML, and servers are called `extensions`. Goose does not use the MCP vocabulary in config at all. Add one interactively with goose configure, or per session with goose session --with-extension.
Kiro (AWS)
.kiro/settings/mcp.json per workspace, or ~/.kiro/settings/mcp.json globally. Key mcpServers, standard JSON shape, carrying the same Authorization header.
Warp
~/.warp/.mcp.json or .warp/.mcp.json. Key mcpServers, standard shape, carrying the same Authorization header. Also addable through the /agent-add-mcp skill.
JetBrains Junie
.junie/mcp/mcp.json per project, or ~/.junie/mcp/mcp.json. Key mcpServers, carrying the same Authorization header. Use /mcp in the CLI to manage.
Roo Code
.roo/mcp.json per project. The global file is mcp_settings.json, opened from the Roo Code MCP settings view with Edit Global MCP. Key mcpServers, carrying the same Authorization header.
Continue
.continue/mcpServers/*.yaml, one file per server, carrying the same Authorization header.
YAML, and `mcpServers` is a list, not an object. Every JSON client keys servers by name. Continue takes an array, so a converted config will not parse.
Trae
.trae/mcp.json per project, or paste into the UI under Raw Config (JSON). Key mcpServers, standard shape, carrying the same Authorization header.
Devin
Devin has no config file to edit. Servers are added through a web form in the settings UI, and Devin's documentation states you do not need to write or paste JSON. Enter the URL and the same Authorization header there.
Deprecated local server, read-only
The archived local server still installs from PyPI. It needs a user API key in PAGERDUTY_USER_API_KEY, and PAGERDUTY_API_HOST if your account is not on the default host. Its 38 write tools stay unregistered by default.
claude mcp add-json "pagerduty" '{"command":"uvx",
"args":["pagerduty-mcp"],
"env":{"PAGERDUTY_USER_API_KEY":"<your-key>"}}'Deprecated local server, with write tools
Run this as a separate entry rather than replacing the read-only one, so an investigation session cannot reach it.
uvx pagerduty-mcp --enable-write-tools
# env: PAGERDUTY_USER_API_KEY=<your-key>Deprecated local server, Docker
Same key, same flags, without putting the package on your machine.
docker run -i --rm -e PAGERDUTY_USER_API_KEY \ pagerduty-mcp:latest
Read-only access, permissions and security
Write tools are listed by default on the hosted server
PagerDuty states that tool filtering is unavailable there. A Scoped OAuth client limits which tools succeed, so scope the client before connecting an agent.
The hosted server authenticates every request
It accepts an OAuth token or a PagerDuty API key in the
Authorizationheader. A team on OAuth avoids placing a user API key in a local process on every machine.User-level and account-level credentials both work
A user credential carries one person's permissions. An account-level key or app token reaches further, so give the agent the narrowest credential that answers its questions.
The deprecated local server was weaker on HTTP
PagerDuty documented that its
streamable-httpandssetransports, which is server-sent events, had no authentication. Every request used the single API key the server held.The local server declared its own read-only tools
63 of its 101 carried a
readOnlyHintof true, matching its default set exactly, as counted on 19 August 2026.
Troubleshooting
- A `manage_` tool call is refused
- The credential lacks that permission. On the hosted server, every tool is listed, and the scope of the OAuth client decides which calls succeed.
- 401 on connect
- The
Authorizationheader is missing or malformed. An API key goes asToken token=<key>, and an OAuth token asBearer <token>. EU accounts usemcp.eu.pagerduty.com/mcp. - OAuth fails at client registration
- PagerDuty does not support Dynamic Client Registration. Create an OAuth client in your PagerDuty account, then give the MCP client its ID and secret.
- Incident filters by team or assignee fail
- PagerDuty notes that some tools and filters need user-level authentication. An account-level credential cannot scope incidents to the person behind it.
- Change events are missing for the period
- Change events exist only if your deployment pipeline sends them. An unintegrated pipeline produces the same empty result as a quiet period.
- Another machine is using your local server
- The deprecated local server's HTTP transports have no authentication. Move to the hosted server, or bind the local one to localhost behind an authenticating proxy.
PagerDuty MCP server: Reference
| Item | Value |
|---|---|
| Endpoint | https://mcp.pagerduty.com/mcp · EU https://mcp.eu.pagerduty.com/mcp |
| Auth | OAuth client or token, or Authorization: Token token=<key> |
| Tools | 18 hosted: 11 browse_ and 7 manage_, read 6 October 2026 |
| Tool filtering | Unavailable on the hosted server. Scope with a Scoped OAuth client |
| Live check | HTTP 401 to an unauthenticated POST, 6 October 2026 |
| Local server status | Deprecated and archived 4 September 2026 · last release PyPI 1.1.0, 7 July 2026 |
| Adoption | 79 stars, 41 forks on 6 October 2026 · Apache 2.0 license |
| Local package | pagerduty-mcp on PyPI, plus a Docker image |
| Local transport | stdio, streamable HTTP and SSE. The HTTP transports carry no authentication |
| Local tools | 101 registered · 63 without the write flag, counted on 1.1.0, 19 August 2026 |
What engineers report
PagerDuty archived the local server's repository on 4 September 2026, at Apache 2.0 and 79 stars. Public discussion is small, so the two issues below are the whole record rather than a sample.
| What was checked | What it shows |
|---|---|
| Stars | 79, archived repository, 6 October 2026 |
| Latest local release | PyPI 1.1.0, 7 July 2026 |
| License | Apache 2.0 |
| Tools | 18 hosted · 101 on the deprecated local server |
| Hosted endpoint | mcp.pagerduty.com/mcp, OAuth or API key |
“The PagerDuty MCP server is great! But it exposes a bit too many tools, especially given LLMs today will have degraded performance with the increase number of MCP tools available to them.”
“The MCP implementation does not support OAuth2 Tokens. The underlying api expects the Authorization header to be slightly different between API keys and OAuth2 Tokens.”
Repository facts from the GitHub API, retrieved 6 October 2026. Hosted tool names from PagerDuty's MCP Server page, updated 4 September 2026. Local tool counts come from the local server's own tools/list response on 19 August 2026, captured once with defaults and once with --enable-write-tools.
Should you connect an agent to PagerDuty?
Yes. Best for PagerDuty teams on the hosted server, with a read-scoped credential for investigation work.
- Strongest fit
- Teams who want an agent reading incident history, on-call schedules and escalation policies during or after an outage.
- Main advantage
- Hosted, with OAuth or an API key, so nothing runs locally and every request is authenticated.
- Main weakness
- Tool filtering is unavailable on the hosted server, so the write tools are always listed.
- Operational risk
- An agent with a broad credential can create incidents and change schedules. Scope the OAuth client before connecting it.
From Oodle
One platform for agent traces and infrastructure
Agent traces usually sit in a different product from the rest of your telemetry, so when a slow database makes an agent slow the symptom is in one tool and the cause is in another. Oodle keeps both in one query surface.
See agent observabilityFrequently asked questions
How many tools does the PagerDuty MCP server have?
The hosted server lists 18 tools, 11 for browsing and 7 for changes, and each takes an action such as list or get. The deprecated local server registered 101, with 63 available by default, counted on version 1.1.0 on 19 August 2026.
Is it read-only by default?
The hosted server lists every tool, and PagerDuty states that tool filtering is unavailable there. A Scoped OAuth client limits which calls succeed. The deprecated local server started read-only until --enable-write-tools was set.
Is the local HTTP transport safe to expose?
It is unsafe. PagerDuty documented that the local server's streamable HTTP and SSE transports had no built-in authentication. The hosted server authenticates every request with OAuth or an API key.
Is there a hosted version?
Yes. PagerDuty hosts the server at https://mcp.pagerduty.com/mcp, with OAuth or API-key authentication. On 4 September 2026 it deprecated the local server and archived its repository.
Can it tell me why an incident happened?
No. PagerDuty records the alert and the human response, not the telemetry. Pair it with an observability connector.