Skip to main content
Glama

arch7

Architecture diagram generator for Excalidraw, exposed as an MCP server.

Fork of excalidraw-architect-mcp by Bhukya Venkatesh (MIT License).

What's different

  • Cylinder shapes: vertical (databases), horizontal flattened (topics/queues)

  • 60+ components with auto-styling: GCP (GKE, Cloud Run, GCS, BigQuery, Pub/Sub, VPC, PSC), Kong, Confluent (Kafka, Schema Registry, ksqlDB), Dynatrace, OpenTelemetry, AI/Agentic (LLM, Agent, MCP, Vector DB, RAG)

  • Smaller diamonds for agent nodes

  • Repackaged as arch7_mcp

Related MCP server: Excalidraw MCP Server

Install

pip install -e .

MCP server (Claude Code)

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "arch7": {
      "command": "python",
      "args": ["-m", "arch7_mcp"]
    }
  }
}

Tools

Tool

Description

create_diagram

Structured nodes/connections → .excalidraw

mermaid_to_excalidraw

Mermaid syntax → .excalidraw

modify_diagram

Add/remove/update nodes on existing file

get_diagram_info

Read diagram state for iteration

Usage (Python)

from arch7_mcp.core.models import Node, Edge, DiagramGraph, Direction
from arch7_mcp.engine.layout import compute_layout
from arch7_mcp.engine.renderer import build_excalidraw_file, save_excalidraw

nodes = [
    Node(id="gke", label="GKE Cluster", component_type="gke"),
    Node(id="kafka", label="Kafka Topics", component_type="kafka"),
    Node(id="pg", label="PostgreSQL", component_type="postgresql"),
]
edges = [
    Edge(from_id="gke", to_id="kafka"),
    Edge(from_id="kafka", to_id="pg"),
]

graph = DiagramGraph(nodes=nodes, edges=edges, direction=Direction.LEFT_RIGHT)
layout = compute_layout(graph)
doc = build_excalidraw_file(layout)
save_excalidraw(doc, "arch.excalidraw")

License

MIT — see LICENSE. Original copyright Bhukya Venkatesh.

Available Tools

4 tools
create_diagramA

Create a new Excalidraw diagram from structured node and connection data.

The LLM provides a relationship map - this tool handles layout, styling, and rendering. No need to specify coordinates.

ParametersJSON Schema
NameRequiredDescriptionDefault
nodesYesList of nodes. Each dict has: - id (str, required): Unique identifier - label (str, required): Display text - component_type (str, optional): Technology name for auto-styling (e.g., "kafka", "postgresql", "redis", "nginx", "kubernetes"). If omitted, the label is used for auto-detection. - shape (str, optional): Override shape - "rectangle", "diamond", "ellipse", "circle", "stadium", "parallelogram" - color (str, optional): Hex color (e.g. "#6366f1") to override the auto-detected background fill. Stroke is darkened automatically. - planned (bool, optional): If true, render as a planned/future element (dashed stroke + 60% opacity). Default: false.
connectionsYesList of connections. Each dict has: - from_id (str, required): Source node id - to_id (str, required): Target node id - label (str, optional): Edge label text - style (str, optional): "solid", "dashed", "dotted", "thick"
output_pathYesFile path to save the .excalidraw file (e.g., "./arch.excalidraw")
directionNoLayout direction - "LR" (left-right), "TD" (top-down), "BT" (bottom-up), "RL" (right-left). Default: "LR"LR
themeNoColor theme - "default", "dark", "colorful", "professional". Default: "default". "professional" uses clean lines (no hand-drawn effect) and Helvetica font.default
subgraphsNoOptional list of groups (supports nesting). Each dict has: - id (str, required): Group identifier - label (str, required): Display label for the container - node_ids (list[str], required): Direct node ids inside this group - child_ids (list[str], optional): IDs of nested child subgroups. Parent containers automatically wrap around their children. - component_type (str, optional): Technology for container icon (e.g., "gke" or "googlecloud" shows a GCP logo top-right). Useful for multi-cloud diagrams.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses automated layout/styling (e.g., 'no need to specify coordinates'), but does not mention return value, error handling, or limitations. The output schema exists but isn't referenced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short, front-loaded sentences with zero wasted words. Every sentence adds value: first states the action, second clarifies automation and reduces cognitive load for the LLM.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 parameters and existence of output schema, the description covers the core task adequately. Missing explicit info on return value (but output schema exists, so not required per rubric). Minor gap: no mention of file saving behavior even though output_path parameter implies it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The main description adds minimal extra meaning beyond schema: it reiterates that coordinates are not needed, but parameter details are in schema. No significant enhancement.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Create a new Excalidraw diagram from structured node and connection data', using a specific verb and resource. It distinguishes from sibling tools (get_diagram_info, mermaid_to_excalidraw, modify_diagram) by focusing on creation, handling layout/styling/rendering automatically.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for creating diagrams from structured data but provides no explicit guidance on when to use it versus siblings (e.g., not for modifying existing diagrams or converting from Mermaid). No 'when not to use' or alternative recommendations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_diagram_infoA

Get a structured summary of an existing Excalidraw diagram.

