arch7
Supports including Dynatrace as a component in architecture diagrams.
Allows generation of Excalidraw diagrams from structured node/edge definitions or Mermaid syntax.
Supports including Kong API gateway as a component in architecture diagrams.
Allows conversion of Mermaid diagram syntax into Excalidraw format.
Supports including OpenTelemetry as a component in architecture diagrams.
Supports including PostgreSQL database as a component in architecture diagrams.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@arch7create a diagram for GKE cluster with Kafka and PostgreSQL"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 |
| Structured nodes/connections → .excalidraw |
| Mermaid syntax → .excalidraw |
| Add/remove/update nodes on existing file |
| 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 toolscreate_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.
| Name | Required | Description | Default |
|---|---|---|---|
| nodes | Yes | List 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. | |
| connections | Yes | List 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_path | Yes | File path to save the .excalidraw file (e.g., "./arch.excalidraw") | |
| direction | No | Layout direction - "LR" (left-right), "TD" (top-down), "BT" (bottom-up), "RL" (right-left). Default: "LR" | LR |
| theme | No | Color theme - "default", "dark", "colorful", "professional". Default: "default". "professional" uses clean lines (no hand-drawn effect) and Helvetica font. | default |
| subgraphs | No | Optional 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
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to the .excalidraw file. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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).
| Name | Required | Description | Default |
|---|---|---|---|
| mermaid_syntax | Yes | Mermaid flowchart source code. | |
| output_path | Yes | File path to save the .excalidraw file. | |
| theme | No | Color theme - "default", "dark", "colorful", "professional". Default: "default". "professional" uses clean lines (no hand-drawn effect) and Helvetica font. | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | Path to the existing .excalidraw file. | |
| operations | Yes | Ordered 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 | |
| theme | No | Color theme for re-rendering. Default: "default" | default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
4 tool updates
v0.1.0- First observed
create_diagram - First observed
get_diagram_info - First observed
mermaid_to_excalidraw - First observed
modify_diagram
TDQS
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.
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.
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.
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
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
Create and manage Mermaid.js flowcharts and diagrams with AI agents via MCP.
Render, verify, describe, and safely edit Mermaid diagrams through MCP.
Generate cloud architecture diagrams, flowcharts, and sequence diagrams.
Generate org charts, MCD/ERD data models, and C4 architecture diagrams — pilot OrgGen AI via MCP.
Related MCP Servers
- AlicenseBqualityAmaintenanceAn MCP server that generates beautiful Excalidraw architecture diagrams with perfect auto-layout, stateful editing, and architecture-aware component styling.26148MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to create, modify, and share diagrams on a live Excalidraw canvas through MCP tools, supporting shapes, text, arrows, batch operations, and export to shareable links with images.3,0738MIT
- AlicenseAqualityDmaintenanceGenerates GCP architecture diagrams, sequence diagrams, flow charts, and class diagrams using Python diagrams DSL via MCP.31Apache 2.0
- FlicenseAqualityCmaintenanceMCP server for generating and editing architecture diagrams from natural language or code, supporting formats like Terraform, docker-compose, Kubernetes, SQL, Mermaid, and PlantUML.2-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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