Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the AppSignal MCP server

Vendor MCP
Open markdown

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

Tools
29
What they doRead · write · destructive
16 · 11 · 216 read11 write2 destructive
Users sign in with
OAuth app
Scalekit's or your own

Setup

  1. Install the SDK

    Terminal window
    npm install @scalekit-sdk/node dotenv
  2. Set your credentials

    Add your Scalekit credentials to your .env file. Find values in app.scalekit.com > Developers > API Credentials.

    .env
    SCALEKIT_ENVIRONMENT_URL=<your-environment-url>
    SCALEKIT_CLIENT_ID=<your-client-id>
    SCALEKIT_CLIENT_SECRET=<your-client-secret>
  3. Create the AppSignal MCP connection

    In AgentKit > Connections, create an AppSignal MCP connection. The name you give it is the connection_name your code passes. See Configure connections.

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

  4. Authorize a user and make your first call

    quickstart.mts
    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 = 'appsignalmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize AppSignal 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: 'appsignalmcp_get_applications',
    toolInput: { context: 'YOUR_CONTEXT' },
    })
    console.log(result)
    Terminal window
    npx tsx quickstart.mts

    Each user signs in once. See Authorize a user for the full flow and statuses.

Tools

Pass the exact name to execute_tool
Try in PlaygroundRequest a tool
  • appsignalmcp_discover_metricsRetrieve metric categories and dashboards, the metrics available within a specific category, or the visuals configured on a specific dashboard.Read-only

    Discover Metrics

    Retrieve metric categories and dashboards, the metrics available within a specific category, or the visuals configured on a specific dashboard.

    Inputs

    app_environmentstringrequired
    Environment (e.g. "production", "staging"). Not case-sensitive.
    app_namestringrequired
    Name of the AppSignal application (e.g. "AppSignal" or "Project Name")
    contextstringrequired
    Describe why you are calling this tool and how it fits into your overall task
    metric_subjectstring
    What to inspect. One of: - a metric category name (e.g. "performance_metrics", "host_metrics", "custom_metrics") - "dashboard:<dashboard_id>" to list the visuals on a specific dashboard Omit this argument to get the overview of all categories and dashboards.
  • appsignalmcp_get_anomaly_incidentsList AppSignal anomaly detection alerts, filtered by state or trigger ID, with page/per_page pagination.Read-only

    Get Anomaly Incidents

    List AppSignal anomaly detection alerts, filtered by state or trigger ID, with page/per_page pagination.

    Inputs

    app_environmentstringrequired
    Environment to list alerts from (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found
    app_namestringrequired
    Name of the AppSignal application to list alerts from (e.g. "AppSignal" or "Project Name")
    contextstringrequired
    Describe why you are calling this tool and how it fits into your overall task
    pageinteger
    Page number for pagination (1-based, defaults to 1). Each page shows 50 alerts. Use this to view beyond the first page
    per_pageinteger
    Number of alerts per page (defaults to 50). Use this to request fewer results per page
    statestring
    Optional state to filter by. Valid values: "open", "closed", "warmup", "cooldown", "archived". Shows all states if not specified
    trigger_idstring
    Optional trigger ID to filter incidents by. Only returns incidents generated by this specific trigger. Use get_triggers to find trigger IDs.
  • appsignalmcp_get_app_resourcesDiscover available resources in an AppSignal application: users, notifiers, namespaces, dashboards, log sources, log views, log line actions, deploy markers, and uptime monitors.Read-only

    Get App Resources

    Discover available resources in an AppSignal application: users, notifiers, namespaces, dashboards, log sources, log views, log line actions, deploy markers, and uptime monitors.

    Inputs

    app_environmentstringrequired
    Environment to get resources from (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
    app_namestringrequired
    Name of the AppSignal application to get resources from (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
    contextstringrequired
    Describe why you are calling this tool and how it fits into your overall task
    deploy_marker_namespacestring
    Optional filter for the "deploy_markers" section: only return deploys for this namespace (e.g. "web", "background"). Ignored when deploy_markers is not requested.
    deploy_marker_revisionstring
    Optional filter for the "deploy_markers" section: only return deploys whose revision starts with this value. A short revision (e.g. "abc1234") from a previous call works. Ignored when deploy_markers is not requested.
    sectionsarray
    Optional list of resource sections to retrieve. Valid values: "users", "notifiers", "namespaces", "dashboards", "log_sources", "log_views", "log_line_actions", "deploy_markers", "uptime_monitors". If not specified, returns all sections.
  • appsignalmcp_get_applicationsRetrieve all AppSignal applications the user has access to.Read-only

    Get Applications

    Retrieve all AppSignal applications the user has access to.

    Inputs

    contextstringrequired
    Describe why you are calling this tool and how it fits into your overall task
  • appsignalmcp_get_check_in_triggers<usecase>Use this tool when you need to: - View all configured check-in (cron/heartbeat) monitors in an application - Check whether a scheduled job or service is checking in on time - Inspect one check-in monitor's full configuration and recent run history - Find a monitor's ID for updating it Pass no `id`/`identifier` to list all check-in triggers.Read-only

    Get Check In Triggers

    <usecase>Use this tool when you need to: - View all configured check-in (cron/heartbeat) monitors in an application - Check whether a scheduled job or service is checking in on time - Inspect one check-in monitor's full configuration and recent run history - Find a monitor's ID for updating it Pass no `id`/`identifier` to list all check-in triggers. Pass an `id` or `identifier` to inspect one trigger, which also returns its recent runs (individual check-in occurrences, e.g. missed/late/finished).</usecase> <instructions>List check-in triggers, or inspect one with its recent runs. List all check-in triggers: { "app_name": "AppSignal", "app_environment": "production" } Filter the list by kind: { "app_name": "AppSignal", "app_environment": "production", "kind": "cron" } Inspect one trigger by identifier (its human-facing name): { "app_name": "AppSignal", "app_environment": "production", "identifier": "nightly-export" } Inspect one trigger by ID, filtering its runs by state: { "app_name": "AppSignal", "app_environment": "production", "id": "trigger_id", "state": "missed" }</instructions>

    Inputs

    app_environmentstringrequired
    Environment to list check-in triggers from (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
    app_namestringrequired
    Name of the AppSignal application to list check-in triggers from (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
    contextstringrequired
    Describe why you are calling this tool and how it fits into your overall task
    idstring
    ID of a specific check-in trigger to inspect. When given (or `identifier` is), the response is that one trigger's full configuration plus its recent runs, instead of the trigger list.
    identifierstring
    Identifier (human-facing name, e.g. "nightly-export") of a specific check-in trigger to inspect. Alternative to `id` -- use whichever you already know. When given, the response is that one trigger's full configuration plus its recent runs, instead of the trigger list.
    kindstring
    Optional kind to filter the trigger list by. Ignored when `id` or `identifier` is given. one of cronheartbeat
    pageinteger
    Page number for pagination (1-based, defaults to 1). Paginates the trigger list when listing, or the run history when inspecting one trigger via `id`/`identifier`.
    statestring
    Optional state to filter a trigger's recent runs by. Only applies when inspecting one trigger via `id`/`identifier` -- ignored when listing. one of newstartedfinishedmissedlateunexpected
  • appsignalmcp_get_exception_incidentsList and search AppSignal exceptions and errors, filtered by date range, states, namespaces, or deploy revision, with page/per_page pagination.Read-only

    Get Exception Incidents

    List and search AppSignal exceptions and errors, filtered by date range, states, namespaces, or deploy revision, with page/per_page pagination.

    Inputs

    app_environmentstringrequired
    Environment to list incidents from (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found
    app_namestringrequired
    Name of the AppSignal application to list incidents from (e.g. "AppSignal" or "Project Name")
    contextstringrequired
    Describe why you are calling this tool and how it fits into your overall task
    endstring
    End of time range to search (ISO 8601 format, e.g. "2023-07-07T23:59:59Z"). Must be a complete date-time including the time of day; partial values (a date only, or a truncated time like "2026-06-26T20") are rejected. Required if start is provided
    namespacesstring
    Optional comma-separated list of namespaces to filter by (e.g. "web,background"). Shows all namespaces if not specified
    new_onlyboolean
    When true, returns only the errors that were *first seen* in the window, instead of every error that occurred in it. Anchored by whichever of these is given, in order: start (errors first seen after that time, optionally bounded by end), revision (the errors that deploy introduced), or the most recent deploy. Defaults to false.
    pageinteger
    Page number for pagination (1-based, defaults to 1). Each page shows 50 incidents. Use this to view beyond the first page
    per_pageinteger
    Number of incidents per page (defaults to 50). Use this to request fewer results per page
    querystring
    Optional case-insensitive keyword search across both the exception name and the action name (e.g. "UsersController#create" matches incidents in that action). Supports "*" as a wildcard (e.g. "UsersController*"). Shows all incidents if not specified
    revisionstring
    Optional deploy revision to scope incidents to a specific deploy. Use "last" to filter by the most recent deploy, or pass a revision hash (e.g. a git SHA). A short revision prefix works too (matched case-insensitively); if it matches more than one deploy, the most recent wins. Use get_app_resources(sections: ["deploy_markers"]) to list available revisions. Ignored when start/end (timeframe) is provided.
    startstring
    Start of time range to search (ISO 8601 format, e.g. "2023-07-01T00:00:00Z"). Must be a complete date-time including the time of day; partial values (a date only, or a truncated time like "2026-06-26T20") are rejected. If omitted, shows incidents since last deploy
    statesstring
    Optional comma-separated list of states to filter by. Valid values: "open", "closed", "wip" (work in progress). Shows all states if not specified
  • appsignalmcp_get_incidentGet detailed information about a specific AppSignal incident by incident number.Read-only

    Get Incident

    Get detailed information about a specific AppSignal incident by incident number.

    Inputs

    app_environmentstringrequired
    Environment where the incident occurred (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
    app_namestringrequired
    Name of the AppSignal application where the incident occurred (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
    contextstringrequired
    Describe why you are calling this tool and how it fits into your overall task
    numbernumberrequired
    The incident number to retrieve. This is the numeric ID shown in AppSignal URLs and API responses.
  • appsignalmcp_get_log_linesQuery log lines for an AppSignal application using AppSignal's expression query syntax.Read-only

    Get Log Lines

    Query log lines for an AppSignal application using AppSignal's expression query syntax.

    Inputs

    app_environmentstringrequired
    Environment to query logs from (e.g. "production", "staging"). Not case-sensitive. Closest matches are suggested if not found.
    app_namestringrequired
    Name of the AppSignal application to query logs from (e.g. "AppSignal" or "Project Name"). Not case-sensitive.
    contextstringrequired
    Describe why you are calling this tool and how it fits into your overall task
    querystringrequired
    Expression query to filter log lines. Can be an empty string to retrieve all logs. Supports: =, !=, :, !:, >, <, >=, <=, AND, OR, parentheses. Examples: "severity=error", "message:timeout AND hostname=web-1", ""
    endstring
    End of time range (ISO 8601 format, e.g. "2025-01-01T11:00:00Z"). Must be a complete date-time including the time of day; partial values (a date only, or a truncated time like "2026-06-26T20") are rejected. Defaults to now.
    limitinteger
    Maximum number of log lines to return (1-100, default 50).
    orderstring
    Sort order for results. "desc" returns newest first (default), "asc" returns oldest first.one of ascdesc
    source_idsarray
    IDs of log sources to query. If omitted, all sources for the application are queried. Use get_app_resources(sections: ["log_sources"]) to find available source IDs.
    startstring
    Start of time range (ISO 8601 format, e.g. "2025-01-01T10:00:00Z"). Must be a complete date-time including the time of day; partial values (a date only, or a truncated time like "2026-06-26T20") are rejected. Defaults to one query window ago. Must be within your account's query window of end.