IcePanel MCP connector
OAuth 2.1/DCR Developer ToolsCollaborationConnect your IcePanel software architecture models to AI agents. Query and update your C4 model landscapes — systems, apps, components, connections, and...
IcePanel MCP connector
-
Install the SDK
Section titled “Install the SDK”Terminal window npm install @scalekit-sdk/nodeTerminal window pip install scalekit -
Set your credentials
Section titled “Set your credentials”Add your Scalekit credentials to your
.envfile. 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> -
Set up the connector
Section titled “Set up the connector”Register your IcePanel MCP credentials with Scalekit so it handles the token lifecycle. You do this once per environment.
Dashboard setup steps
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.
-
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. -
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.
-
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.
-
-
Authorize and make your first call
Section titled “Authorize and make your first call”quickstart.ts import { ScalekitClient } from '@scalekit-sdk/node'import 'dotenv/config'const scalekit = new ScalekitClient(process.env.SCALEKIT_ENV_URL,process.env.SCALEKIT_CLIENT_ID,process.env.SCALEKIT_CLIENT_SECRET,)const actions = scalekit.actionsconst connector = 'icepanelmcp'const identifier = 'user_123'// Generate an authorization link for the userconst { link } = await actions.getAuthorizationLink({ connectionName: connector, identifier })console.log('Authorize IcePanel MCP:', link)process.stdout.write('Press Enter after authorizing...')await new Promise(r => process.stdin.once('data', r))// Make your first callconst result = await actions.executeTool({connector,identifier,toolName: 'icepanelmcp_icepanel_listadrs',toolInput: {},})console.log(result)quickstart.py import osfrom scalekit.client import ScalekitClientfrom dotenv import load_dotenvload_dotenv()scalekit_client = ScalekitClient(env_url=os.getenv("SCALEKIT_ENV_URL"),client_id=os.getenv("SCALEKIT_CLIENT_ID"),client_secret=os.getenv("SCALEKIT_CLIENT_SECRET"),)actions = scalekit_client.actionsconnection_name = "icepanelmcp"identifier = "user_123"# Generate an authorization link for the userlink_response = actions.get_authorization_link(connection_name=connection_name,identifier=identifier,)print("Authorize IcePanel MCP:", link_response.link)input("Press Enter after authorizing...")# Make your first callresult = actions.execute_tool(tool_input={},tool_name="icepanelmcp_icepanel_listadrs",connection_name=connection_name,identifier=identifier,)print(result)
What you can do
Section titled “What you can do”Connect this agent connector to let your agent:
- Createadr icepanel — Create a new Architecture Decision Record (ADR) in the landscape
- Createconnection icepanel — Create a new connection between two model objects
- Createmodelobject icepanel — Create a new model object in the landscape
- Getadrdetails icepanel — Get detailed information about a specific Architecture Decision Record (ADR) including its full content, status history, and related items
- Getconnectiondetails icepanel — Get full details for a single connection including description, links, technologies, and tags
- Getdiagramdetails icepanel — Get detailed information about a diagram including its objects, connections, and flows, or export as a PNG image
Common workflows
Section titled “Common 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 landscapeconst results = await actions.executeTool({ connectionName: '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 landscapeconst objects = await actions.executeTool({ connectionName: 'icepanelmcp', identifier: 'user_123', toolName: 'icepanelmcp_icepanel_listmodelobjects', toolInput: { landscapeId },});console.log(objects);# Step 1 — find the landscaperesults = actions.execute_tool( connection_name="icepanelmcp", identifier="user_123", tool_name="icepanelmcp_icepanel_landscapesearch", tool_input={"query": "production"},)landscape_id = results["landscapes"][0]["id"]
# Step 2 — list all model objects in the landscapeobjects = actions.execute_tool( connection_name="icepanelmcp", identifier="user_123", tool_name="icepanelmcp_icepanel_listmodelobjects", tool_input={"landscapeId": landscape_id},)print(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({ connectionName: '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);adr = actions.execute_tool( connection_name="icepanelmcp", identifier="user_123", tool_name="icepanelmcp_icepanel_createadr", tool_input={ "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.", },)print(adr["id"])Tool list
Section titled “Tool list”Use the exact tool names from the Tool list below when you call execute_tool. If you’re not sure which name to use, list the tools available for the current user first.
icepanelmcp_icepanel_createadr
#
Create a new Architecture Decision Record (ADR) in the landscape. 3 params
Create a new Architecture Decision Record (ADR) in the landscape.
name string required The title of the ADR. content string optional The full content or body of the ADR. Markdown is supported. description string optional A brief summary of the ADR. icepanelmcp_icepanel_createconnection
#
Create a new connection between two model objects. 9 params
Create a new connection between two model objects.
direction string required The direction of data or control flow for this connection. Common values: outgoing, incoming, bidirectional. name string required The display name for the new connection. This name appears on diagrams and in the model. originId string required The unique ID of the origin model object (the source of the connection). Use listModelObjects to find valid IDs. targetId string required The unique ID of the target model object (the destination of the connection). Use listModelObjects to find valid IDs. description string optional A human-readable description of the connection explaining what data or control flows through it. status string optional Initial status for the new connection (e.g. active, deprecated). Leave blank for the default status. tagIds array optional An array of tag IDs to attach to the new connection. Use listTags to discover available tag IDs. technologyIds array optional An array of technology IDs to attach to the new connection. Use listTechnologies to discover available technology IDs. viaId string optional The unique ID of an intermediary model object through which this connection routes. For example, an API gateway that sits between the origin and target. icepanelmcp_icepanel_createmodelobject
#
Create a new model object in the landscape. Types 'actor' and 'system' can be created at root level; 'app' and 'component' require a parentId pointing to a parent system. 12 params
Create a new model object in the landscape. Types 'actor' and 'system' can be created at root level; 'app' and 'component' require a parentId pointing to a parent system.
name string required The name of the model object to create. type string required The type of model object to create. caption string optional A short caption or subtitle for the model object. description string optional A detailed description of the model object. domainId string optional The domain ID to place the model object in. external boolean optional Whether this model object represents an external system. groupIds array optional Array of group IDs to assign to the model object. parentId string optional The ID of the parent model object to nest this object within. status string optional The initial status for the model object. tagIds array optional Array of tag IDs to attach to the model object. teamIds array optional Array of team IDs to assign ownership of the model object. technologyIds array optional Array of technology IDs to attach to the model object. icepanelmcp_icepanel_getadrdetails
#
Get detailed information about a specific Architecture Decision Record (ADR) including its full content, status history, and related items. 3 params
Get detailed information about a specific Architecture Decision Record (ADR) including its full content, status history, and related items.
adrId string required The unique identifier of the ADR to retrieve. responseFormat string optional Controls the verbosity of the response. Use 'detailed' for full ADR information or 'concise' for a summary. versionId string optional The landscape version ID. Omit to use the latest version. icepanelmcp_icepanel_getconnectiondetails
#
Get full details for a single connection including description, links, technologies, and tags. 3 params
Get full details for a single connection including description, links, technologies, and tags.
connectionId string required The unique ID of the connection to retrieve. Use listConnections to discover available connection IDs. responseFormat string optional Controls the verbosity of the response. Use 'detailed' for full connection information including all technologies and tags, or 'concise' for a summary. versionId string optional The landscape version ID to retrieve the connection from. Leave blank to use the latest version. icepanelmcp_icepanel_getdiagramdetails
#
Get detailed information about a diagram including its objects, connections, and flows, or export as a PNG image. 3 params
Get detailed information about a diagram including its objects, connections, and flows, or export as a PNG image.
diagramId string required The unique identifier of the diagram to retrieve. responseFormat string optional Response format. Use 'detailed' for full information, 'concise' for a summary, or 'image' to export as a PNG image. versionId string optional The landscape version ID. Omit to use the latest version. icepanelmcp_icepanel_getdomaindetails
#
Get detailed information about a specific domain including its name, labels, and timestamps. 3 params
Get detailed information about a specific domain including its name, labels, and timestamps.
domainId string required The unique ID of the domain to retrieve. Use listDomains to discover available domain IDs. responseFormat string optional Controls the verbosity of the response. Use 'detailed' for full domain information or 'concise' for a summary. versionId string optional The landscape version ID to retrieve the domain from. Leave blank to use the latest version. icepanelmcp_icepanel_getflowdetails
#
Get detailed information about a flow including its steps, or export it as a Mermaid sequence diagram. 3 params
Get detailed information about a flow including its steps, or export it as a Mermaid sequence diagram.
flowId string required The unique identifier of the flow to retrieve. responseFormat string optional Response format. Use 'detailed' for full information, 'concise' for a summary, or 'mermaid' to export as a Mermaid sequence diagram. versionId string optional The landscape version ID. Omit to use the latest version. icepanelmcp_icepanel_getmodelobjectdetails
#
Get detailed information about a model object including its type, status, domain, technologies, tags, and relationships. 3 params
Get detailed information about a model object including its type, status, domain, technologies, tags, and relationships.
modelObjectId string required The unique ID of the model object to retrieve. Use listModelObjects to discover available model object IDs. responseFormat string optional Controls the verbosity of the response. Use 'detailed' for full object information including all relationships, or 'concise' for a summary. versionId string optional The landscape version ID to retrieve the model object from. Leave blank to use the latest version. icepanelmcp_icepanel_getteamdetails
#
Get detailed information about a specific team including its members, assigned model objects, and timestamps. 2 params
Get detailed information about a specific team including its members, assigned model objects, and timestamps.
teamId string required The unique identifier of the team to retrieve. responseFormat string optional Controls the verbosity of the response. Use 'detailed' for full team information or 'concise' for a summary. icepanelmcp_icepanel_gettechnologydetails
#
Get detailed information about a specific technology including its type, provider, description, and links. 2 params
Get detailed information about a specific technology including its type, provider, description, and links.
catalogTechnologyId string required The unique ID of the technology to retrieve details for. Use listTechnologies to discover available technology IDs. responseFormat string optional Controls the verbosity of the response. Use 'detailed' for full technology information or 'concise' for a summary. icepanelmcp_icepanel_landscapesearch
#
Search across all landscape entities (model objects, connections, diagrams, flows) by name. Supports fuzzy and prefix matching. Only works on the latest version. 4 params
Search across all landscape entities (model objects, connections, diagrams, flows) by name. Supports fuzzy and prefix matching. Only works on the latest version.
query string required Search query string used to find landscape entities by name. Supports fuzzy and prefix matching across model objects, connections, diagrams, and flows. responseFormat string optional Controls the verbosity of the response. Use 'detailed' for full entity information or 'concise' for a summary. Defaults to detailed if omitted. type string optional Filter results to a specific entity type. Valid values: actor, app, component, group, store, system, app-diagram, component-diagram, context-diagram, connection, flow. versionId string optional The landscape version ID to search within. Defaults to 'latest'. Only the latest version is supported for search. icepanelmcp_icepanel_listadrs
#
List Architecture Decision Records (ADRs) in the landscape. 4 params
List Architecture Decision Records (ADRs) in the landscape.
name string optional Filter ADRs by name. responseFormat string optional Controls the verbosity of the response. Use 'detailed' for full ADR information or 'concise' for a summary. status string optional Filter ADRs by status. Valid values: accepted, draft, rejected. versionId string optional The landscape version ID to list ADRs from. Omit to use the latest version. icepanelmcp_icepanel_listconnections
#
List connections where a model object is the origin or target. 6 params
List connections where a model object is the origin or target.
modelObjectId string required The unique ID of the model object to list connections for. Returns all connections where this object is either the origin or target. direction string optional Filter connections by direction relative to the specified model object. Use 'inbound' for connections where the object is the target, or 'outbound' for connections where the object is the origin. status string optional Filter connections by status (e.g. active, deprecated, removed). Leave blank to return connections in all statuses. tagId string optional Filter connections by tag ID. Returns only connections that have the specified tag applied. technologyId string optional Filter connections by technology ID. Returns only connections that use the specified technology. versionId string optional The landscape version ID to list connections from. Leave blank to use the latest version. icepanelmcp_icepanel_listdiagrams
#
List diagrams in the landscape. Filter by name, type, or parent model object. 5 params
List diagrams in the landscape. Filter by name, type, or parent model object.
modelId string optional Filter diagrams by parent model object ID. name string optional Filter diagrams by name. responseFormat string optional Controls the verbosity of the response. Use 'detailed' for full diagram information or 'concise' for a summary. type string optional Filter diagrams by type. Valid values: app-diagram, component-diagram, context-diagram. versionId string optional The landscape version ID to list diagrams from. Omit to use the latest version. icepanelmcp_icepanel_listdomains
#
List domains in the landscape. Domains are top-level organizational boundaries (level 0 in the C4 hierarchy). 3 params
List domains in the landscape. Domains are top-level organizational boundaries (level 0 in the C4 hierarchy).
name string optional Filter domains by name. Returns domains whose name matches this value. responseFormat string optional Controls the verbosity of the response. Use 'detailed' for full domain information or 'concise' for a summary. versionId string optional The landscape version ID to list domains from. Leave blank to use the latest version. icepanelmcp_icepanel_listflows
#
List flows in the landscape. Flows represent sequence diagrams showing how objects interact over time. 2 params
List flows in the landscape. Flows represent sequence diagrams showing how objects interact over time.
responseFormat string optional Controls the verbosity of the response. Use 'detailed' for full flow information or 'concise' for a summary. versionId string optional The landscape version ID to list flows from. Omit to use the latest version. icepanelmcp_icepanel_listmodelobjects
#
List model objects in the landscape. Filter by name, type, status, parent, or group. 11 params
List model objects in the landscape. Filter by name, type, status, parent, or group.
cursor string optional Pagination cursor returned from a previous response. Pass this value to retrieve the next page of results. groupId string optional Filter model objects by group ID. Returns only objects belonging to the specified group. limit integer optional Maximum number of model objects to return per page. Leave blank for the server default. name string optional Filter model objects by name. Returns objects whose name matches this value. parentId string optional Filter model objects by parent object ID. Returns only direct children of the specified parent object. status string optional Filter model objects by status. Common values include 'active' and 'deprecated'. tagId string optional Filter model objects by tag ID. Returns only objects that have the specified tag applied. teamId string optional Filter model objects by team ID. Returns only objects owned by or assigned to the specified team. technologyId string optional Filter model objects by technology ID. Returns only objects that use the specified technology. type string optional Filter model objects by type. Valid values: actor, app, component, group, store, system. versionId string optional The landscape version ID to list model objects from. Leave blank to use the latest version. icepanelmcp_icepanel_listtags
#
List tags and tag groups in the landscape. Tags are organized by groups. 3 params
List tags and tag groups in the landscape. Tags are organized by groups.
groupName string optional Filter results to tags belonging to a specific tag group name. Leave blank to return tags from all groups. name string optional Filter results to tags matching a specific tag name. Leave blank to return all tags. versionId string optional The landscape version ID to list tags from. Defaults to 'latest'. icepanelmcp_icepanel_listteams
#
List teams in the organization. Teams represent ownership groups assignable to model objects. 2 params
List teams in the organization. Teams represent ownership groups assignable to model objects.
name string optional Filter teams by name. Returns only teams whose name matches or contains the provided value. responseFormat string optional Controls the verbosity of the response. Use 'detailed' for full team information or 'concise' for a summary. icepanelmcp_icepanel_listtechnologies
#
List technologies from the catalog and organization. Filter by name, type, or provider. 6 params
List technologies from the catalog and organization. Filter by name, type, or provider.
cursor string optional Pagination cursor returned from a previous response. Pass this value to retrieve the next page of results. limit integer optional Maximum number of technologies to return per page. Leave blank for the server default. name string optional Filter technologies by name. Returns technologies whose name matches or contains this value. provider string optional Filter technologies by provider (e.g. AWS, GCP, Azure). Returns only technologies from the specified provider. responseFormat string optional Controls the verbosity of the response. Use 'detailed' to include technology IDs (required for getTechnologyDetails) or 'concise' for a summary. type string optional Filter technologies by type (e.g. database, framework, language, platform). Returns only technologies of the specified type. icepanelmcp_icepanel_updateadr
#
Update an Architecture Decision Record (ADR). Supports updating name, description, content, status, and related items. 6 params
Update an Architecture Decision Record (ADR). Supports updating name, description, content, status, and related items.
adrId string required The unique identifier of the ADR to update. content string optional New content or body for the ADR. Markdown is supported. description string optional New brief summary for the ADR. name string optional New title for the ADR. relatedItems array optional Related items to associate with the ADR. status string optional New status for the ADR. Valid values: accepted, draft, rejected. icepanelmcp_icepanel_updateconnection
#
Update a connection in the landscape. Supports $add/$remove operations. Set status to 'removed' to delete. 10 params
Update a connection in the landscape. Supports $add/$remove operations. Set status to 'removed' to delete.
connectionId string required The unique ID of the connection to update. Use listConnections or getConnectionDetails to find available connection IDs. description string optional New description for the connection. Replaces the existing description. direction string optional New direction for the connection. Common values: outgoing, incoming, bidirectional. labels object optional Key-value metadata labels to set on the connection. Provide as a JSON object with string keys and string values. name string optional New display name for the connection. Replaces the existing name. originId string optional New origin model object ID for the connection. Changes the source of the connection. status string optional New status for the connection. Set to 'removed' to effectively delete the connection from the landscape. tagIds array optional Tag IDs to set on the connection. Replaces any existing tags. Use listTags to discover available tag IDs. targetId string optional New target model object ID for the connection. Changes the destination of the connection. technologyIds array optional Technology IDs to set on the connection. Replaces any existing technologies. Use listTechnologies to discover available IDs. icepanelmcp_icepanel_updatemodelobject
#
Update a model object in the landscape. Supports $add/$remove operations. Set status to 'removed' to delete. 11 params
Update a model object in the landscape. Supports $add/$remove operations. Set status to 'removed' to delete.
modelObjectId string required The unique identifier of the model object to update. caption string optional New caption or subtitle for the model object. description string optional New detailed description for the model object. external boolean optional Whether this model object represents an external system. groupIds array optional Group IDs to set on the model object. Replaces existing group assignments. name string optional New name for the model object. status string optional New status for the model object. Set to 'removed' to soft-delete the object. tagIds array optional Tag IDs to set on the model object. Replaces existing tag assignments. teamIds array optional Team IDs to set for ownership of the model object. technologyIds array optional Technology IDs to set on the model object. type string optional New type for the model object.