user_flow_diagram.svgโข30.9 kB
<?xml version="1.0" encoding="us-ascii" standalone="no"?><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="2083px" preserveAspectRatio="none" style="width:3493px;height:2083px;background:#FFFFFF;" version="1.1" viewBox="0 0 3493 2083" width="3493px" zoomAndPan="magnify"><defs/><g><text fill="#000000" font-family="sans-serif" font-size="14" font-weight="bold" lengthAdjust="spacing" textLength="269" x="1610.5" y="32.9951">Google Chat MCP - User Workflow</text><rect fill="none" height="20.9531" style="stroke:none;stroke-width:1.0;" width="3460" x="15" y="50.042"/><ellipse cx="123" cy="85.9951" fill="#222222" rx="10" ry="10" style="stroke:#222222;stroke-width:1.0;"/><rect fill="none" height="1038.168" style="stroke:#000000;stroke-width:1.5;" width="204" x="21" y="991.4873"/><path d="M127,991.4873 L127,1000.7842 L117,1010.7842 L21,1010.7842 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="96" x="24" y="1005.4824">Normal Usage</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="174" x="36" y="1929.7178"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="154" x="46" y="1950.8564">View operation result</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="180" x="33" y="1983.6865"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="160" x="43" y="2004.8252">Continue conversation</text><ellipse cx="123" cy="2060.6553" fill="none" rx="11" ry="11" style="stroke:#222222;stroke-width:1.0;"/><ellipse cx="123" cy="2060.6553" fill="#222222" rx="6" ry="6" style="stroke:#111111;stroke-width:1.0;"/><line style="stroke:#000000;stroke-width:1.5;" x1="15" x2="15" y1="50.042" y2="2071.6553"/><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="220" x="266" y="115.9951"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="200" x="276" y="137.1338">Create Google Cloud Project</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="278" x="237" y="169.9639"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="258" x="247" y="191.1025">Enable Google Chat API & People API</text><path d="M519,220.7842 L519,236.917 L499,240.917 L519,244.917 L519,261.0498 A0,0 0 0 0 519,261.0498 L759,261.0498 A0,0 0 0 0 759,261.0498 L759,230.7842 L749,220.7842 L519,220.7842 A0,0 0 0 0 519,220.7842 " fill="#FFFFEE" style="stroke:#999999;stroke-width:0.5;"/><path d="M749,220.7842 L749,230.7842 L759,230.7842 L749,220.7842 " fill="#FFFFEE" style="stroke:#999999;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="176" x="525" y="237.8511">Set authorized redirect URI:</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="219" x="525" y="252.9839">http://localhost:8000/auth/callback</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="246" x="253" y="223.9326"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="226" x="263" y="245.0713">Configure OAuth 2.0 credentials</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="210" x="271" y="281.0498"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="190" x="281" y="302.1885">Download credentials.json</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="282" x="235" y="335.0186"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="262" x="245" y="356.1572">Place credentials.json in project root</text><line style="stroke:#000000;stroke-width:1.5;" x1="229" x2="229" y1="50.042" y2="2071.6553"/><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="239" x="814.5" y="388.9873"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="219" x="824.5" y="410.126">Install Google Chat MCP Server</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="210" x="829" y="442.9561"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="190" x="839" y="464.0947">Create virtual environment</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="328" x="770" y="496.9248"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="308" x="780" y="518.0635">Install dependencies from requirements.txt</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="264" x="802" y="550.8936"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="244" x="812" y="572.0322">Run "python server.py -local-auth"</text><path d="M1116,594.8623 L1116,626.1279 L1096,630.1279 L1116,634.1279 L1116,665.3936 A0,0 0 0 0 1116,665.3936 L1305,665.3936 A0,0 0 0 0 1305,665.3936 L1305,604.8623 L1295,594.8623 L1116,594.8623 A0,0 0 0 0 1116,594.8623 " fill="#FFFFEE" style="stroke:#999999;stroke-width:0.5;"/><path d="M1295,594.8623 L1295,604.8623 L1305,604.8623 L1295,594.8623 " fill="#FFFFEE" style="stroke:#999999;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="142" x="1122" y="611.9292">Grants permission for:</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="63" x="1122" y="627.062">- Chat API</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="124" x="1122" y="642.1948">- People API access</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="168" x="1122" y="657.3276">- Access even when offline</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="324" x="772" y="613.1436"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="304" x="782" y="634.2822">Complete OAuth authentication in browser</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="216" x="826" y="685.3936"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="196" x="836" y="706.5322">Verify token.json is created</text><line style="stroke:#000000;stroke-width:1.5;" x1="764" x2="764" y1="50.042" y2="2071.6553"/><path d="M1585,729.3623 L1585,851.4248 L1565,855.4248 L1585,859.4248 L1585,981.4873 A0,0 0 0 0 1585,981.4873 L1852,981.4873 A0,0 0 0 0 1852,981.4873 L1852,739.3623 L1842,729.3623 L1585,729.3623 A0,0 0 0 0 1585,729.3623 " fill="#FFFFEE" style="stroke:#999999;stroke-width:0.5;"/><path d="M1842,729.3623 L1842,739.3623 L1852,739.3623 L1842,729.3623 " fill="#FFFFEE" style="stroke:#999999;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="216" x="1591" y="746.4292">For Cursor, edit /.cursor/mcp.json:</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="4" x="1591" y="761.562"> </text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="8" x="1591" y="776.6948">{</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="104" x="1599" y="791.8276">"google_chat": {</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="112" x="1607" y="806.9604">"command": "uv",</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="51" x="1607" y="822.0933">"args": [</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="80" x="1615" y="837.2261">"--directory",</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="222" x="1615" y="852.3589">"/path/to/multi-chat-mcp-server",</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="35" x="1615" y="867.4917">"run",</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="32" x="1615" y="882.6245">"-m",</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="77" x="1615" y="897.7573">"src.server",</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="94" x="1615" y="912.8901">"--token-path",</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="130" x="1615" y="928.0229">"/path/to/token.json"</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="5" x="1607" y="943.1558">]</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="8" x="1599" y="958.2886">}</text><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="8" x="1591" y="973.4214">}</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="249" x="1316" y="838.4404"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="229" x="1326" y="859.5791">Edit MCP client configuration file</text><line style="stroke:#000000;stroke-width:1.5;" x1="1310" x2="1310" y1="50.042" y2="2071.6553"/><rect fill="none" height="1038.168" style="stroke:#000000;stroke-width:1.5;" width="584" x="1863" y="991.4873"/><path d="M1969,991.4873 L1969,1000.7842 L1959,1010.7842 L1863,1010.7842 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="96" x="1866" y="1005.4824">Normal Usage</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="258" x="1888" y="1027.7842"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="238" x="1898" y="1048.9229">Open MCP client with AI Assistant</text><path d="M2179,1086.1709 L2179,1094.7373 L2159,1098.7373 L2179,1102.7373 L2179,1111.3037 A0,0 0 0 0 2179,1111.3037 L2437,1111.3037 A0,0 0 0 0 2437,1111.3037 L2437,1096.1709 L2427,1086.1709 L2179,1086.1709 A0,0 0 0 0 2179,1086.1709 " fill="#FFFFEE" style="stroke:#999999;stroke-width:0.5;"/><path d="M2427,1086.1709 L2427,1096.1709 L2437,1096.1709 L2427,1086.1709 " fill="#FFFFEE" style="stroke:#999999;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="237" x="2185" y="1103.2378">Example: "Send a message to Sales"</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="284" x="1875" y="1081.7529"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="264" x="1885" y="1102.8916">Request action involving Google Chat</text><line style="stroke:#000000;stroke-width:1.5;" x1="1857" x2="1857" y1="50.042" y2="2071.6553"/><rect fill="none" height="1038.168" style="stroke:#000000;stroke-width:1.5;" width="343" x="2457" y="991.4873"/><path d="M2563,991.4873 L2563,1000.7842 L2553,1010.7842 L2457,1010.7842 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="96" x="2460" y="1005.4824">Normal Usage</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="321" x="2467" y="1135.7217"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="301" x="2477" y="1156.8604">Parse request to identify Google Chat tool</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="306" x="2474.5" y="1189.6904"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="286" x="2484.5" y="1210.8291">Format appropriate tool call parameters</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="179" x="2538" y="1821.7803"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="159" x="2548" y="1842.9189">Process tool response</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="222" x="2516.5" y="1875.749"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="202" x="2526.5" y="1896.8877">Generate user-friendly reply</text><line style="stroke:#000000;stroke-width:1.5;" x1="2451" x2="2451" y1="50.042" y2="2071.6553"/><rect fill="none" height="1038.168" style="stroke:#000000;stroke-width:1.5;" width="314" x="2810" y="991.4873"/><path d="M2916,991.4873 L2916,1000.7842 L2906,1010.7842 L2810,1010.7842 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="96" x="2813" y="1005.4824">Normal Usage</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="290" x="2822" y="1243.6592"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="270" x="2832" y="1264.7979">Start Google Chat MCP server process</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="269" x="2832.5" y="1297.6279"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="249" x="2842.5" y="1318.7666">Send tool request via MCP protocol</text><line style="stroke:#000000;stroke-width:1.5;" x1="2804" x2="2804" y1="50.042" y2="2071.6553"/><rect fill="none" height="1038.168" style="stroke:#000000;stroke-width:1.5;" width="335" x="3134" y="991.4873"/><path d="M3240,991.4873 L3240,1000.7842 L3230,1010.7842 L3134,1010.7842 " fill="none" style="stroke:#000000;stroke-width:1.5;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="96" x="3137" y="1005.4824">Normal Usage</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="166" x="3218.5" y="1351.5967"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="146" x="3228.5" y="1372.7354">Receive tool request</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="209" x="3197" y="1405.5654"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="189" x="3207" y="1426.7041">Load authentication token</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="120" x="3241.5" y="1507.9365"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="100" x="3251.5" y="1529.0752">Refresh token</text><polygon fill="#F0F0F0" points="3261.5,1459.5342,3341.5,1459.5342,3353.5,1471.5342,3341.5,1483.5342,3261.5,1483.5342,3249.5,1471.5342,3261.5,1459.5342" style="stroke:#AAAAAA;stroke-width:0.5;"/><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="14" x="3305.5" y="1493.7446">no</text><text fill="#000000" font-family="sans-serif" font-size="11" font-weight="bold" lengthAdjust="spacing" textLength="80" x="3261.5" y="1475.3423">Token valid?</text><text fill="#000000" font-family="sans-serif" font-size="11" lengthAdjust="spacing" textLength="20" x="3353.5" y="1468.9399">yes</text><polygon fill="#F0F0F0" points="3301.5,1561.9053,3313.5,1573.9053,3301.5,1585.9053,3289.5,1573.9053,3301.5,1561.9053" style="stroke:#AAAAAA;stroke-width:0.5;"/><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="311" x="3146" y="1605.9053"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="291" x="3156" y="1627.0439">Execute appropriate tool implementation</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="203" x="3200" y="1659.874"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="183" x="3210" y="1681.0127">Make Google Chat API call</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="173" x="3215" y="1713.8428"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="153" x="3225" y="1734.9814">Process API response</text><rect fill="#F8F8F8" height="33.9688" rx="12.5" ry="12.5" style="stroke:#AAAAAA;stroke-width:0.5;" width="310" x="3146.5" y="1767.8115"/><text fill="#000000" font-family="sans-serif" font-size="12" font-weight="bold" lengthAdjust="spacing" textLength="290" x="3156.5" y="1788.9502">Return formatted response to MCP client</text><line style="stroke:#000000;stroke-width:1.5;" x1="3128" x2="3128" y1="50.042" y2="2071.6553"/><line style="stroke:#000000;stroke-width:1.5;" x1="3473" x2="3473" y1="50.042" y2="2071.6553"/><line style="stroke:#666666;stroke-width:1.0;" x1="123" x2="123" y1="1963.6865" y2="1983.6865"/><polygon fill="#666666" points="119,1973.6865,123,1983.6865,127,1973.6865,123,1977.6865" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="123" x2="123" y1="2017.6553" y2="2049.6553"/><polygon fill="#666666" points="119,2039.6553,123,2049.6553,127,2039.6553,123,2043.6553" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="376" x2="376" y1="149.9639" y2="169.9639"/><polygon fill="#666666" points="372,159.9639,376,169.9639,380,159.9639,376,163.9639" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="376" x2="376" y1="203.9326" y2="223.9326"/><polygon fill="#666666" points="372,213.9326,376,223.9326,380,213.9326,376,217.9326" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="376" x2="376" y1="257.9014" y2="281.0498"/><polygon fill="#666666" points="372,271.0498,376,281.0498,380,271.0498,376,275.0498" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="376" x2="376" y1="315.0186" y2="335.0186"/><polygon fill="#666666" points="372,325.0186,376,335.0186,380,325.0186,376,329.0186" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="934" x2="934" y1="422.9561" y2="442.9561"/><polygon fill="#666666" points="930,432.9561,934,442.9561,938,432.9561,934,436.9561" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="934" x2="934" y1="476.9248" y2="496.9248"/><polygon fill="#666666" points="930,486.9248,934,496.9248,938,486.9248,934,490.9248" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="934" x2="934" y1="530.8936" y2="550.8936"/><polygon fill="#666666" points="930,540.8936,934,550.8936,938,540.8936,934,544.8936" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="934" x2="934" y1="584.8623" y2="613.1436"/><polygon fill="#666666" points="930,603.1436,934,613.1436,938,603.1436,934,607.1436" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="934" x2="934" y1="647.1123" y2="685.3936"/><polygon fill="#666666" points="930,675.3936,934,685.3936,938,675.3936,934,679.3936" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="2017" x2="2017" y1="1061.7529" y2="1081.7529"/><polygon fill="#666666" points="2013,1071.7529,2017,1081.7529,2021,1071.7529,2017,1075.7529" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="2627.5" x2="2627.5" y1="1169.6904" y2="1189.6904"/><polygon fill="#666666" points="2623.5,1179.6904,2627.5,1189.6904,2631.5,1179.6904,2627.5,1183.6904" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="2627.5" x2="2627.5" y1="1855.749" y2="1875.749"/><polygon fill="#666666" points="2623.5,1865.749,2627.5,1875.749,2631.5,1865.749,2627.5,1869.749" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="2967" x2="2967" y1="1277.6279" y2="1297.6279"/><polygon fill="#666666" points="2963,1287.6279,2967,1297.6279,2971,1287.6279,2967,1291.6279" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="3301.5" x2="3301.5" y1="1385.5654" y2="1405.5654"/><polygon fill="#666666" points="3297.5,1395.5654,3301.5,1405.5654,3305.5,1395.5654,3301.5,1399.5654" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="3301.5" x2="3301.5" y1="1483.5342" y2="1507.9365"/><polygon fill="#666666" points="3297.5,1497.9365,3301.5,1507.9365,3305.5,1497.9365,3301.5,1501.9365" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="3353.5" x2="3371.5" y1="1471.5342" y2="1471.5342"/><polygon fill="#666666" points="3367.5,1514.9209,3371.5,1524.9209,3375.5,1514.9209,3371.5,1518.9209" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="3371.5" x2="3371.5" y1="1471.5342" y2="1573.9053"/><line style="stroke:#666666;stroke-width:1.0;" x1="3371.5" x2="3313.5" y1="1573.9053" y2="1573.9053"/><polygon fill="#666666" points="3323.5,1569.9053,3313.5,1573.9053,3323.5,1577.9053,3319.5,1573.9053" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="3301.5" x2="3301.5" y1="1541.9053" y2="1561.9053"/><polygon fill="#666666" points="3297.5,1551.9053,3301.5,1561.9053,3305.5,1551.9053,3301.5,1555.9053" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="3301.5" x2="3301.5" y1="1439.5342" y2="1459.5342"/><polygon fill="#666666" points="3297.5,1449.5342,3301.5,1459.5342,3305.5,1449.5342,3301.5,1453.5342" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="3301.5" x2="3301.5" y1="1585.9053" y2="1605.9053"/><polygon fill="#666666" points="3297.5,1595.9053,3301.5,1605.9053,3305.5,1595.9053,3301.5,1599.9053" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="3301.5" x2="3301.5" y1="1639.874" y2="1659.874"/><polygon fill="#666666" points="3297.5,1649.874,3301.5,1659.874,3305.5,1649.874,3301.5,1653.874" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="3301.5" x2="3301.5" y1="1693.8428" y2="1713.8428"/><polygon fill="#666666" points="3297.5,1703.8428,3301.5,1713.8428,3305.5,1703.8428,3301.5,1707.8428" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="3301.5" x2="3301.5" y1="1747.8115" y2="1767.8115"/><polygon fill="#666666" points="3297.5,1757.8115,3301.5,1767.8115,3305.5,1757.8115,3301.5,1761.8115" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="123" x2="123" y1="95.9951" y2="100.9951"/><line style="stroke:#666666;stroke-width:1.0;" x1="123" x2="376" y1="100.9951" y2="100.9951"/><line style="stroke:#666666;stroke-width:1.0;" x1="376" x2="376" y1="100.9951" y2="115.9951"/><polygon fill="#666666" points="372,105.9951,376,115.9951,380,105.9951,376,109.9951" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="376" x2="376" y1="368.9873" y2="373.9873"/><line style="stroke:#666666;stroke-width:1.0;" x1="376" x2="934" y1="373.9873" y2="373.9873"/><line style="stroke:#666666;stroke-width:1.0;" x1="934" x2="934" y1="373.9873" y2="388.9873"/><polygon fill="#666666" points="930,378.9873,934,388.9873,938,378.9873,934,382.9873" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="934" x2="934" y1="719.3623" y2="766.4014"/><line style="stroke:#666666;stroke-width:1.0;" x1="934" x2="1440.5" y1="766.4014" y2="766.4014"/><line style="stroke:#666666;stroke-width:1.0;" x1="1440.5" x2="1440.5" y1="766.4014" y2="838.4404"/><polygon fill="#666666" points="1436.5,828.4404,1440.5,838.4404,1444.5,828.4404,1440.5,832.4404" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="2017" x2="2017" y1="1115.7217" y2="1120.7217"/><line style="stroke:#666666;stroke-width:1.0;" x1="2017" x2="2627.5" y1="1120.7217" y2="1120.7217"/><line style="stroke:#666666;stroke-width:1.0;" x1="2627.5" x2="2627.5" y1="1120.7217" y2="1135.7217"/><polygon fill="#666666" points="2623.5,1125.7217,2627.5,1135.7217,2631.5,1125.7217,2627.5,1129.7217" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="2627.5" x2="2627.5" y1="1223.6592" y2="1228.6592"/><line style="stroke:#666666;stroke-width:1.0;" x1="2627.5" x2="2967" y1="1228.6592" y2="1228.6592"/><line style="stroke:#666666;stroke-width:1.0;" x1="2967" x2="2967" y1="1228.6592" y2="1243.6592"/><polygon fill="#666666" points="2963,1233.6592,2967,1243.6592,2971,1233.6592,2967,1237.6592" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="2967" x2="2967" y1="1331.5967" y2="1336.5967"/><line style="stroke:#666666;stroke-width:1.0;" x1="2967" x2="3301.5" y1="1336.5967" y2="1336.5967"/><line style="stroke:#666666;stroke-width:1.0;" x1="3301.5" x2="3301.5" y1="1336.5967" y2="1351.5967"/><polygon fill="#666666" points="3297.5,1341.5967,3301.5,1351.5967,3305.5,1341.5967,3301.5,1345.5967" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="3301.5" x2="3301.5" y1="1801.7803" y2="1806.7803"/><line style="stroke:#666666;stroke-width:1.0;" x1="3301.5" x2="2627.5" y1="1806.7803" y2="1806.7803"/><line style="stroke:#666666;stroke-width:1.0;" x1="2627.5" x2="2627.5" y1="1806.7803" y2="1821.7803"/><polygon fill="#666666" points="2623.5,1811.7803,2627.5,1821.7803,2631.5,1811.7803,2627.5,1815.7803" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="2627.5" x2="2627.5" y1="1909.7178" y2="1914.7178"/><line style="stroke:#666666;stroke-width:1.0;" x1="2627.5" x2="123" y1="1914.7178" y2="1914.7178"/><line style="stroke:#666666;stroke-width:1.0;" x1="123" x2="123" y1="1914.7178" y2="1929.7178"/><polygon fill="#666666" points="119,1919.7178,123,1929.7178,127,1919.7178,123,1923.7178" style="stroke:#666666;stroke-width:1.0;"/><line style="stroke:#666666;stroke-width:1.0;" x1="1440.5" x2="1440.5" y1="872.4092" y2="962.5967"/><line style="stroke:#666666;stroke-width:1.0;" x1="1440.5" x2="2017" y1="962.5967" y2="962.5967"/><line style="stroke:#666666;stroke-width:1.0;" x1="2017" x2="2017" y1="962.5967" y2="1027.7842"/><polygon fill="#666666" points="2013,1017.7842,2017,1027.7842,2021,1017.7842,2017,1021.7842" style="stroke:#666666;stroke-width:1.0;"/><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacing" textLength="41" x="101.5" y="66.75">User</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacing" textLength="190" x="401.5" y="66.75">Setup - Google Cloud</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacing" textLength="235" x="919.5" y="66.75">Setup - Local Environment</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacing" textLength="168" x="1499.5" y="66.75">Setup - MCP Client</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacing" textLength="143" x="2082.5" y="66.75">User Interaction</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacing" textLength="100" x="2577.5" y="66.75">AI Assistant</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacing" textLength="98" x="2917" y="66.75">MCP Client</text><text fill="#000000" font-family="sans-serif" font-size="18" lengthAdjust="spacing" textLength="222" x="3189.5" y="66.75">Google Chat MCP Server</text><!--SRC=[XLLPR-Cs47xNhnXeWJO1Ld7GXyNMVYXSRn84sCE8c-r3KHGCDRAveJWgITdnrjlVtXbAZfKuRUMJSyyt1x-7AwAbHPYjL8GFipaKS1lGmw_axojBcomBzyOrogiQ_ie0VbRwVkcfTUMCB7dOh4n4fa-zfqr7UlNcpHkcVAI8pwLVLVmWxhdaI_GzvyVqY2KTpTh4xR7kMtaD9ORwAZq3xZkZQdBbiPbpURqW-9_MBid5HTmoKdTao-nRbaKJ-PJ_3tvvbks4iCj2L3xoQO6nRLXihsYfBNVPUEPHHNn2XRcdBwZZ91jVE7LdyKcnflDh-0xcI0rJ-C1ICtALMROUuTEqZIluuUmSjCSINJJAXadc67NmPhcAd1e70eh5o9klM0BB6S_UuFRcUWpCNyNOZ4SZIrhP5OKuVdj-VZuIZH5Jx1q3cw4hGOncutUqSPPKENHuzYMGuxZcLcayOe1nq7GPWYVYD0_Wl1UdSE7MnfEhMOiHkdOCeRL77Rj0lqO_UOIGTMBBsdZGdXoqIsmuQ7JQO83AKys9_zbovY8NpkA32D-q3l9cozWu2CdyMRE58a5H209vGhjcwECUR25BUbf5qoLtnoCH9B8di5zvnOwWGL-R44Iq8ZzcHl5OrtGuL1QKrXX2eaxJNy0rEfuz_gAgiiRXe1AVqPjg2v7kqVL01m6ViIc760jsCsiwS2zAqw6f4mLqtqfTCfMn-2oDInwJMUi3-TU0elptw4odywZMJV8hIV5RrWP0lanb-qDpZlcu9p9PKrqhLp8fRzVvwprP-MLWsc_zcIb5qVKd-UsZ69D7ZUA6Z3Jgx1TYl-08YgvkGr7Vkk6ng8UduFNPiKfH91WBSVAYrmFAUS_zFVr-o-JpM9Hk2S2rY-YL5ant6IzLtY42R_wHVCqTUnlK4lE4pVWJj-cm81l3FJQzXYdt37Uoz3HBtN3lOk0vrdtJhSckZLiEXqG43wKRmyM3aiPbm1SIduAQEueTSyV0GbaCULUttT3RJhpDbG-OvaLyihX90ytDDfp9I6HJS9UI5SVMy9GttiXi2WzaUq2wKdXwV9ZqxeRzoDeBsPT7mzwLIFQ6p45oax98XlUHhOrAmYmLINVHY8UNDyUk0rAZMUCJEydwUzbfpsOx5LsufeAJN-G0QsLD-TCfY1oSR36SCXijmtNYw3Ir1FkeF8RLGPq3DvKukNX0tJ8yHr0PgPHifkGu1VH1tHzV109fuiuxO1AHdJNa0lQT4bkVTWtN9APztt6bZeS-c_nhxNl3FK03orVekAavufQBKrIUpPHsopADtUxDTLSW2tysk05gi5yiRAYr7T1yUKNZMfJLmrK9VSPyquP8JVOF]--></g></svg>