Sentry MCP

Live

OAUTH 2.0

MONITORING

Monitoring

Let your agent triage Sentry issues, pull stack traces, and resolve errors as the engineer who owns the project.

  • Acts as the engineer. Every issue read and resolve is attributed to the real user, not a shared monitoring bot.
  • Tokens stay vaulted. Sentry OAuth credentials sit in an AES-256 vault, resolved per request, never in the prompt.
  • Scoped before every call. Project and org scopes enforced ahead of each API call, with a 90-day audit trail.
Sentry MCP
agent · Acme Q3
Run
What are the top unresolved errors in the payments service this week?
S
sentry_issues_list
92ms
Sentry agent
3 unresolved issues in payments. TimeoutError (412 events), NullPointer on checkout (88 events), and a rate-limit 429 spike (37 events).
Sources: 3 issues, payments project, last 7 days
sentrymcp
3 issues
18:29
Message Claude...

Tools your monitoring agent reaches for on Sentry, scoped per user.

CALL ANY TOOL
List and inspect issues, pull stack traces and events, and resolve or assign errors, each call scoped to the authenticated engineer's project access.
sentrymcp_analyze_issue_with_seer
Analyze issue with seer
Use Sentry's Seer AI to analyze a production error and get root cause analysis with specific code fixes. Provides file locations, line numbers, and concrete fix recommendations. Results are cached — subsequent calls return instantly.
Parameters
Name
Type
Required
Description
instruction
string
Optional
Optional custom instruction for the AI analysis, to focus on specific aspects of the issue.
issueId
string
Optional
The Issue ID. Example: 'PROJECT-1Z43'. Required if issueUrl is not provided.
issueUrl
string
Optional
Full URL to the Sentry issue. Example: 'https://my-org.sentry.io/issues/PROJECT-1Z43'. Use instead of organizationSlug + issueId.
organizationSlug
string
Optional
The organization's slug. Use the find_organizations tool to list available organizations.
regionUrl
string
Optional
The region URL for the organization. For sentry.io, typically 'https://us.sentry.io'. Omit for self-hosted.
sentrymcp_execute_sentry_tool
Execute sentry tool
sentrymcp_find_organizations
Find organizations
sentrymcp_find_projects
Find projects
sentrymcp_get_sentry_resource
Get sentry resource
sentrymcp_search_events
Search events
sentrymcp_search_issues
Search issues
sentrymcp_search_sentry_tools
Search sentry tools
sentrymcp_update_issue
Update issue
Build your Agent
The same per-user auth pattern wires into every agent framework.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { ChatOpenAI } from "@langchain/openai";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["sentrymcp"], toolNames: ["sentry_issues_list", "sentry_issue_get", "sentry_events_list"] },
pageSize: 100,
});

const agent = createReactAgent({ llm: new ChatOpenAI({ model: "gpt-4o" }), tools });
await agent.invoke({ messages: [{ role: "user", content: "Triage unresolved payments errors" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const openai = new OpenAI();
const sk = new ScalekitClient(process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["sentrymcp"], toolNames: ["sentry_issues_list", "sentry_issue_get", "sentry_events_list"] },
pageSize: 100,
});

const res = await openai.responses.create({
model: "gpt-4o",
input: "Show top unresolved errors in payments",
tools,
});
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const anthropic = new Anthropic();
const sk = new ScalekitClient(process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["sentrymcp"], toolNames: ["sentry_issues_list", "sentry_issue_get", "sentry_events_list"] },
pageSize: 100,
});

const msg = await anthropic.messages.create({
model: "claude-sonnet-4-6",
max_tokens: 1024,
tools,
messages: [{ role: "user", content: "Resolve the checkout NullPointer issue" }],
});
import { LlmAgent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(process.env.SCALEKIT_ENV_URL, process.env.SCALEKIT_CLIENT_ID, process.env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
filter: { connectionNames: ["sentrymcp"], toolNames: ["sentry_issues_list", "sentry_issue_get", "sentry_events_list"] },
pageSize: 100,
});

