mcpbeat Sign in

Azure Drawio MCP Diagramming Agent Skill

Create and edit architecture diagrams using Draw.io MCP (`drawio/create_diagram`) with reliable Azure icon rendering guidance and troubleshooting. compatibility Requires Python 3 and internet access to refresh the icon catalog (periodic, not per-run).

12k tokens
context cost
the whole folder, loaded on every use
5
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
192
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/thomast1906/github-copilot-agent-skills --skill azure-drawio-mcp-diagramming

The instruction itself

21 sections, as written by the author

Draw.io MCP Diagramming Skill

Use this skill to create or update diagrams through the Draw.io MCP tool and to avoid common Azure icon rendering problems.

See references/REFERENCE.md for reference artifacts and refresh commands.

For non-Azure diagrams, you can skip icon discovery/validation scripts and proceed directly to drawio/create_diagram.

When to Use

  • The user asks to create or refine architecture diagrams.
  • The user wants draw.io/diagrams.net output from an MCP workflow.
  • The user needs Azure service icons in diagrams.
  • The user reports that Azure icons/shapes are not appearing.

Required Tooling

  • MCP tool: drawio/create_diagram
  • Workspace MCP config should include a drawio server:
{
  "servers": {
    "drawio": {
      "type": "http",
      "url": "https://mcp.draw.io/mcp"
    }
  }
}
  • If diagram uses Azure icons: grep references/azure2-complete-catalog.txt to verify icon paths — no scripts needed at runtime.
  • If diagram is not Azure-specific: skip icon lookup and create diagram directly.
  • For Azure infrastructure/network diagrams: apply Professional Network Topology Patterns (see section below):
  • Use larger canvas (1900x1500)
  • VNets with thick borders (strokeWidth=4)
  • Subnets with dashed borders (strokeWidth=2, dashPattern=8 8)
  • Position resources inside their subnets
  • Label all traffic flows with protocols/ports
  • Include traffic legend and network isolation explanation boxes
  • Build a valid mxGraphModel payload using verified icons when applicable.
  • Call drawio/create_diagram with the XML.
  • If user wants a file artifact, save as .drawio wrapped in <mxfile><diagram>...</diagram></mxfile>.
  • Keep labels concise and explicit (service name + role).
  • For Azure diagrams, prefer one icon per major service and use edges for flow semantics (ingress/egress/peering/telemetry).

Visual Quality Guardrails

Apply these defaults unless the user explicitly asks for a dense/technical view:

  • Use 3-4 major lanes/zones max (for example Source, Pipeline, Azure target).
  • Keep primary flow left-to-right with a single main path.
  • Use stage numbering (1, 2, 3, 4) instead of many edge labels.
  • Keep one icon per major service; avoid icon-per-step layouts.
  • Limit cross-lane dashed lines to one security/auth line and one optional telemetry line.
  • Keep text concise (single purpose per box) and avoid multiline overload.
  • Prefer a "clean" variant first; add detail only if requested.

For worked examples of common layout problems (stacked edges, repeated labels, observability inside VNet, etc.), see references/layout-antipatterns.md.

Professional Network Topology Patterns (Azure Infrastructure)

When creating Azure infrastructure network diagrams with VNets, subnets, and network isolation:

Canvas Sizing

  • Use larger canvas for complex infrastructure: pageWidth="1900" pageHeight="1500"
  • Standard canvas may be too small for multi-VNet topologies

