mcp-integration.svg•14.9 kB
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 900">
<!-- Background - pure white -->
<rect width="1200" height="900" fill="#ffffff" />
<!-- Title -->
<text x="600" y="50" text-anchor="middle" font-family="Arial, sans-serif" font-size="32" font-weight="bold" fill="#333">CCXT MCP Server - Integration Architecture</text>
<!-- Main components -->
<g transform="translate(30, 80)">
<!-- LLM clients box -->
<g transform="translate(40, 40)">
<rect x="0" y="0" width="240" height="140" rx="8" ry="8" fill="#339af0" stroke="#1c7ed6" stroke-width="2" opacity="0.9" />
<text x="120" y="45" text-anchor="middle" font-family="Arial, sans-serif" font-size="22" font-weight="bold" fill="#fff">LLM Clients</text>
<text x="120" y="85" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" fill="#fff">Claude</text>
<text x="120" y="115" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" fill="#fff">Other MCP-compatible LLMs</text>
</g>
<!-- MCP Protocol -->
<g transform="translate(440, 75)">
<rect x="0" y="0" width="320" height="70" rx="35" ry="35" fill="#e64980" stroke="#c2255c" stroke-width="2" opacity="0.9" />
<text x="160" y="42" text-anchor="middle" font-family="Arial, sans-serif" font-size="20" font-weight="bold" fill="#fff">Model Context Protocol (MCP)</text>
</g>
<!-- MCP Server box -->
<g transform="translate(440, 200)">
<rect x="0" y="0" width="350" height="520" rx="8" ry="8" fill="#12b886" stroke="#0ca678" stroke-width="2" opacity="0.9" />
<text x="175" y="35" text-anchor="middle" font-family="Arial, sans-serif" font-size="24" font-weight="bold" fill="#fff">CCXT MCP Server</text>
<!-- Server components -->
<rect x="40" y="60" width="270" height="60" rx="5" ry="5" fill="#fff" stroke="#0ca678" stroke-width="1" />
<text x="175" y="90" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#495057">MCP Server Core</text>
<text x="175" y="110" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">@modelcontextprotocol/sdk</text>
<!-- Public API Tools -->
<rect x="40" y="130" width="270" height="110" rx="5" ry="5" fill="#fff" stroke="#0ca678" stroke-width="1" />
<text x="175" y="150" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#495057">Public API Tools</text>
<text x="175" y="175" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">get-ticker, get-orderbook</text>
<text x="175" y="195" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">batch-get-tickers, get-ohlcv</text>
<text x="175" y="215" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">get-markets, get-exchange-info</text>
<!-- Private API Tools -->
<rect x="40" y="250" width="270" height="110" rx="5" ry="5" fill="#fff" stroke="#0ca678" stroke-width="1" />
<text x="175" y="270" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#495057">Private API Tools</text>
<text x="175" y="295" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">account-balance, place-market-order</text>
<text x="175" y="315" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">set-leverage, set-margin-mode</text>
<text x="175" y="335" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">place-futures-market-order</text>
<!-- Config Tools -->
<rect x="40" y="370" width="270" height="80" rx="5" ry="5" fill="#ffebf3" stroke="#c2255c" stroke-width="2" />
<text x="175" y="395" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#c2255c">Configuration Tools</text>
<text x="175" y="420" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#c2255c">get-proxy-config, set-proxy-config</text>
<text x="175" y="440" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#c2255c">test-proxy-connection, set-market-type</text>
<!-- Utilities -->
<rect x="40" y="460" width="270" height="50" rx="5" ry="5" fill="#fff" stroke="#0ca678" stroke-width="1" />
<text x="175" y="490" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#495057">Utilities</text>
</g>
<!-- Crypto Exchanges box -->
<g transform="translate(870, 200)">
<rect x="0" y="0" width="250" height="520" rx="8" ry="8" fill="#ff922b" stroke="#f76707" stroke-width="2" opacity="0.9" />
<text x="125" y="35" text-anchor="middle" font-family="Arial, sans-serif" font-size="22" font-weight="bold" fill="#fff">Crypto Exchanges</text>
<!-- Exchange logos/names -->
<g transform="translate(40, 70)">
<rect x="0" y="0" width="170" height="30" rx="5" ry="5" fill="#fff" stroke="#f76707" stroke-width="1" />
<text x="85" y="20" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">Binance</text>
<rect x="0" y="40" width="170" height="30" rx="5" ry="5" fill="#fff" stroke="#f76707" stroke-width="1" />
<text x="85" y="60" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">Coinbase</text>
<rect x="0" y="80" width="170" height="30" rx="5" ry="5" fill="#fff" stroke="#f76707" stroke-width="1" />
<text x="85" y="100" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">Kraken</text>
<rect x="0" y="120" width="170" height="30" rx="5" ry="5" fill="#fff" stroke="#f76707" stroke-width="1" />
<text x="85" y="140" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">KuCoin</text>
<rect x="0" y="160" width="170" height="30" rx="5" ry="5" fill="#fff" stroke="#f76707" stroke-width="1" />
<text x="85" y="180" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">OKX</text>
<rect x="0" y="200" width="170" height="30" rx="5" ry="5" fill="#fff" stroke="#f76707" stroke-width="1" />
<text x="85" y="220" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">Gate.io</text>
<rect x="0" y="240" width="170" height="30" rx="5" ry="5" fill="#fff" stroke="#f76707" stroke-width="1" />
<text x="85" y="260" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">Bybit</text>
<rect x="0" y="280" width="170" height="30" rx="5" ry="5" fill="#fff" stroke="#f76707" stroke-width="1" />
<text x="85" y="300" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">MEXC</text>
<rect x="0" y="320" width="170" height="30" rx="5" ry="5" fill="#fff" stroke="#f76707" stroke-width="1" />
<text x="85" y="340" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">HTX (Huobi)</text>
<rect x="0" y="360" width="170" height="30" rx="5" ry="5" fill="#fff" stroke="#f76707" stroke-width="1" />
<text x="85" y="380" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">Binance USDⓈ-M</text>
<rect x="0" y="400" width="170" height="30" rx="5" ry="5" fill="#fff" stroke="#f76707" stroke-width="1" />
<text x="85" y="420" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">and many more...</text>
</g>
</g>
<!-- CCXT Library box -->
<g transform="translate(40, 250)">
<rect x="0" y="0" width="230" height="325" rx="8" ry="8" fill="#862e9c" stroke="#6741d9" stroke-width="2" opacity="0.9" />
<text x="115" y="35" text-anchor="middle" font-family="Arial, sans-serif" font-size="22" font-weight="bold" fill="#fff">CCXT Library</text>
<text x="115" y="65" text-anchor="middle" font-family="Arial, sans-serif" font-size="16" fill="#fff">Unified Crypto API</text>
<!-- CCXT Features -->
<rect x="30" y="85" width="170" height="35" rx="5" ry="5" fill="#fff" stroke="#6741d9" stroke-width="1" />
<text x="115" y="107" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">Exchange Abstraction</text>
<rect x="30" y="130" width="170" height="35" rx="5" ry="5" fill="#fff" stroke="#6741d9" stroke-width="1" />
<text x="115" y="152" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">Market Data</text>
<rect x="30" y="175" width="170" height="35" rx="5" ry="5" fill="#fff" stroke="#6741d9" stroke-width="1" />
<text x="115" y="197" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">Trading API</text>
<rect x="30" y="220" width="170" height="35" rx="5" ry="5" fill="#fff" stroke="#6741d9" stroke-width="1" />
<text x="115" y="242" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#495057">Order Management</text>
<!-- Proxy Support -->
<rect x="30" y="265" width="170" height="45" rx="5" ry="5" fill="#ffebf3" stroke="#c2255c" stroke-width="2" />
<text x="115" y="287" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" font-weight="bold" fill="#c2255c">Proxy Support</text>
<text x="115" y="305" text-anchor="middle" font-family="Arial, sans-serif" font-size="12" fill="#c2255c">username:password@host</text>
</g>
<!-- PROXY Configuration Highlight -->
<g transform="translate(40, 590)">
<rect x="0" y="0" width="350" height="110" rx="8" ry="8" fill="#fff0f6" stroke="#c2255c" stroke-width="2" opacity="0.9" />
<text x="175" y="30" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#c2255c">Enhanced Proxy Configuration</text>
<text x="175" y="55" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#c2255c">• Integrated URL format with credentials</text>
<text x="175" y="75" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#c2255c">• http://username:password@server:port</text>
<text x="175" y="95" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#c2255c">• Backward compatibility maintained</text>
</g>
<!-- Market Types Highlight -->
<g transform="translate(440, 730)">
<rect x="0" y="0" width="350" height="90" rx="8" ry="8" fill="#e9faf5" stroke="#0ca678" stroke-width="2" opacity="0.9" />
<text x="175" y="30" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#0ca678">Expanded Market Type Support</text>
<text x="175" y="55" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#0ca678">• spot, future, swap, option, margin</text>
<text x="175" y="75" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#0ca678">• Default market type configuration</text>
</g>
<!-- Exchange Support -->
<g transform="translate(790, 730)">
<rect x="0" y="0" width="350" height="90" rx="8" ry="8" fill="#fff4e6" stroke="#f76707" stroke-width="2" opacity="0.9" />
<text x="175" y="30" text-anchor="middle" font-family="Arial, sans-serif" font-size="18" font-weight="bold" fill="#f76707">Expanded Exchange Support</text>
<text x="175" y="55" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#f76707">• 20+ mainstream cryptocurrency exchanges</text>
<text x="175" y="75" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#f76707">• Support for exchange derivatives markets</text>
</g>
<!-- Arrows with labels -->
<!-- LLM to MCP -->
<line x1="280" y1="110" x2="440" y2="110" stroke="#666666" stroke-width="3" marker-end="url(#arrowhead)" />
<text x="360" y="95" text-anchor="middle" font-family="Arial, sans-serif" font-size="16" fill="#333">Request</text>
<!-- MCP to Server -->
<line x1="600" y1="145" x2="600" y2="190" stroke="#666666" stroke-width="3" marker-end="url(#arrowhead)" />
<text x="635" y="170" text-anchor="start" font-family="Arial, sans-serif" font-size="16" fill="#333">Protocol API</text>
<!-- Server to Exchanges -->
<line x1="790" y1="450" x2="870" y2="450" stroke="#666666" stroke-width="3" marker-end="url(#arrowhead)" />
<text x="830" y="430" text-anchor="middle" font-family="Arial, sans-serif" font-size="16" fill="#333">API Calls</text>
<!-- CCXT to Server -->
<line x1="270" y1="350" x2="440" y2="350" stroke="#666666" stroke-width="3" marker-end="url(#arrowhead)" />
<text x="355" y="330" text-anchor="middle" font-family="Arial, sans-serif" font-size="16" fill="#333">Integration</text>
<!-- Response arrows -->
<line x1="870" y1="390" x2="790" y2="390" stroke="#666666" stroke-width="3" stroke-dasharray="10,5" marker-end="url(#arrowhead)" />
<text x="830" y="370" text-anchor="middle" font-family="Arial, sans-serif" font-size="16" fill="#333">Responses</text>
<line x1="440" y1="310" x2="270" y2="310" stroke="#666666" stroke-width="3" stroke-dasharray="10,5" marker-end="url(#arrowhead)" />
<text x="355" y="290" text-anchor="middle" font-family="Arial, sans-serif" font-size="16" fill="#333">Data Flow</text>
<!-- Proxy connection -->
<path d="M 270 287 C 340 287, 355 410, 440 410" stroke="#c2255c" stroke-width="3" stroke-dasharray="5,3" marker-end="url(#proxyarrow)" fill="none"/>
<text x="335" y="365" text-anchor="middle" font-family="Arial, sans-serif" font-size="14" fill="#c2255c">Proxy Configuration</text>
<!-- Flow explanation -->
<g transform="translate(40, 830)">
<rect x="0" y="0" width="1080" height="50" rx="8" ry="8" fill="#f8f9fa" stroke="#ced4da" stroke-width="2" />
<text x="540" y="30" text-anchor="middle" font-family="Arial, sans-serif" font-size="16" fill="#495057">Enhanced proxy configuration with integrated URL format support</text>
</g>
</g>
<!-- Arrowhead marker definition -->
<defs>
<marker id="arrowhead" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#666666" />
</marker>
<marker id="proxyarrow" markerWidth="10" markerHeight="7" refX="9" refY="3.5" orient="auto">
<polygon points="0 0, 10 3.5, 0 7" fill="#c2255c" />
</marker>
</defs>
</svg>