const agent = new LlmAgent({ name: "sentry_agent", model: "gemini-2.0-flash", tools });
await agent.run("List new issues in the latest release");
Try these prompts
Paste any prompt into your agent to start working Sentry issues.
Triage & resolve
Copy the prompt
Copied
What are the top unresolved errors in the payments service this week?
Copy the prompt
Copied
Resolve the checkout NullPointer issue and assign it to me.
Copy the prompt
Copied
Ignore the noisy rate-limit 429 issue in the api project.
Investigate
Copy the prompt
Copied
Pull the latest stack trace for issue PROJ-1421.
Copy the prompt
Copied
Show me events for the TimeoutError over the last 24 hours.
Copy the prompt
Copied
Which release introduced the checkout regression?
Report & recall
Copy the prompt
Copied
List all projects I have access to.
Copy the prompt
Copied
Summarise new issues since the last deploy.
Copy the prompt
Copied
How many events did the payments timeout error get this week?
SEE HOW AUTH WORKS
The engineer authorises Sentry once. Every later agent call uses their token with project scope enforced.
1
Authorize
Your user connects
Sentry MCP
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
Sentry MCP
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
Sentry MCP
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
Sentry MCP
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other monitoring connectors.
Engineering Teams
DevOps assistant agent
Polls GitHub for failing checks and stale PRs, opens Linear issues for the ones that need work, and posts a daily digest to Slack. It acts as the engineer, not a shared service account.
Engineering Teams
Slack triage
Polls Slack for new messages, classifies bugs and support requests with a LangGraph router, files GitHub issues or Zendesk tickets, and confirms in the thread.
Engineering Teams
Engineering standup agent
Pulls commits from GitHub and GitLab, tracks issue movement in Jira, and posts a per-engineer standup brief to Slack. Each engineer's activity is read on their own delegated OAuth.
Engineering Teams
Auto release notes agent
Reads merged GitHub PRs, groups them into structured release notes, publishes the page to Notion, and announces the release in Slack. Every call runs on the engineer's own delegated OAuth.
Test other agents
See the same per-user auth pattern across other monitoring connectors.
ENGINEERING
DevOps assistant agent
Poll GitHub for failing checks and stale pull requests, open Linear issues for the ones that need work, and digest to Slack.
ENGINEERING
Engineering standup agent
Pull commits from GitHub and GitLab, track Jira issue movement, and post a per-engineer standup brief to Slack.
ENGINEERING
Slack triage agent
Classify new Slack messages as bugs or support requests, file the GitHub issue or Zendesk ticket, and reply in the thread.
ENGINEERING
Auto-release notes agent
Group merged GitHub PRs into structured release notes, publish the page to Notion, and announce the release in Slack.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared Sentry token looks fine in a demo. In production every resolve and assign logs as one service account, so you lose track of who acted. Scalekit resolves the real engineer's credential per call.
// shared token
resolve → monitoring_bot

// scalekit
resolve → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Sentry today. Others tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access Sentry as the user or as a shared key?
As the user. Scalekit resolves the authenticated engineer's own Sentry credential at request time, so every issue read, resolve, and assignment is attributed to them in Sentry's audit log rather than a shared monitoring bot.
Where is the Sentry token stored?
In an AES-256 encrypted vault, namespaced per tenant. Tokens are fetched only at the moment of a tool call, refreshed automatically before expiry, and revocable from a single dashboard, never exposed to the model or the prompt.
Can I limit what the agent is allowed to do in Sentry?
Yes. Pass a toolNames filter to listScopedTools to expose only the actions you want, for example read-only issue listing without resolve or delete. Scalekit also runs a scope check before each API call.
What happens when a user revokes Sentry access?
The credential is invalidated at the next tool call, which fails closed rather than falling back to a shared token. Other users are unaffected, and the revocation is recorded in the audit trail.
Can the agent modify production issues, or only read them?
That is your choice. Expose only sentry_issues_list and sentry_issue_get for a read-only triage agent, or add sentry_issue_update to let it resolve and assign. The write scope is enforced per user, so an engineer can only change issues in projects they already own.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""sentrymcp"": {
""url"": ""https://mcp.scalekit.com/sentrymcp"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.sentrymcp]
url = ""https://mcp.scalekit.com/sentrymcp""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""sentrymcp"": {
""url"": ""https://mcp.scalekit.com/sentrymcp"",
""type"": ""http""
}
}
}