Call this BEFORE modify_diagram to understand what nodes and connections currently exist. The summary includes node ids, labels, component types, and the full connection topology.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the .excalidraw file.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that the tool provides node ids, labels, component types, and connection topology, implying a read-only operation. No annotations exist, but the description sufficiently covers expected behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose and usage. No superfluous information; every word contributes value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, the description appropriately lists the summary contents (node ids, labels, etc.) and provides sufficient context for a single-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a clear description for file_path. The tool description adds no additional parameter details beyond confirming the file is an existing Excalidraw diagram, meeting the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a structured summary of an existing Excalidraw diagram, distinguishing it from siblings like 'create_diagram', 'modify_diagram', and 'mermaid_to_excalidraw'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises calling this tool BEFORE modify_diagram to understand current state. While it doesn't specifically exclude other scenarios, the context is clear for appropriate use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mermaid_to_excalidrawA

Convert Mermaid flowchart syntax into an Excalidraw diagram.

Supports the mermaid flowchart subset that AI agents commonly generate:

  • Directions: graph TD, LR, BT, RL

  • Node shapes: [text], {text}, ((text)), ([text])

  • Edge types: -->, ---, -.-> ==> with |label|

  • Subgraphs: subgraph Title ... end

Component types are auto-detected from node labels (e.g., a node labeled "PostgreSQL DB" automatically gets database styling).

ParametersJSON Schema
NameRequiredDescriptionDefault
mermaid_syntaxYesMermaid flowchart source code.
output_pathYesFile path to save the .excalidraw file.
themeNoColor theme - "default", "dark", "colorful", "professional". Default: "default". "professional" uses clean lines (no hand-drawn effect) and Helvetica font.default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description details the supported Mermaid subset and auto-detection of component types. With no annotations, it carries the full burden and mostly covers behavior, though missing details on file overwrite or error handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct and well-structured with bullet points for supported features. Every sentence adds value, and the most important information is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity and presence of an output schema, the description covers essential aspects like supported syntax and auto-detection. Minor gaps exist (e.g., error handling), but overall it is sufficiently complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline is 3. The description adds value beyond the schema by elaborating on the supported syntax and theme options (e.g., 'professional' uses Helvetica). This aids parameter understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool converts Mermaid flowchart syntax into an Excalidraw diagram. It specifies the supported subset, which distinguishes it from sibling tools like create_diagram, get_diagram_info, and modify_diagram that do not involve conversion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context on when to use the tool—when you have Mermaid syntax and need an Excalidraw diagram. However, it does not explicitly state when not to use it or mention alternatives, though the context is adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

modify_diagramA

Modify an existing Excalidraw diagram created by this tool.

Supports iterative editing: add components, remove nodes, update labels, and rewire connections - without recreating the entire diagram.

IMPORTANT: Call get_diagram_info first to understand the current diagram state before making modifications.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYesPath to the existing .excalidraw file.
operationsYesOrdered list of operations. Each dict has: - op: "add_node" | "remove_node" | "update_node" | "add_connection" | "remove_connection" For add_node: - id (str): New node identifier - label (str): Display text - component_type (str, optional): Technology for auto-styling - shape (str, optional): Shape override - color (str, optional): Hex color override - planned (bool, optional): Mark as planned/future (dashed + 60% opacity) - near (str, optional): Place near this existing node id For remove_node: - id (str): Node to remove (also removes its connections) For update_node: - id (str): Node to update - label (str, optional): New label - component_type (str, optional): New component type - color (str, optional): New hex color (pass empty string to clear) - planned (bool, optional): Toggle planned state For add_connection: - from_id (str): Source node id - to_id (str): Target node id - label (str, optional): Edge label For remove_connection: - from_id (str): Source node id - to_id (str): Target node id
themeNoColor theme for re-rendering. Default: "default"default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses it modifies (not creates), supports iterative edits, and warns to check current state. However, with no annotations, it misses details on atomicity, partial failures, or side effects of operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short paragraphs: purpose, capabilities, and a critical warning. No redundant wording, front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers the tool's purpose, iterative nature, and prerequisite call. With an output schema present, return value explanation is not needed, but error handling or operation ordering constraints are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed descriptions of each operation's parameters. Description adds context about iterative editing but does not supplement parameter meaning beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool modifies existing Excalidraw diagrams and distinguishes it from siblings like create_diagram by specifying 'modify an existing' and 'without recreating the entire diagram'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to call get_diagram_info first to understand current state before modifications. Lacks explicit when-not-to-use guidance but the prerequisite is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updatesv0.1.0
    • First observedcreate_diagram
    • First observedget_diagram_info
    • First observedmermaid_to_excalidraw
    • First observedmodify_diagram

TDQS

A4.1/5.0
Disambiguation5/5

Each tool has a clear, distinct role: creating a new diagram, retrieving diagram info, converting mermaid syntax, and modifying an existing diagram. No overlap in functionality.

Naming Consistency4/5

Three tools follow a consistent verb_noun pattern (create_diagram, get_diagram_info, modify_diagram), while mermaid_to_excalidraw breaks the pattern but remains clear and predictable given its conversion purpose.

Tool Count5/5

Four tools is a well-scoped number for a diagramming server, covering the essential operations (create, read, update, plus conversion) without being too few or excessive.

Completeness4/5

The tool set covers core create, read, and modify operations, with conversion support. A full delete diagram tool is missing, but modify_diagram allows node removal, so the gap is minor.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/KTCrisis/arch7'

If you have feedback or need assistance with the MCP directory API, please join our Discord server