NewAgent Observability — find failures before customers do.
Back to directory
PagerDuty logo

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.

Connector
Official, hosted at `mcp.pagerduty.com`
Coverage
Incidents, schedules, escalation, services, status pages
Tools
18 hosted tools; local server deprecated
Biggest risk for an agent
Write tools load unless OAuth scopes them

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 workWhat PagerDuty has hereCan an agent reach it
Code, tests & reviewNoneNo code-review product
CI & releaseChange eventsPartial. Change events record that a deploy happened, which is release context rather than a pipeline
Production observabilityIncidents, alerts, escalation, on-call schedulesPartial. Specific. PagerDuty holds the human response to an outage, not the telemetry that detected it
Agent observability & evalsNoneNo traces, evaluations or prompt versioning for your own agents
AI cost managementNoneNo 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?

TaskToolsWorksWatch out for
Understand a live incidentbrowse_incidentsYesIncident detail, not the underlying telemetry
Find who is on call nowbrowse_schedules browse_escalation_policiesYesOverrides matter; read the schedule rather than the rotation alone
Review how a service is configuredbrowse_servicesYesService records are what someone declared, which can differ from runtime behavior
Check what changed before the pagebrowse_change_events browse_incidentsYesOnly present if your pipeline sends change events to PagerDuty
Analyze response performancebrowse_activity browse_incidentsYesLog entries are the incident timeline, not application logs
Acknowledge or resolve an incidentmanage_incidentsYesListed on every hosted connection. The credential's scope decides whether the call succeeds
Explain why the service degradedNoNo 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 setToolsTokens (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 default6312,695 to 19,28712,371 to 19,30417,684 to 23,0636.2% to 11.5%
Local server, --enable-write-tools10131,904 to 48,12931,058 to 48,20943,430 to 57,72915.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. 1

    Use the hosted server

    PagerDuty deprecated the local server on 4 September 2026 and points users to mcp.pagerduty.com/mcp.

  2. 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. 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. 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. 5

    If you keep the local server, keep its read-only default

    Its write tools were omitted from the tool list until --enable-write-tools was 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.

Terminal
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.

Terminal
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.

Terminal
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-secret

Cursor

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.

Terminal
{"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.

Terminal
[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.

Terminal
{"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.

Terminal
{"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.

Terminal
{"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.

Terminal
{"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.

Terminal
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.

Terminal
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.

Terminal
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 Authorization header. 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-http and sse transports, 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 readOnlyHint of 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 Authorization header is missing or malformed. An API key goes as Token token=<key>, and an OAuth token as Bearer <token>. EU accounts use mcp.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

ItemValue
Endpointhttps://mcp.pagerduty.com/mcp · EU https://mcp.eu.pagerduty.com/mcp
AuthOAuth client or token, or Authorization: Token token=<key>
Tools18 hosted: 11 browse_ and 7 manage_, read 6 October 2026
Tool filteringUnavailable on the hosted server. Scope with a Scoped OAuth client
Live checkHTTP 401 to an unauthenticated POST, 6 October 2026
Local server statusDeprecated and archived 4 September 2026 · last release PyPI 1.1.0, 7 July 2026
Adoption79 stars, 41 forks on 6 October 2026 · Apache 2.0 license
Local packagepagerduty-mcp on PyPI, plus a Docker image
Local transportstdio, streamable HTTP and SSE. The HTTP transports carry no authentication
Local tools101 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 checkedWhat it shows
Stars79, archived repository, 6 October 2026
Latest local releasePyPI 1.1.0, 7 July 2026
LicenseApache 2.0
Tools18 hosted · 101 on the deprecated local server
Hosted endpointmcp.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.”

tabletenniser, GitHub issue, 31 October 2025 · A request for a flag to filter tools by area. The hosted server's 18 grouped tools address the same tool-count problem.

“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.”

zhuethanca, GitHub issue, 12 November 2025 · Authentication on the local server. The hosted server accepts OAuth tokens as `Bearer` and API keys as `Token token=`.

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 observability

Frequently 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.

Changelog

  • 4 September 2026. PagerDuty deprecated the local server and archived PagerDuty/pagerduty-mcp-server. Its docs direct users to the hosted server at mcp.pagerduty.com/mcp.
  • 7 July 2026. pagerduty-mcp 1.1.0, the last local release, published to PyPI. The repository never tagged a GitHub release.
  • 6 June 2025. PagerDuty/pagerduty-mcp-server created on GitHub.

Sources

Every number on the page traces to one of these

  1. PagerDuty Knowledge Base · PagerDuty MCP Server, updated 4 September 2026, read 6 October 2026
  2. Repository facts from the GitHub API · PagerDuty/pagerduty-mcp-server, archived, retrieved 6 October 2026
  3. Live check · POST https://mcp.pagerduty.com/mcp returned HTTP 401, 6 October 2026
  4. Local server read-only default, write flag and transport warning from the repository README
  5. Local package version from PyPI, retrieved 6 October 2026
  6. Local tool counts from the server's own tools/list response, captured with and without --enable-write-tools, 19 August 2026

PagerDuty’s own MCP documentation

For the telemetry behind an incident:

For what shipped before it: