digraph MCP_Architecture {
rankdir=TB;
splines=polyline;
nodesep=0.6;
ranksep=0.8;
node [shape=box, style="rounded,filled", fontname="Helvetica", fontsize=11, margin="0.25,0.15"];
edge [fontname="Helvetica", fontsize=9, penwidth=1.5];
bgcolor="white";
// Layer 1: Client
claude [label="Claude Code\n(AI Client)", fillcolor="#FFF8E1", color="#FF8F00", penwidth=2];
// Layer 2: Bridge
bridge [label="MCP Bridge\n(Node.js)", fillcolor="#E3F2FD", color="#1976D2", penwidth=2];
// Layer 3: Unity Servers
subgraph cluster_servers {
label="Unity Editor";
labeljust=l;
style=filled;
fillcolor="#FAFAFA";
color="#9E9E9E";
penwidth=2;
margin=16;
http [label="HTTP Server\nport 5051", fillcolor="#C8E6C9", color="#388E3C"];
ws [label="WebSocket\nport 5050", fillcolor="#C8E6C9", color="#388E3C"];
}
// Layer 4: Router
router [label="API Router", fillcolor="#FFE0B2", color="#FF9800", penwidth=2];
// Layer 5: Core components
subgraph {
rank=same;
registry [label="ApiRegistry\n770+ APIs", fillcolor="#BBDEFB", color="#1976D2"];
controllers [label="Controllers\n50+ classes", fillcolor="#E1BEE7", color="#7B1FA2"];
}
// Layer 6: Unity API
unity [label="Unity Editor API", fillcolor="#FFCDD2", color="#D32F2F", penwidth=2];
// Connections
claude -> bridge [label=" stdio ", color="#FF8F00"];
bridge -> http [label=" HTTP ", color="#1976D2"];
http -> router [color="#388E3C"];
ws -> router [color="#388E3C", style=dashed];
router -> registry [label=" tools/list ", color="#1976D2"];
router -> controllers [label=" tools/call ", color="#7B1FA2"];
controllers -> unity [color="#D32F2F"];
}