Bugsnag MCP

Live

OAUTH 2.0

MONITORING

Monitoring

Let your agent triage Bugsnag errors, read stack traces, and check release stability as the engineer who owns the project.

  • Acts as the engineer. Every error read and resolve is attributed to the real user, not a shared monitoring bot.
  • Tokens stay vaulted. Bugsnag OAuth credentials sit in an AES-256 vault, resolved per request, never in the prompt.
  • Scoped before every call. Project and organization scopes enforced ahead of each API call, with a 90-day audit trail.
Bugsnag MCP
agent · Acme Q3
Run
What are the top open errors in the checkout project this week?
S
bugsnag_errors_list
88ms
Bugsnag agent
3 open errors in checkout. TypeError on submit (device 214), OutOfMemoryError on Android (device 96), and a NetworkError spike (device 41).
Sources: 3 errors, checkout project, last 7 days
bugsnagmcp
3 errors
18:29
Message Claude...

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

CALL ANY TOOL
List and inspect errors, pull events and stack traces, check release stability, and resolve or reopen errors, each call scoped to the authenticated engineer's project access.
bugsnag_errors_list
List errors
Fetch a paginated list of errors for a project, filtered by status, severity, or time range.
Parameters
Name
Type
Required
Description
project_id
string
Required
Project to list errors from
filters
string
Optional
Filter expression, e.g. error.status:open
sort
string
Optional
Sort order such as last_seen or events
bugsnag_error_get
Get error
bugsnag_events_list
List events
bugsnag_error_update
Update error
bugsnag_projects_list
List projects
bugsnag_release_get
Get release
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: ["bugsnagmcp"], toolNames: ["bugsnag_errors_list", "bugsnag_error_get", "bugsnag_events_list"] },
pageSize: 100,
});

const agent = createReactAgent({ llm: new ChatOpenAI({ model: "gpt-4o" }), tools });
await agent.invoke({ messages: [{ role: "user", content: "Triage open checkout 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: ["bugsnagmcp"], toolNames: ["bugsnag_errors_list", "bugsnag_error_get", "bugsnag_events_list"] },
pageSize: 100,
});

const res = await openai.responses.create({
model: "gpt-4o",
input: "Show top open errors in checkout",
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: ["bugsnagmcp"], toolNames: ["bugsnag_errors_list", "bugsnag_error_get", "bugsnag_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 TypeError" }],
});
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: ["bugsnagmcp"], toolNames: ["bugsnag_errors_list", "bugsnag_error_get", "bugsnag_events_list"] },
pageSize: 100,
});

const agent = new LlmAgent({ name: "bugsnag_agent", model: "gemini-2.0-flash", tools });
await agent.run("List new errors in the latest release");
Try these prompts
Paste any prompt into your agent to start working Bugsnag errors.
Triage & resolve
Copy the prompt
Copied
What are the top open errors in the checkout project this week?
Copy the prompt
Copied
Mark the submit TypeError as fixed and reassign it to me.
Copy the prompt
Copied
Ignore the noisy NetworkError spike in the mobile project.
Investigate
Copy the prompt
Copied
Pull the latest stack trace for error 5f2a9c.
Copy the prompt
Copied
Show me events for the OutOfMemoryError over the last 24 hours.
Copy the prompt
Copied
Which devices are most affected by the checkout crash?
Report & recall
Copy the prompt
Copied
List all projects I have access to.
Copy the prompt
Copied
What is the stability score for the latest release?
Copy the prompt
Copied
How many events did the submit TypeError get this week?
SEE HOW AUTH WORKS
The engineer authorises Bugsnag once. Every later agent call uses their token with project scope enforced.
1
Authorize
Your user connects
Bugsnag 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
Bugsnag 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
Bugsnag 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
Bugsnag 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.
No items found.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
Other connector libraries treat auth as a demo afterthought. Monitoring data needs real per-user attribution.
01.
Shared tokens break per-user analytics
A shared Bugsnag token looks fine in a demo. In production every fix and reassign logs as one service account, so you lose track of who acted. Scalekit resolves the real engineer's credential per call.
// shared token
fix → monitoring_bot

// scalekit
fix → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
Bugsnag 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 Bugsnag as the user or as a shared key?
As the user. Scalekit resolves the authenticated engineer's own Bugsnag credential at request time, so every error read, fix, and reassignment is attributed to them in Bugsnag's activity log rather than a shared monitoring bot.
Where is the Bugsnag 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 Bugsnag?
Yes. Pass a toolNames filter to listScopedTools to expose only the actions you want, for example read-only error listing without fix or reassign. Scalekit also runs a scope check before each API call.
What happens when a user revokes Bugsnag 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 read release stability, or only work individual errors?
It can do both. Expose bugsnag_release_get to let the agent read stability scores, adoption, and new-error counts per release, so it can advise whether to ship or fix, while error write actions stay scoped per user to the projects the engineer already owns.
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"": {
""bugsnagmcp"": {
""url"": ""https://mcp.scalekit.com/bugsnagmcp"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.bugsnagmcp]
url = ""https://mcp.scalekit.com/bugsnagmcp""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""bugsnagmcp"": {
""url"": ""https://mcp.scalekit.com/bugsnagmcp"",
""type"": ""http""
}
}
}