# TerraVision MCP server

> Generate AWS, Azure and GCP architecture diagrams with official icons from a description, a JSON graph or Terraform code.

- Listing: https://mcp.tc/i/terravision
- Connect: this is a local (stdio) server; install it on your machine (see Install). The listing link is a page, not an MCP endpoint.
- Type: local (stdio)
- Auth: no API key needed
- Category: [Design, Websites & CMS](https://mcp.tc/c/design)
- Vendor: patrickchugh
- Homepage: <https://patrickchugh.github.io/terravision/>
- Repository: <https://github.com/patrickchugh/terravision>
- Package: pypi `terravision`

## About

TerraVision draws cloud architecture diagrams in the official AWS, Azure and Google Cloud icon style, placing each resource in its VPC, subnet, zone or resource group. Diagrams can come from a plain-language description, a JSON graph or Terraform code, and Terraform can be written back from a diagram. Output includes PNG, SVG and editable draw.io files.

It runs locally over stdio through the PyPI package terravision, started with uvx. Graphviz and Git must be installed, and Terraform is needed only to draw from Terraform code. No cloud access, sign-in or API key is required. The project is open source under AGPL-3.0.

## What it can do

- Draw AWS, Azure and GCP architecture diagrams from a text description
- Generate diagrams from local or GitHub Terraform code
- Build diagrams from a JSON graph
- Export PNG, SVG and editable draw.io files
- Refine a diagram by asking for added services
- Write Terraform from a diagram

## Example prompts

- "Draw an AWS three-tier app with CloudFront, ECS Fargate behind an ALB and RDS Multi-AZ"
- "Draw the architecture my Terraform in ./infra deploys"
- "Add ElastiCache to the diagram and show how a request flows"
- "Generate Terraform from this Azure hub-and-spoke diagram"

## Install

### Claude Code

1. Run this in a terminal, in your project folder:

```bash
claude mcp add --transport stdio terravision -- uvx terravision
```

2. Start Claude Code and type `/mcp`. **terravision** should show as connected.

Add `--scope user` to make it available in every project.

### Claude Desktop

1. Open **Settings → Developer → Edit Config**. It opens `claude_desktop_config.json`. Add:

`claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "terravision": {
      "command": "uvx",
      "args": [
        "terravision"
      ]
    }
  }
}
```

2. Save the file and restart Claude Desktop.

Needs uv (Python) on your computer. The file lives in `~/Library/Application Support/Claude/` on macOS and `%APPDATA%\Claude\` on Windows.

### Cursor

[Add to Cursor](<https://cursor.com/install-mcp?name=terravision&config=eyJjb21tYW5kIjoidXZ4IiwiYXJncyI6WyJ0ZXJyYXZpc2lvbiJdfQ%3D%3D>) (opens Cursor)

Or add it by hand to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (this project):

`mcp.json`:

```json
{
  "mcpServers": {
    "terravision": {
      "command": "uvx",
      "args": [
        "terravision"
      ]
    }
  }
}
```

Needs uv (Python) on your computer.

### VS Code

[Install in VS Code](<https://vscode.dev/redirect/mcp/install?name=terravision&config=%7B%22type%22%3A%22stdio%22%2C%22command%22%3A%22uvx%22%2C%22args%22%3A%5B%22terravision%22%5D%7D>) (opens VS Code)

Or from a terminal:

```bash
code --add-mcp '{"name":"terravision","type":"stdio","command":"uvx","args":["terravision"]}'
```

Or commit it to the repo in `.vscode/mcp.json`:

`.vscode/mcp.json`:

```json
{
  "servers": {
    "terravision": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "terravision"
      ]
    }
  }
}
```

Needs uv (Python) on your computer.

### Devin Desktop

1. Add it to `~/.config/devin/mcp_config.json` (macOS and Linux) or `%APPDATA%\devin\mcp_config.json` (Windows):

`mcp_config.json`:

```json
{
  "mcpServers": {
    "terravision": {
      "command": "uvx",
      "args": [
        "terravision"
      ]
    }
  }
}
```

2. Refresh the MCP server list in Cascade.

Devin Desktop is the new name for Windsurf.

### Codex

```bash
codex mcp add terravision -- uvx terravision
```

Or edit `~/.codex/config.toml` directly:

`config.toml`:

```toml
[mcp_servers.terravision]
command = "uvx"
args = ["terravision"]
```

Needs uv (Python) on your computer.

### Gemini CLI

```bash
gemini mcp add terravision uvx terravision
```

This adds it to the current project. Add `-s user` to use it everywhere.

### Any client

Most clients that start local servers accept this shape:

```json
{
  "mcpServers": {
    "terravision": {
      "command": "uvx",
      "args": [
        "terravision"
      ]
    }
  }
}
```

Zed puts servers under `context_servers` in its settings, with the same `command`, `args` and `env` fields.

Needs uv (Python) on your computer.

## Details

- Server version: 0.52.0
- Last checked: 2026-10-04
- Listed: 2026-10-04
- Updated: 2026-10-04

---
Source: https://mcp.tc/i/terravision (mcp.tc is an independent directory, not affiliated with this server's publisher). Corrections: https://mcp.tc/report
