Skip to content
Scalekit Docs
Talk to an Engineer Dashboard

Connect AI agents to the IcePanel MCP server

Vendor MCP
Open markdown

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

Tools
24
What they doRead · write · destructive
18 · 6 · 018 read6 write0 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 IcePanel MCP connection

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

    Scalekit credentials are available for IcePanel MCP server, so you don't need to register an OAuth app. To show your own app on the consent screen, use your own credentials instead.

    Use your own OAuth app

    IcePanel uses OAuth 2.1 with Dynamic Client Registration (DCR) — Scalekit registers an OAuth client with IcePanel automatically. No manual app registration or client credentials are needed.

    1. Copy the redirect URI from Scalekit

      In the Scalekit dashboard, go to AgentKit > Connections > Create Connection. Find IcePanel MCP and click Create. Copy the redirect URI — it looks like https://<SCALEKIT_ENVIRONMENT_URL>/sso/v1/oauth/<CONNECTION_ID>/callback.

    2. Authorize with your IcePanel account

      Click Connect in the Scalekit dashboard. You are redirected to IcePanel’s login page. Sign in with the IcePanel account that owns the landscapes you want to access.

    3. Confirm the connection is active

      After you authorize, Scalekit exchanges the authorization code for tokens and marks the connection as Active. IcePanel tokens are refreshed automatically — no further steps are needed.

  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 = 'icepanelmcp'
    const identifier = 'user_123'
    // Generate an authorization link for the user
    const { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })
    console.log('Authorize IcePanel 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: 'icepanelmcp_icepanel_listadrs',
    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
  • icepanelmcp_icepanel_getadrdetailsGet detailed information about a specific Architecture Decision Record (ADR) including its full content, status history, and related items.Read-only

    GetADRDetails

    Get detailed information about a specific Architecture Decision Record (ADR) including its full content, status history, and related items.

    Inputs

    adrIdstringrequired
    The unique identifier of the ADR to retrieve.
    responseFormatstring
    Controls the verbosity of the response. Use 'detailed' for full ADR information or 'concise' for a summary.one of detailedconcise
    versionIdstring
    The landscape version ID. Omit to use the latest version.
  • icepanelmcp_icepanel_getconnectiondetailsGet full details for a single connection including description, links, technologies, and tags.Read-only

    GetConnectionDetails

    Get full details for a single connection including description, links, technologies, and tags.

    Inputs

    connectionIdstringrequired
    The unique ID of the connection to retrieve. Use listConnections to discover available connection IDs.
    responseFormatstring
    Controls the verbosity of the response. Use 'detailed' for full connection information including all technologies and tags, or 'concise' for a summary.one of detailedconcise
    versionIdstring
    The landscape version ID to retrieve the connection from. Leave blank to use the latest version.
  • icepanelmcp_icepanel_getdiagramdetailsGet detailed information about a diagram including its objects, connections, and flows, or export as a PNG image.Read-only

    GetDiagramDetails

    Get detailed information about a diagram including its objects, connections, and flows, or export as a PNG image.

    Inputs

    diagramIdstringrequired
    The unique identifier of the diagram to retrieve.
    responseFormatstring
    Response format. Use 'detailed' for full information, 'concise' for a summary, or 'image' to export as a PNG image.one of detailedconciseimage
    versionIdstring
    The landscape version ID. Omit to use the latest version.
  • icepanelmcp_icepanel_getdomaindetailsGet detailed information about a specific domain including its name, labels, and timestamps.Read-only

    GetDomainDetails

    Get detailed information about a specific domain including its name, labels, and timestamps.

    Inputs

    domainIdstringrequired
    The unique ID of the domain to retrieve. Use listDomains to discover available domain IDs.
    responseFormatstring
    Controls the verbosity of the response. Use 'detailed' for full domain information or 'concise' for a summary.one of detailedconcise
    versionIdstring
    The landscape version ID to retrieve the domain from. Leave blank to use the latest version.
  • icepanelmcp_icepanel_getflowdetailsGet detailed information about a flow including its steps, or export it as a Mermaid sequence diagram.Read-only

    GetFlowDetails

    Get detailed information about a flow including its steps, or export it as a Mermaid sequence diagram.

    Inputs

    flowIdstringrequired
    The unique identifier of the flow to retrieve.
    responseFormatstring
    Response format. Use 'detailed' for full information, 'concise' for a summary, or 'mermaid' to export as a Mermaid sequence diagram.one of detailedconcisemermaid
    versionIdstring
    The landscape version ID. Omit to use the latest version.
  • icepanelmcp_icepanel_getmodelobjectdetailsGet detailed information about a model object including its type, status, domain, technologies, tags, and relationships.Read-only

    GetModelObjectDetails

    Get detailed information about a model object including its type, status, domain, technologies, tags, and relationships.

    Inputs

    modelObjectIdstringrequired
    The unique ID of the model object to retrieve. Use listModelObjects to discover available model object IDs.
    responseFormatstring
    Controls the verbosity of the response. Use 'detailed' for full object information including all relationships, or 'concise' for a summary.one of detailedconcise
    versionIdstring
    The landscape version ID to retrieve the model object from. Leave blank to use the latest version.
  • icepanelmcp_icepanel_getteamdetailsGet detailed information about a specific team including its members, assigned model objects, and timestamps.Read-only

    GetTeamDetails

    Get detailed information about a specific team including its members, assigned model objects, and timestamps.

    Inputs

    teamIdstringrequired
    The unique identifier of the team to retrieve.
    responseFormatstring
    Controls the verbosity of the response. Use 'detailed' for full team information or 'concise' for a summary.one of detailedconcise
  • icepanelmcp_icepanel_gettechnologydetailsGet detailed information about a specific technology including its type, provider, description, and links.Read-only

    GetTechnologyDetails

    Get detailed information about a specific technology including its type, provider, description, and links.

    Inputs

    catalogTechnologyIdstringrequired
    The unique ID of the technology to retrieve details for. Use listTechnologies to discover available technology IDs.
    responseFormatstring
    Controls the verbosity of the response. Use 'detailed' for full technology information or 'concise' for a summary.one of detailedconcise

Workflows

Find a landscape and list its model objects

Most IcePanel tools require a landscapeId. Use icepanelmcp_icepanel_landscapesearch to find landscapes by name or description, then pass the returned id to subsequent tools.

// Step 1 — find the landscape
const results = await actions.executeTool({
connector: 'icepanelmcp',
identifier: 'user_123',
toolName: 'icepanelmcp_icepanel_landscapesearch',
toolInput: { query: 'production' },
});
const landscapeId = results.landscapes[0].id;
// Step 2 — list all model objects in the landscape
const objects = await actions.executeTool({
connector: 'icepanelmcp',
identifier: 'user_123',
toolName: 'icepanelmcp_icepanel_listmodelobjects',
toolInput: { landscapeId },
});
console.log(objects);

Create an architecture decision record

Use icepanelmcp_icepanel_createadr to log an ADR directly from your agent. Provide name and optionally description and content. The content field supports Markdown — use it to structure context, decision, and consequences sections.

const adr = await actions.executeTool({
connector: 'icepanelmcp',
identifier: 'user_123',
toolName: 'icepanelmcp_icepanel_createadr',
toolInput: {
name: 'Use event sourcing for order history',
description: 'Decision to adopt event sourcing for the Orders bounded context',
content: '## Context\nWe need a reliable audit trail for order state changes.\n\n## Decision\nAdopt event sourcing for the Orders bounded context.\n\n## Consequences\nIncreased storage; simpler replay and debugging.',
},
});
console.log(adr.id);