VNet and Subnet Visualization

  • VNets: Use thick borders (strokeWidth=4) and large containers
  • DMZ VNet: Yellow (fillColor=#fff2cc, strokeColor=#d6b656)
  • Internal VNet: Green (fillColor=#d5e8d4, strokeColor=#82b366)
  • Management Zone: Blue (fillColor=#dae8fc, strokeColor=#6c8ebf)
  • Subnets: Use dashed borders (strokeWidth=2, dashed=1, dashPattern=8 8)
  • Position subnet containers inside VNet containers
  • Use lighter shades of parent VNet color
  • Label with subnet name and CIDR (e.g., "Application Subnet - 10.x.2.0/24")
  • Delegated Subnets: Add delegation info to label (e.g., "PostgreSQL Subnet - 10.x.4.0/24 (Delegated to Microsoft.DBforPostgreSQL/flexibleServers)")

Resource Positioning

  • Position all resources inside their respective subnet containers
  • VMs, databases, load balancers must be visually contained within their subnets
  • This clearly shows network isolation boundaries

Traffic Flow Visualization

  • Label all traffic arrows with protocols and ports:
  • HTTPS:443 (red thick arrows for internet ingress)
  • HTTP:8080/8090/8095 (gold arrows for backend pools)
  • PostgreSQL:5432 (blue dashed arrows for database connections)
  • NFS/Gluster (green arrows for shared storage)
  • RBAC/Identity/SMTP (orange dashed arrows for management/external)
  • Use edgeStyle=orthogonalEdgeStyle for clean routing
  • Include <Array> waypoints for complex routing

Essential Components

  • Traffic Legend Box (bottom-left)
  • Show all 5 traffic types with color-coded arrows
  • Include protocol/port information
  • Use thick bordered white box (strokeWidth=3)
  • Network Isolation Explanation Box (top-left)
  • Explain visual conventions:
  • "VNets: Thick borders"
  • "Subnets: Dashed borders"
  • "PostgreSQL subnet delegated"
  • "NSGs control traffic"
  • "Private DNS for internal resolution"
  • Use yellow background (fillColor=#fff9cc)
  • Zone Separation
  • VNet Peering Zone: Grey box (fillColor=#f5f5f5, strokeColor=#666666)
  • External Services Zone: Orange box (fillColor=#ffe6cc, strokeColor=#d79b00)

Complete Example Structure

<mxGraphModel pageWidth="1900" pageHeight="1500">
  <!-- VNet Container with thick border -->
  <mxCell id="vnet" value="Internal VNet - 10.x.0.0/16" 
    style="rounded=0;whiteSpace=wrap;html=1;fillColor=#d5e8d4;strokeColor=#82b366;
    verticalAlign=top;fontSize=16;fontStyle=1;align=center;strokeWidth=4;">
    <mxGeometry x="220" y="580" width="1340" height="820"/>
  </mxCell>
  
  <!-- Subnet Container with dashed border inside VNet -->
  <mxCell id="subnet-app" value="Application Subnet - 10.x.2.0/24"
    style="rounded=1;whiteSpace=wrap;html=1;fillColor=#e6f4ea;strokeColor=#82b366;
    verticalAlign=top;fontSize=13;fontStyle=1;align=center;strokeWidth=2;dashed=1;dashPattern=8 8;">
    <mxGeometry x="260" y="650" width="480" height="340"/>
  </mxCell>
  
  <!-- Resources inside subnet -->
  <mxCell id="vm" style="image;aspect=fixed;html=1;points=[];align=center;
    image=img/lib/azure2/compute/Virtual_Machine.svg;">
    <mxGeometry x="300" y="720" width="64" height="59"/>
  </mxCell>
  
  <!-- Labeled traffic edge -->
  <mxCell id="edge" value="PostgreSQL:5432" 
    style="edgeStyle=orthogonalEdgeStyle;strokeWidth=2;strokeColor=#6c8ebf;dashed=1;"
    edge="1" source="vm" target="postgres">
    <mxGeometry relative="1"/>
  </mxCell>
</mxGraphModel>

Professional Topology Checklist

  • [ ] VNets have thick borders (strokeWidth=4)
  • [ ] Subnets have dashed borders (strokeWidth=2, dashPattern=8 8)
  • [ ] All resources positioned inside their subnets
  • [ ] Traffic arrows labeled with protocols and ports
  • [ ] Traffic legend box included
  • [ ] Network isolation explanation box included
  • [ ] Color-coded zones for different purposes
  • [ ] Canvas sized appropriately (1900x1500 for complex infra)
  • [ ] VNet peering connections shown in separate zone
  • [ ] External services grouped in separate zone

Icon Reference Assets (Azure Diagrams)

This section applies only when the diagram includes Azure services/icons.

  • Use the static catalog — references/azure2-complete-catalog.txt contains all 648 Azure2 icons.
  • Grep it to find icon paths: grep -i "gateway" references/azure2-complete-catalog.txt
  • No HTTP requests or script execution needed at runtime.
  • Hard gate
  • If an icon path cannot be confirmed in the catalog, do not use it in drawio/create_diagram.
  • Find an alternative via grep first.
  • Render review fallback
  • If diagram review shows wrong/missing icon rendering, grep the catalog for alternative paths.
  • Substitute and regenerate the diagram.
  • Refresh catalog (periodic, human-run — not per diagram):
cd .github/skills/drawio-mcp-diagramming/scripts
python3 search_azure2_icons_github.py --max-results 9999 > ../references/azure2-complete-catalog.txt

Azure Icon Caveats (Important)

Azure icon rendering in draw.io can fail for two common reasons:

  • Wrong style type
  • shape=mxgraph.azure2.* may not render in some hosts.
  • Prefer Azure2 image style entries:
  • image;aspect=fixed;html=1;...;image=img/lib/azure2/<category>/<Icon_Name>.svg;
  • Library/environment mismatch
  • Some embedded viewers/extensions do not resolve img/lib/azure2/... consistently.
  • If icons do not render in one host, test in app.diagrams.net.

How to Discover Icons

Grep the static catalog — no scripts needed at agent runtime:

grep -i "gateway" references/azure2-complete-catalog.txt
grep -i "virtual_machine\|load_balancer\|key_vault" references/azure2-complete-catalog.txt

Use verified paths in diagram cell styles:

image;aspect=fixed;html=1;...;image=img/lib/azure2/<category>/<Icon_Name>.svg;

For renderer resilience, absolute URLs also work:

image;aspect=fixed;html=1;...;image=https://raw.githubusercontent.com/jgraph/drawio/dev/src/main/webapp/img/lib/azure2/networking/Application_Gateways.svg;

If local rendering still fails, open in app.diagrams.net.

Known-Good Azure2 Icon Examples

image=img/lib/azure2/networking/Front_Doors.svg
image=img/lib/azure2/networking/Private_Link_Hub.svg
image=img/lib/azure2/networking/Network_Watcher.svg
image=img/lib/azure2/app_services/API_Management_Services.svg
image=img/lib/azure2/app_services/App_Services.svg
image=img/lib/azure2/databases/Azure_Cosmos_DB.svg
image=img/lib/azure2/identity/Managed_Identities.svg
image=img/lib/azure2/management_governance/Policy.svg
image=img/lib/azure2/analytics/Log_Analytics_Workspaces.svg
image=img/lib/azure2/management_governance/Monitor.svg
image=img/lib/azure2/devops/Application_Insights.svg
image=img/lib/azure2/devops/API_Connections.svg

Fallback Strategy if Icons Still Fail

If Azure icons still do not render:

  • Do not generate the Azure diagram with unresolved icon set.
  • Return the missing icon list and propose verified replacements.
  • After replacements validate to OK, then generate the diagram.

Troubleshooting Checklist

  • Confirm MCP server appears in MCP: List Servers.
  • Run MCP: Reset Cached Tools if tool list is stale.
  • Ensure XML is well-formed (no malformed tags or invalid comments).
  • Verify style uses image=img/lib/azure2/... for Azure2 icon mode.
  • Reopen diagram in web draw.io if VS Code extension rendering differs.
  • If an icon path looks wrong, grep references/azure2-complete-catalog.txt for alternatives.
  • If the catalog itself appears stale, re-run the refresh workflow in REFERENCE.md.

Prompt Template for Agents

See references/REFERENCE.md for full example prompt templates.

Definition of Done

  • For non-Azure diagrams: diagram is generated and renders correctly.
  • For Azure diagrams: all icon paths confirmed against references/azure2-complete-catalog.txt before calling drawio/create_diagram.
  • If render issues found, alternative icon paths sourced from catalog and substituted.
  • Diagram generated via drawio/create_diagram only with confirmed icon paths.
  • XML is valid and opens in draw.io.
  • Azure resources are identifiable (icons and clear service labels).
  • For Azure infrastructure/network diagrams:
  • VNets use thick borders (strokeWidth=4) and are color-coded
  • Subnets use dashed borders (strokeWidth=2, dashPattern=8 8)
  • All resources positioned inside their respective subnets
  • All traffic flows labeled with protocols and ports
  • Traffic legend box included (bottom-left)
  • Network isolation explanation box included (top-left)
  • Canvas appropriately sized (1900x1500 for complex topologies)
  • VNet peering and external services in separate zones
  • Layout anti-patterns checked against references/layout-antipatterns.md before finalising

Other skills for the same job

different authors, same section of the catalogue
Azure Kubernetes Automatic Readiness
by microsoft
vendor ×3

Assess Kubernetes workloads and cluster configuration for AKS Automatic compatibility. Identifies incompatibilities, generates fixes, and guides migration from AKS Standard to AKS Automatic. WHEN: migrate to AKS Automatic, check AKS Automatic readiness, validate manifests for Automatic, assess cluster for Automatic compatibility, fix deployment for Automatic compatibility, identify AKS Automatic migration blockers, is my cluster ready for AKS Automatic.

13k tokens
Capacity
by microsoft
vendor ×3

Discovers available Azure OpenAI model capacity across regions and projects. Analyzes quota limits, compares availability, and recommends optimal deployment locations based on capacity requirements. USE FOR: find capacity, check quota, where can I deploy, capacity discovery, best region for capacity, multi-project capacity search, quota analysis, model availability, region comparison, check TPM availability. DO NOT USE FOR: actual deployment (hand off to preset or customize after discovery), quota increase requests (direct user to Azure Portal), listing existing deployments.

6k tokens scripts
Customize
by microsoft
vendor ×3

Interactive guided deployment flow for Azure OpenAI models with full customization control. Step-by-step selection of model version, SKU (GlobalStandard/Standard/ProvisionedManaged), capacity, RAI policy (content filter), and advanced options (dynamic quota, priority processing, spillover). USE FOR: custom deployment, customize model deployment, choose version, select SKU, set capacity, configure content filter, RAI policy, deployment options, detailed deployment, advanced deployment, PTU deployment, provisioned throughput. DO NOT USE FOR: quick deployment to optimal region (use preset).

8k tokens
Deploy Model
by microsoft
vendor ×3

Unified Azure OpenAI model deployment skill with intelligent intent-based routing. Handles quick preset deployments, fully customized deployments (version/SKU/capacity/RAI policy), and capacity discovery across regions and projects. USE FOR: deploy model, deploy gpt, create deployment, model deployment, deploy openai model, set up model, provision model, find capacity, check model availability, where can I deploy, best region for model, capacity analysis. DO NOT USE FOR: listing existing deployments (use foundry_models_deployments_list MCP tool), deleting deployments, agent creation (use agent/create), project creation (use project/create).

26k tokens scripts
Preset
by microsoft
vendor ×3

Intelligently deploys Azure OpenAI models to optimal regions by analyzing capacity across all available regions. Automatically checks current region first and shows alternatives if needed. USE FOR: quick deployment, optimal region, best region, automatic region selection, fast setup, multi-region capacity check, high availability deployment, deploy to best location. DO NOT USE FOR: custom SKU selection (use customize), specific version selection (use customize), custom capacity configuration (use customize), PTU deployments (use customize).

9k tokens
Lamindb
by christophacham
×3

This skill should be used when working with LaminDB, an open-source data framework for biology that makes data queryable, traceable, reproducible, and FAIR. Use when managing biological datasets (scRNA-seq, spatial, flow cytometry, etc.), tracking computational workflows, curating and validating data with biological ontologies, building data lakehouses, or ensuring data lineage and reproducibility in biological research. Covers data management, annotation, ontologies (genes, cell types, diseases, tissues), schema validation, integrations with workflow managers (Nextflow, Snakemake) and MLOps platforms (W&B, MLflow), and deployment strategies.

22k tokens
Latchbio Integration
by christophacham
×3

Latch platform for bioinformatics workflows. Build pipelines with Latch SDK, @workflow/@task decorators, deploy serverless workflows, LatchFile/LatchDir, Nextflow/Snakemake integration.

12k tokens
Modal
by christophacham
×3

Run Python code in the cloud with serverless containers, GPUs, and autoscaling. Use when deploying ML models, running batch processing jobs, scheduling compute-intensive tasks, or serving APIs that require GPU acceleration or dynamic scaling.

17k tokens

How to use it

Copy the folder

Take thomast1906/azure-drawio-mcp-diagramming from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.