> **Building with AI coding agents?** Install the authstack plugin with one command. This equips your agent with accurate Scalekit implementation patterns.
>
> **Recommended** (the `-y` flags skip prompts, so the command runs without an interactive terminal):
> ```bash
> npx -y @scalekit-inc/cli setup -y
> ```
>
> Global:
> ```bash
> npm install -g @scalekit-inc/cli
> scalekit setup -y
> ```
>
> Supports Claude Code, Cursor, GitHub Copilot, Codex + skills for other Agent Skills-compatible agents in `~/.agents/skills`.
> Skills: integrate-agentkit, implement-saaskit, add-mcp-oauth, implement-sso, implement-scim.
> [Full setup guide](https://docs.scalekit.com/dev-kit/build-with-ai/)

---

# Connect AI agents to the Bugsnag MCP server

The Bugsnag MCP connector routes your AI agent's tool calls to Bugsnag's own MCP server through Scalekit. Each user signs in to Bugsnag once, and Scalekit stores and refreshes their tokens, so your agent never handles credentials. It comes with 19 tools.

**Authentication:** OAuth 2.1/DCR
**Categories:** Monitoring, Developer Tools, AI
**Tools:** 19: 17 read, 2 write, 0 destructive
**Users sign in with:** OAuth
**OAuth app:** Scalekit's or your own
**Built by:** Vendor MCP
**Try it:** [Playground in the Scalekit dashboard](https://app.scalekit.com/ws/signup?sk_intent=playground&provider=BUGSNAGMCP)

## Setup

1. ### Install the SDK

   **Node.js**

   ```bash
   npm install @scalekit-sdk/node dotenv
   ```

   **Python**

   ```bash
   pip install scalekit-sdk-python python-dotenv
   ```

2. ### Set your credentials

   Add your Scalekit credentials to your `.env` file. Find values in **[app.scalekit.com](https://app.scalekit.com)** > **Developers** > **API Credentials**.

   ```sh title=".env"
   SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
   SCALEKIT_CLIENT_ID=<your-client-id>
   SCALEKIT_CLIENT_SECRET=<your-client-secret>
   ```

3. ### Create the Bugsnag MCP connection

   In **AgentKit > Connections**, create a Bugsnag MCP connection. The name you give it is the `connection_name` your code passes. See [Configure connections](/agentkit/connections/).

   Scalekit credentials are available for Bugsnag MCP server, so you don't need to register an OAuth app.

4. ### Authorize a user and make your first call

   **Node.js** (`quickstart.mts`)

   ```typescript
   import { ScalekitClient } from '@scalekit-sdk/node'
   import 'dotenv/config'
   import { createInterface } from 'node:readline/promises'

   const scalekit = new ScalekitClient(
     process.env.SCALEKIT_ENVIRONMENT_URL,
     process.env.SCALEKIT_CLIENT_ID,
     process.env.SCALEKIT_CLIENT_SECRET,
   )
   const actions = scalekit.actions

   const connector = 'bugsnagmcp'
   const identifier = 'user_123'

   // Generate an authorization link for the user
   const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
   console.log('Authorize Bugsnag MCP:', link)
   const rl = createInterface({ input: process.stdin, output: process.stdout })
   await rl.question('Press Enter after authorizing...')
   rl.close()

   // Make your first call
   const result = await actions.executeTool({
     connector,
     identifier,
     toolName: 'bugsnagmcp_bugsnag_get_current_project',
     toolInput: {},
   })
   console.log(result)
   ```

   ```bash
   npx tsx quickstart.mts
   ```

   **Python** (`quickstart.py`)

   ```python
   import os
   from scalekit import ScalekitClient
   from dotenv import load_dotenv
   load_dotenv()

   scalekit_client = ScalekitClient(
       env_url=os.getenv("SCALEKIT_ENVIRONMENT_URL"),
       client_id=os.getenv("SCALEKIT_CLIENT_ID"),
       client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),
   )
   actions = scalekit_client.actions

   connection_name = "bugsnagmcp"
   identifier = "user_123"

   # Generate an authorization link for the user
   link_response = actions.get_authorization_link(
       connection_name=connection_name,
       identifier=identifier,
   )
   print("Authorize Bugsnag MCP:", link_response.link)
   input("Press Enter after authorizing...")

   # Make your first call
   result = actions.execute_tool(
       tool_input={},
       tool_name="bugsnagmcp_bugsnag_get_current_project",
       connection_name=connection_name,
       identifier=identifier,
   )
   print(result)
   ```

   ```bash
   python quickstart.py
   ```

   Each user signs in once. See [Authorize a user](/agentkit/tools/authorize/) for the full flow and statuses.

## Tools

Pass the exact name to `execute_tool`, with an input like each tool's example. To ask for a tool that's missing, use the [request form](https://scalekitsupport.portal.usepylon.com/forms/request-a-connector-tool).

**Node.js**

```typescript
const result = await actions.executeTool({
  toolName: 'bugsnagmcp_bugsnag_get_build',
  toolInput: {
    buildId: '<buildId>',
  },
  connector: 'bugsnagmcp',
  identifier: 'user_123',
})
```

**Python**

```python
result = actions.execute_tool(
    tool_name="bugsnagmcp_bugsnag_get_build",
    tool_input={
        "buildId": "<buildId>",
    },
    connection_name="bugsnagmcp",
    identifier="user_123",
)
```

`result.data` is the app's response as JSON, and `result.execution_id` (`executionId` in Node.js) is the ID of the call.

### `bugsnagmcp_bugsnag_get_build`

Get Build · Read-only

Retrieve details for a specific build by its ID, including source control metadata.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `buildId` (`string`, required): Unique identifier of the app build
- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.

Example input: `{"buildId":"<buildId>"}`

### `bugsnagmcp_bugsnag_get_current_project`

Get Current Project · Read-only

Retrieve the default project set for the current session. Tools use this project when no projectId is specified.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs: none.

Example input: `{}`

### `bugsnagmcp_bugsnag_get_error`

Get Error · Read-only

Retrieve full details on an error, including aggregated stats across all occurrences and the latest event's stacktrace, breadcrumbs, and metadata.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `errorId` (`string`, required): Unique identifier of the error to retrieve
- `filters` (`object`, optional): Apply filters to narrow down the error list. Use the List Project Event Filters tool to discover available filter fields. Time filters support extended ISO 8601 format (e.g. 2018-05-20T00:00:00Z) or relative format (e.g. 7d, 24h).
- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.

Example input: `{"errorId":"<errorId>"}`

### `bugsnagmcp_bugsnag_get_event`

Get Event · Read-only

Retrieve detailed information about a specific error event by its ID.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `eventId` (`string`, required): Unique identifier of the event
- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.

Example input: `{"eventId":"<eventId>"}`

### `bugsnagmcp_bugsnag_get_event_details_from_dashboard_url`

Get Event From Dashboard URL · Read-only

Retrieve event details using a Bugsnag dashboard URL.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `link` (`string`, required): Full URL to the event details page in the BugSnag dashboard (web interface), containing project slug and event_id parameter.

Example input: `{"link":"<link>"}`

### `bugsnagmcp_bugsnag_get_events_on_an_error`

Get Events On Error · Read-only

List events (occurrences) grouped under a specific error.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `errorId` (`string`, required): Unique identifier of the error
- `direction` (`string`, optional): Sort direction for ordering results. One of: `asc`, `desc`. Default: `desc`.
- `filters` (`object`, optional): Apply filters to narrow down the event list. Use the List Project Event Filters tool to discover available filter fields. Time filters support extended ISO 8601 format (e.g. 2018-05-20T00:00:00Z) or relative format (e.g. 7d, 24h).
- `nextUrl` (`string`, optional): URL for retrieving the next page of results. Use the value in the previous response to get the next page when more results are available. Only values provided in the output from this tool can be used. Do not attempt to construct it manually.
- `perPage` (`number`, optional): How many results to return per page. Default: `30`.
- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.

Example input: `{"errorId":"<errorId>"}`

### `bugsnagmcp_bugsnag_get_network_endpoint_groupings`

Get Network Endpoint Groupings · Read-only

Retrieve the network endpoint grouping rules configured for a project.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.

Example input: `{}`

### `bugsnagmcp_bugsnag_get_release`

Get Release · Read-only

Retrieve details for a specific release by its ID, including source control info and associated builds.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `releaseId` (`string`, required): Unique identifier of the app release
- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.

Example input: `{"releaseId":"<releaseId>"}`

### `bugsnagmcp_bugsnag_get_span_group`

Get Span Group · Read-only

Retrieve performance metrics for a specific span group.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `spanGroupId` (`string`, required): ID of the span group
- `filters` (`object`, optional): Apply filters to narrow down the span group list. Use the List Trace Fields tool to discover available filter fields. Time filters support extended ISO 8601 format (e.g. 2018-05-20T00:00:00Z) or relative format (e.g. 7d, 24h).
- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.

Example input: `{"spanGroupId":"<spanGroupId>"}`

### `bugsnagmcp_bugsnag_get_trace`

Get Trace · Read-only

Retrieve all spans within a specific distributed trace.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `from` (`string`, required): Start time (ISO 8601 format)
- `to` (`string`, required): End time (ISO 8601 format)
- `traceId` (`string`, required): Trace ID
- `nextUrl` (`string`, optional): URL for retrieving the next page of results. Use the value in the previous response to get the next page when more results are available. Only values provided in the output from this tool can be used. Do not attempt to construct it manually.
- `perPage` (`number`, optional): How many results to return per page. Default: `30`.
- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.
- `targetSpanId` (`string`, optional): Optional target span ID to focus on

Example input: `{"from":"<from>","to":"<to>","traceId":"<traceId>"}`

### `bugsnagmcp_bugsnag_list_project_errors`

List Project Errors · Read-only

List and search errors in a project with filters, sorting, and pagination.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `direction` (`string`, optional): Sort direction for ordering results. One of: `asc`, `desc`. Default: `desc`.
- `filters` (`object`, optional): Apply filters to narrow down the error list. Use the List Project Event Filters tool to discover available filter fields. Time filters support extended ISO 8601 format (e.g. 2018-05-20T00:00:00Z) or relative format (e.g. 7d, 24h).
- `nextUrl` (`string`, optional): URL for retrieving the next page of results. Use the value in the previous response to get the next page when more results are available. Only values provided in the output from this tool can be used. Do not attempt to construct it manually.
- `perPage` (`number`, optional): How many results to return per page. Default: `30`.
- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.
- `sort` (`string`, optional): Field to sort the errors by. One of: `first_seen`, `last_seen`, `events`, `users`, `unsorted`. Default: `last_seen`.

Example input: `{}`

### `bugsnagmcp_bugsnag_list_project_event_filters`

List Project Event Filters · Read-only

Retrieve available event filter fields for a project.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.

Example input: `{}`

### `bugsnagmcp_bugsnag_list_projects`

List Projects · Read-only

List all projects in the organization the current user can access, or find a project by API key.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `apiKey` (`string`, optional): The API key of the BugSnag project, if known.

Example input: `{}`

### `bugsnagmcp_bugsnag_list_releases`

List Releases · Read-only

List releases for a project with optional stage and visibility filters.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `nextUrl` (`string`, optional): URL for retrieving the next page of results. Use the value in the previous response to get the next page when more results are available. Only values provided in the output from this tool can be used. Do not attempt to construct it manually.
- `perPage` (`number`, optional): How many results to return per page. Default: `30`.
- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.
- `releaseStage` (`string`, optional): Filter releases by this stage (e.g. production, staging), defaults to 'production'. Default: `production`.
- `visibleOnly` (`boolean`, optional): Whether to only include releases that are marked as visible in the dashboard. Default: `false`.

Example input: `{}`

### `bugsnagmcp_bugsnag_list_span_groups`

List Span Groups · Read-only

List span groups (tracked operations) for performance monitoring in a project.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `direction` (`string`, optional): Sort direction for ordering results. One of: `asc`, `desc`. Default: `desc`.
- `filters` (`object`, optional): Apply filters to narrow down the span group list. Use the List Trace Fields tool to discover available filter fields. Time filters support extended ISO 8601 format (e.g. 2018-05-20T00:00:00Z) or relative format (e.g. 7d, 24h).
- `nextUrl` (`string`, optional): URL for retrieving the next page of results. Use the value in the previous response to get the next page when more results are available. Only values provided in the output from this tool can be used. Do not attempt to construct it manually.
- `perPage` (`number`, optional): How many results to return per page. Default: `30`.
- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.
- `sort` (`string`, optional): Field to sort by. One of: `total_spans`, `last_seen`, `name`, `display_name`, `network_http_method`, `rendering_slow_frame_span_percentage`, `rendering_frozen_frame_span_percentage`, `duration_p50`, `duration_p75`, `duration_p90`, `duration_p95`, `duration_p99`, `system_metrics_cpu_total_mean_p50`, `system_metrics_cpu_total_mean_p75`, `system_metrics_cpu_total_mean_p90`, `system_metrics_cpu_total_mean_p95`, `system_metrics_cpu_total_mean_p99`, `system_metrics_memory_device_mean_p50`, `system_metrics_memory_device_mean_p75`, `system_metrics_memory_device_mean_p90`, `system_metrics_memory_device_mean_p95`, `system_metrics_memory_device_mean_p99`, `rendering_metrics_fps_mean_p50`, `rendering_metrics_fps_mean_p75`, `rendering_metrics_fps_mean_p90`, `rendering_metrics_fps_mean_p95`, `rendering_metrics_fps_mean_p99`, `http_response_4xx_percentage`, `http_response_5xx_percentage`.
- `starredOnly` (`boolean`, optional): Show only starred span groups

Example input: `{}`

### `bugsnagmcp_bugsnag_list_spans`

List Spans · Read-only

List individual spans belonging to a span group.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `spanGroupId` (`string`, required): ID of the span group
- `direction` (`string`, optional): Sort direction for ordering results. One of: `asc`, `desc`. Default: `desc`.
- `filters` (`object`, optional): Apply filters to narrow down the span group list. Use the List Trace Fields tool to discover available filter fields. Time filters support extended ISO 8601 format (e.g. 2018-05-20T00:00:00Z) or relative format (e.g. 7d, 24h).
- `nextUrl` (`string`, optional): URL for retrieving the next page of results. Use the value in the previous response to get the next page when more results are available. Only values provided in the output from this tool can be used. Do not attempt to construct it manually.
- `perPage` (`number`, optional): How many results to return per page. Default: `30`.
- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.
- `sort` (`string`, optional): Field to sort by. One of: `duration`, `timestamp`, `full_page_load_lcp`, `full_page_load_fid`, `full_page_load_cls`, `full_page_load_ttfb`, `full_page_load_fcp`, `rendering_slow_frame_percentage`, `rendering_frozen_frame_percentage`, `system_metrics_cpu_total_mean`, `system_metrics_memory_device_mean`, `rendering_metrics_fps_mean`, `rendering_metrics_fps_minimum`, `rendering_metrics_fps_maximum`, `http_response_code`.

Example input: `{"spanGroupId":"<spanGroupId>"}`

### `bugsnagmcp_bugsnag_list_trace_fields`

List Trace Fields · Read-only

Retrieve available trace attribute fields for filtering.

Read only: yes. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.

Example input: `{}`

### `bugsnagmcp_bugsnag_set_network_endpoint_groupings`

Set Network Endpoint Groupings · Write

Set network endpoint grouping rules for a project.

Read only: no. Destructive: no. Idempotent (safe to retry): yes.

Inputs:

- `endpoints` (`array`, required): Array of URL patterns by which network spans are grouped. Endpoints follow OpenAPI path templating syntax (https://swagger.io/specification/#path-templating) where path parameters use curly braces (e.g., /users/{id}). If you encounter colon-prefixed parameters (e.g., :userId from Express/React Router), convert them to curly braces (e.g., {userId}). Wildcards (*) can be used in domains (e.g., https://*.example.com) to match multiple subdomains.
- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.

Example input: `{"endpoints":[]}`

### `bugsnagmcp_bugsnag_update_error`

Update Error · Write

Update the status of an error (e.g., ignore, snooze, open, or mark as fixed).

Read only: no. Destructive: no. Idempotent (safe to retry): no.

Inputs:

- `errorId` (`string`, required): Unique identifier of the error
- `operation` (`string`, required): The operation to apply to the error. One of: `override_severity`, `open`, `fix`, `ignore`, `discard`, `undiscard`, `snooze`, `link_issue`, `unlink_issue`.
- `issue_url` (`string`, optional): The URL of the issue to link to the error - required when operation is 'link_issue'
- `projectId` (`string`, optional): Unique identifier of the project. This is optional if a current project is set and is used to set the current project for BugSnag tools.
- `reopenRules` (`object`, optional): Reopen rules for snooze operation - required when operation is 'snooze'

Example input: `{"errorId":"<errorId>","operation":"override_severity"}`

## Related

Other Monitoring connectors ([all 22](/agentkit/connectors/?category=monitoring)):

- [Datadog](/agentkit/connectors/datadog/): Scalekit connector, API key, 105 tools
- [PagerDuty](/agentkit/connectors/pagerduty/): Scalekit connector, OAuth, 71 tools
- [Agency Analytics MCP server](/agentkit/connectors/agencyanalyticsmcp/): Vendor MCP, OAuth, 35 tools


---

## More Scalekit documentation

| Resource | What it contains | When to use it |
|----------|-----------------|----------------|
| [/llms.txt](/llms.txt) | Structured index with routing hints per product area | Start here — find which documentation set covers your topic before loading full content |
| [/llms-full.txt](/llms-full.txt) | Complete documentation for all Scalekit products in one file | Use when you need exhaustive context across multiple products or when the topic spans several areas |
| [sitemap-0.xml](https://docs.scalekit.com/sitemap-0.xml) | Full URL list of every documentation page | Use to discover specific page URLs you can fetch for targeted, page-level answers |
