VisioMCP
Parses Ansible inventory files to generate infrastructure diagrams
Auto-downloads and uses Cisco stencils for network diagrams
Auto-downloads and uses Dell stencils for physical server diagrams
Auto-downloads and uses NetApp stencils for storage diagrams
Auto-downloads and uses Red Hat stencils for OpenShift or Red Hat infrastructure diagrams
Parses Terraform state files to generate cloud architecture diagrams
Auto-downloads and uses VMware stencils for virtualization diagrams
Click on "Deploy 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., "@VisioMCPCreate an HLD diagram for a web app with 3 servers and a database."
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.
VisioMCP — Enterprise Microsoft Visio MCP Server
Connect Claude directly to Microsoft Visio. Describe your infrastructure in plain English (or paste JSON/YAML/RVTools/Terraform exports) and get professional enterprise architecture diagrams — HLD, LLD, Network, DR, Backup, Cloud, and more — as VSDX + PDF + PNG + Word doc + BOM, all from a conversation.
What It Does
Capability | Detail |
10 diagram types | HLD, LLD, Network, DR, Backup, Virtualization, Cloud, Physical, OpenShift, App Dependency |
8 input parsers | JSON/YAML, natural language, RVTools XLS, Terraform tfstate, AWS/Azure/GCP exports, Redfish BMC, Ansible inventory |
Vendor stencils | Auto-downloads VMware, Cisco, NetApp, HPE, Dell, Azure, AWS, GCP, Red Hat stencils |
Export formats | VSDX, PDF, PNG, SVG, JPEG, EMF + Word HLD document + Excel BOM |
35 MCP tools | Full control of Visio from Claude: create, edit, export, document |
Dual transport | stdio (Claude Desktop / Claude Code) + SSE/HTTP (local reverse proxy) |
Windows service | Run as a background service via pywin32 |
Related MCP server: Office MCP Server
Prerequisites
Requirement | Version |
Windows | 10 / 11 / Server 2019+ |
Microsoft Visio | 2016 / 2019 / 2021 / 365 (any edition) |
Python | 3.11+ |
Claude Desktop or Claude Code | Latest |
Installation
# 1. Clone the repo
git clone https://github.com/omerbelsayed/visio-mcp.git
cd visio-mcp
# 2. Install (includes all dependencies)
pip install -e ".[dev]"
# 3. Run the setup wizard — verifies Visio is accessible and prints the Claude Desktop config
python -m visio_mcp setupThe setup wizard will:
Confirm Python 3.11+
Check Microsoft Visio is installed and launchable
Tell you if your API key is configured
Print the exact snippet to paste into
claude_desktop_config.json
Claude Desktop Configuration
Open your Claude Desktop config file:
Windows:
%APPDATA%\Claude\claude_desktop_config.json
Add the following under "mcpServers":
{
"mcpServers": {
"visiomcp": {
"command": "python",
"args": ["-m", "visio_mcp", "run", "--transport", "stdio"],
"env": {
"VISIOMCP_API_KEY": "your-secret-key-here"
}
}
}
}Restart Claude Desktop. You should see VisioMCP appear in the tools panel.
Generating the API key
Generate a random secret key using either of these commands:
PowerShell (no extra tools needed):
[System.Convert]::ToBase64String([System.Security.Cryptography.RandomNumberGenerator]::GetBytes(32))Python:
python -c "import secrets; print(secrets.token_urlsafe(32))"Either command prints a random string like k9Xv2mQpL8nRtY4wZjBcD1eAoHfIgNsU7CuWx0yVE3M=. Copy that output and use it as your key in both places below.
Setting the API key
Set it as an environment variable (never commit it to git):
# Permanent (user environment) — survives reboots
[System.Environment]::SetEnvironmentVariable("VISIOMCP_API_KEY", "paste-your-key-here", "User")
# Or for the current PowerShell session only
$env:VISIOMCP_API_KEY = "paste-your-key-here"Then use the same key in claude_desktop_config.json:
"env": {
"VISIOMCP_API_KEY": "paste-your-key-here"
}Leave api_key: "CHANGE_ME" in config.yaml as-is — the server reads from the environment variable and ignores the placeholder.
Usage Guide
1. Describe your infrastructure in plain English
Just tell Claude what you have:
I have 3 ESXi hosts running 20 VMs. The VMs run SQL Server, IIS, and Apache.
Storage is a NetApp AFF A400 with 100TB. Network is Cisco Nexus 9000.
Create an HLD diagram.Claude will parse your description, infer relationships, and generate a Visio diagram.
2. Paste a JSON/YAML inventory
virtual_machines:
- hostname: web-01
vcpu: 8
ram_gb: 32
hypervisor: vmware
applications: [nginx, node]
- hostname: db-01
vcpu: 16
ram_gb: 64
hypervisor: vmware
applications: [postgresql]
physical_servers:
- hostname: esxi-01
vendor: dell
model: PowerEdge R750
role: hypervisorThen ask: "Create an LLD diagram from this inventory."
3. Upload an RVTools export
Tell Claude: "Parse this RVTools export and create a virtualization diagram." Then provide the .xlsx file path.
4. Use a Terraform state file
Parse my terraform.tfstate and show me a cloud architecture diagram.5. Generate a full deliverable package
Generate a full package for the current diagram — VSDX, PDF, PNG, Word doc, and BOM.This runs generate_full_package and produces all five files in one call.
Available MCP Tools
Document tools (9)
connect_visio, disconnect_visio, create_document, open_document, save_document, list_pages, add_page, select_page, undo
Stencil tools (4)
download_stencil, get_stencil, list_stencils, ensure_top_vendor_stencils
Parser tools (5)
parse_inventory (JSON/YAML/NL), parse_rvtools, parse_terraform_state, parse_ansible_inventory, get_inventory_summary
Generator tools (11)
create_hld, create_lld, create_network_diagram, create_dr_diagram, create_backup_diagram, create_virtualization_diagram, create_cloud_diagram, create_physical_diagram, create_openshift_diagram, create_app_dependency_diagram, generate_all_diagrams
Shape tools (6)
add_shape, connect_shapes, update_shape, delete_shape, find_shape, auto_layout
Export tools (3)
export_diagram, export_all_formats, generate_full_package
Document generation tools (3)
generate_hld_document, generate_bom, generate_stencil_report
Example Conversation
You: I have a 3-tier web application:
- 2 NGINX load balancers (VM, 4 vCPU, 8GB)
- 4 Apache web servers (VM, 8 vCPU, 16GB)
- 2 PostgreSQL databases (VM, 16 vCPU, 64GB, replicated)
All on VMware vSphere 8.0, shared storage on Pure Storage FlashArray.
Create an HLD and then export as PDF and PNG.
Claude: [calls parse_inventory → create_hld → export_all_formats]
Created HLD with 3 swimlanes (Network / Virtualization / Application).
Exported: diagram.pdf, diagram.png
Shapes placed: 12 | Connectors: 9
Stencils used: vmware.vsphere, purestorage.flasharrayRunning as a Windows Service
# Install the service (run as Administrator)
python -m visio_mcp.service install
# Start
python -m visio_mcp.service start
# Stop
python -m visio_mcp.service stop
# Remove
python -m visio_mcp.service removeThe service runs the SSE transport on http://127.0.0.1:8000. For remote access, put nginx or Caddy in front with HTTPS and authentication.
Running Tests
pytest tests/unit/ -v
# Expected: 169 passedTests run without Visio using MockVisioEngine. No COM automation required for CI.
Configuration Reference
config.yaml — safe to commit, no secrets:
server:
transports: [stdio, sse]
sse_port: 8000
api_key: "CHANGE_ME" # override via VISIOMCP_API_KEY env var
production_mode: false # set true to reject CHANGE_ME key
stencils:
base_path: "" # defaults to stencils/ in project root
max_age_days: 30
max_concurrent_downloads: 5
fallback_to_generic: true
visio:
auto_launch: true
default_template: "blank"
units: "inches"
reconnect_attempts: 3
logging:
level: "INFO"
file: "logs/visiomcp.log"
max_bytes: 10485760 # 10 MB
backup_count: 5Architecture
Claude (stdio/SSE)
│
▼
FastMCP Server (server.py) ←── 35 MCP tools (visio_mcp/tools/)
│
├── Parsers (visio_mcp/parsers/)
│ JSON/YAML · NL · RVTools · Terraform · Cloud · Redfish · Ansible
│
├── Generators (visio_mcp/generators/)
│ HLD · LLD · Network · DR · Backup · Virtualization
│ Cloud · Physical · OpenShift · AppDependency
│
├── Stencil Manager (visio_mcp/stencils/)
│ Auto-download · Cache · Registry · Vendor normalization
│
├── Export Engine (visio_mcp/exporters/)
│ VSDX · PDF · PNG · SVG · JPEG · EMF
│
├── Doc Generator (visio_mcp/docs_gen/)
│ Word HLD document · Excel BOM
│
└── Visio COM Gateway (visio_mcp/engines/visio_engine.py)
Single ThreadPoolExecutor · CoInitialize · COM automation
↕ (test stub: MockVisioEngine)
Microsoft Visio (COM)Security notes:
win32comis imported in exactly one file:visio_mcp/engines/visio_engine.pyAPI key is read from
VISIOMCP_API_KEYenvironment variable onlySSE transport binds to
127.0.0.1(localhost only)File-reading tools validate and resolve paths before opening
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Generate cloud architecture diagrams, flowcharts, and sequence diagrams.
Connect Claude to Fathom meeting recordings, transcripts, and summaries
Any REST/SOAP/GraphQL/OData/SQL API as MCP tools for Claude & ChatGPT. 338 connectors: SAP, ERP.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables visual drag-and-drop editing of Mermaid diagrams through Claude, allowing iterative refinement of software architecture designs.6MIT
- AlicenseNot gradedqualityBmaintenanceConnects Claude with Microsoft 365 services such as Email, Calendar, Teams, OneDrive, and more through the Microsoft Graph API.53 npm17MIT
- AlicenseNot gradedqualityDmaintenanceConnects Claude with Microsoft 365 services including Outlook, OneDrive, and Power Automate, enabling email, calendar, files, and flow management through natural language.38 npm442MIT
- AlicenseAqualityCmaintenanceGenerates draw.io diagrams and architecture designs from natural language prompts using DrawX API, integrating with Claude, Cursor, and VS Code.333 npmMIT