Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the Buildkite MCP server

Vendor MCP
Open markdown

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

Tools
51
What they doRead · write · destructive
35 · 15 · 135 read15 write1 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 Buildkite MCP connection

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

    Scalekit credentials are available for Buildkite 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 = 'buildkitemcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize Buildkite 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: 'buildkitemcp_current_user',
    toolInput: {},
    })
    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
  • buildkitemcp_access_tokenGet information about the current API access token including its scopes and UUIDRead-only

    Access Token

    Get information about the current API access token including its scopes and UUID

    Inputs

    This tool takes no inputs.

  • buildkitemcp_current_userGet details about the user account that owns the API token, including name, email, avatar, and account creation dateRead-only

    Current User

    Get details about the user account that owns the API token, including name, email, avatar, and account creation date

    Inputs

    This tool takes no inputs.

  • buildkitemcp_get_agentGet detailed information about a specific agent including its connection state, host details, current job, metadata, and pause statusRead-only

    Get Agent

    Get detailed information about a specific agent including its connection state, host details, current job, metadata, and pause status

    Inputs

    agent_idstringrequired
    No description.
    org_slugstringrequired
    No description.
    detail_levelstring
    Response detail level: 'summary'\, 'detailed'\, or 'full' (default)
  • buildkitemcp_get_artifactDownload a specific artifact's content, identified by its organization, pipeline, build, job, and artifact identifiers.Read-only

    Get Artifact

    Download a specific artifact's content, identified by its organization, pipeline, build, job, and artifact identifiers. The content is returned base64-encoded

    Inputs

    artifact_idstringrequired
    The UUID of the artifact to download
    build_numberstringrequired
    No description.
    job_idstringrequired
    The UUID of the job that produced the artifact
    org_slugstringrequired
    No description.
    pipeline_slugstringrequired
    No description.
  • buildkitemcp_get_buildGet build information.Read-only

    Get Build

    Get build information. To inspect that build's jobs (IDs, names, states, filtering by job state), use list_jobs with the build_number instead.

    Inputs

    build_numberstringrequired
    No description.
    org_slugstringrequired
    No description.
    pipeline_slugstringrequired
    No description.
  • buildkitemcp_get_build_failure_summaryDiagnose a Buildkite build failure in one call.Read-only

    Get Build Failure Summary

    Diagnose a Buildkite build failure in one call. Returns build state, terminal problem jobs, downstream failed or broken jobs, promised failures from running jobs, and size-bounded diagnostic content from logs, annotations, and failed Test Engine executions. Start with this tool before calling individual job, log, annotation, or test tools.

    Inputs

    build_numberstringrequired
    No description.
    org_slugstringrequired
    No description.
    pipeline_slugstringrequired
    No description.
    include_annotationsboolean
    Include error and warning annotation bodies (default true)
    include_failed_testsboolean
    Include failed Test Engine executions when the build has Test Engine runs (default true)
    include_failure_expandedboolean
    Include expanded test failure details such as stack traces within the summary's bounded test-content budget
    include_logsboolean
    Include a bounded log tail for failed, timed-out, canceled, and promised-failing jobs (default true)
    log_tailinteger
    Log lines to include for each failed, timed-out, canceled, or promised-failing job (default 50, max 200)
    max_annotationsinteger
    Maximum error or warning annotations to return (default 20, max 100); the server scans at most 500 total annotations
    max_failed_testsinteger
    Maximum failed test executions to return across all Test Engine runs (default 100, max 200)
    max_failed_tests_per_runinteger
    Maximum failed test executions to return per Test Engine run (default 20, max 100)
    max_jobsinteger
    Maximum terminal problem or downstream-failed jobs to return (default 10, server may enforce a lower maximum, absolute max 50)
    max_test_runsinteger
    Maximum Test Engine runs to inspect (default 5, max 20)
  • buildkitemcp_get_build_test_engine_runsGet test engine runs data for a specific build in Buildkite.Read-only

    Get Build Test Engine Runs

    Get test engine runs data for a specific build in Buildkite. This can be used to look up Test Runs.

    Inputs

    build_numberstringrequired
    No description.
    org_slugstringrequired
    No description.
    pipeline_slugstringrequired
    No description.
  • buildkitemcp_get_clusterGet detailed information about a specific cluster including its name, description, default queue, and configurationRead-only

    Get Cluster

    Get detailed information about a specific cluster including its name, description, default queue, and configuration

    Inputs

    cluster_idstringrequired
    No description.
    org_slugstringrequired
    No description.