architecture.svg•6.79 kB
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="1000" height="800" viewBox="0 0 1000 800">
<style>
text {
font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
}
.title {
font-size: 24px;
font-weight: 700;
fill: #1a1a1a;
}
.layer-title {
font-size: 16px;
font-weight: 700;
fill: #2d3748;
}
.component {
font-size: 14px;
font-weight: 600;
fill: #2d3748;
}
.description {
font-size: 11px;
font-weight: 400;
fill: #4a5568;
}
.arrow {
fill: none;
stroke: #4a5568;
stroke-width: 2;
}
.protocol-line {
fill: none;
stroke: #805ad5;
stroke-width: 3;
stroke-dasharray: 8,4;
}
.data-flow {
fill: none;
stroke: #38a169;
stroke-width: 2.5;
}
.box {
fill: #ffffff;
stroke: #e2e8f0;
stroke-width: 1.5;
rx: 10;
ry: 10;
filter: drop-shadow(0 2px 4px rgba(0, 0, 0, 0.1));
}
.client-box {
fill: linear-gradient(135deg, #f7fafc 0%, #e2e8f0 100%);
stroke: #4a5568;
stroke-width: 2;
}
.server-box {
fill: linear-gradient(135deg, #ebf8ff 0%, #bee3f8 100%);
stroke: #3182ce;
stroke-width: 2;
}
.core-box {
fill: linear-gradient(135deg, #faf5ff 0%, #d6bcfa 100%);
stroke: #805ad5;
stroke-width: 2;
}
.service-box {
fill: linear-gradient(135deg, #fffaf0 0%, #fbd38d 100%);
stroke: #dd6b20;
stroke-width: 2;
}
.api-box {
fill: linear-gradient(135deg, #f0fff4 0%, #c6f6d5 100%);
stroke: #38a169;
stroke-width: 2;
}
.external-box {
fill: linear-gradient(135deg, #fed7d7 0%, #fc8181 100%);
stroke: #e53e3e;
stroke-width: 2;
}
</style>
<defs>
</defs>
<!-- Background layers -->
<rect x="180" y="110" width="780" height="80" fill="#f8fafc" stroke="#e2e8f0" stroke-width="1" rx="8" opacity="0.4" />
<rect x="180" y="230" width="780" height="70" fill="#f0f9ff" stroke="#bfdbfe" stroke-width="1" rx="8" opacity="0.4" />
<rect x="180" y="330" width="780" height="80" fill="#fefce8" stroke="#fde047" stroke-width="1" rx="8" opacity="0.4" />
<rect x="180" y="470" width="780" height="100" fill="#f0fdf4" stroke="#bbf7d0" stroke-width="1" rx="8" opacity="0.4" />
<rect x="180" y="590" width="780" height="100" fill="#fef2f2" stroke="#fecaca" stroke-width="1" rx="8" opacity="0.4" />
<!-- Title -->
<text x="500" y="40" text-anchor="middle" class="title">🤖 Gausium Robot MCP Server Architecture</text>
<!-- Layer Labels -->
<text x="20" y="130" class="layer-title">AI Clients Layer</text>
<text x="20" y="250" class="layer-title">MCP Protocol</text>
<text x="20" y="350" class="layer-title">Server Core</text>
<text x="20" y="490" class="layer-title">Service Layer</text>
<text x="20" y="610" class="layer-title">External API</text>
<!-- AI Clients Layer -->
<rect x="250" y="120" width="140" height="60" class="box client-box" />
<text x="320" y="145" text-anchor="middle" class="component">🎯 Claude Code</text>
<text x="320" y="165" text-anchor="middle" class="description">stdio transport</text>
<rect x="430" y="120" width="140" height="60" class="box client-box" />
<text x="500" y="145" text-anchor="middle" class="component">🖥️ Cursor</text>
<text x="500" y="165" text-anchor="middle" class="description">JSON config</text>
<rect x="610" y="120" width="140" height="60" class="box client-box" />
<text x="680" y="145" text-anchor="middle" class="component">🍒 Cherry Studio</text>
<text x="680" y="165" text-anchor="middle" class="description">Visual config</text>
<!-- MCP Protocol Layer -->
<rect x="350" y="240" width="400" height="50" class="box server-box" />
<text x="550" y="270" text-anchor="middle" class="component">🔄 MCP Protocol (stdio)</text>
<!-- Server Core Layer -->
<rect x="200" y="340" width="180" height="60" class="box core-box" />
<text x="290" y="365" text-anchor="middle" class="component">🚀 main.py</text>
<text x="290" y="385" text-anchor="middle" class="description">Tool Registration</text>
<rect x="420" y="340" width="200" height="60" class="box core-box" />
<text x="520" y="365" text-anchor="middle" class="component">🌉 GausiumMCP</text>
<text x="520" y="385" text-anchor="middle" class="description">Core MCP Bridge</text>
<rect x="660" y="340" width="180" height="60" class="box core-box" />
<text x="750" y="365" text-anchor="middle" class="component">🎯 Task Engine</text>
<text x="750" y="385" text-anchor="middle" class="description">Workflow Automation</text>
<!-- Service Layer -->
<rect x="200" y="480" width="160" height="60" class="box service-box" />
<text x="280" y="505" text-anchor="middle" class="component">🔐 Auth</text>
<text x="280" y="525" text-anchor="middle" class="description">Token Manager</text>
<rect x="400" y="480" width="160" height="60" class="box service-box" />
<text x="480" y="505" text-anchor="middle" class="component">⚙️ Config</text>
<text x="480" y="525" text-anchor="middle" class="description">URLs & Settings</text>
<rect x="600" y="480" width="160" height="60" class="box api-box" />
<text x="680" y="505" text-anchor="middle" class="component">🤖 Robots API</text>
<text x="680" y="525" text-anchor="middle" class="description">Status & Commands</text>
<rect x="800" y="480" width="160" height="60" class="box api-box" />
<text x="880" y="505" text-anchor="middle" class="component">🗺️ Maps API</text>
<text x="880" y="525" text-anchor="middle" class="description">Maps & Areas</text>
<!-- External API Layer -->
<rect x="250" y="600" width="300" height="80" class="box external-box" />
<text x="400" y="625" text-anchor="middle" class="component">🌐 M-line Robot APIs</text>
<text x="400" y="645" text-anchor="middle" class="description">OMNIE, Vacuum 40, Scrubber 50/75</text>
<text x="400" y="665" text-anchor="middle" class="description">V1 Status, Commands, Reports</text>
<rect x="600" y="600" width="300" height="80" class="box external-box" />
<text x="750" y="625" text-anchor="middle" class="component">🌐 S-line Robot APIs</text>
<text x="750" y="645" text-anchor="middle" class="description">Phantas (S), BEETLE (SW)</text>
<text x="750" y="665" text-anchor="middle" class="description">V2 Status, Site Tasks, Advanced</text>
<!-- Protocol indicator -->
<text x="550" y="255" text-anchor="middle" class="description" fill="#805ad5">📡 stdio/JSON-RPC</text>
</svg>