File size: 4,162 Bytes
ab38bab
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?xml version="1.0" encoding="UTF-8"?>
<svg width="800px" height="400px" viewBox="0 0 800 400" version="1.1" xmlns="http://www.w3.org/2000/svg">
    <style>
        .box {
            fill: white;
            stroke: #4a6cf7;
            stroke-width: 2;
            rx: 8;
            ry: 8;
        }
        .title {
            font-family: 'Arial', sans-serif;
            font-size: 18px;
            font-weight: bold;
            text-anchor: middle;
        }
        .description {
            font-family: 'Arial', sans-serif;
            font-size: 12px;
            text-anchor: middle;
        }
        .arrow {
            stroke: #7e53f1;
            stroke-width: 2;
            fill: none;
            marker-end: url(#arrowhead);
        }
        .data-source {
            fill: #f5f5f5;
            stroke: #666666;
            stroke-width: 1;
            rx: 8;
            ry: 8;
        }
        .label {
            font-family: 'Arial', sans-serif;
            font-size: 14px;
            font-weight: bold;
        }
        .sublabel {
            font-family: 'Arial', sans-serif;
            font-size: 11px;
            fill: #666;
        }
    </style>
    
    <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="#7e53f1" />
        </marker>
    </defs>
    
    <!-- Title -->
    <text x="400" y="30" font-family="Arial" font-size="24" font-weight="bold" text-anchor="middle">Model Context Protocol Architecture</text>
    
    <!-- MCP Host: AI Application -->
    <rect x="50" y="80" width="160" height="100" class="box" fill="#E6F0FF" />
    <text x="130" y="110" class="title">MCP Host</text>
    <text x="130" y="130" class="description">AI Application</text>
    <text x="130" y="150" class="description">(Claude, ChatGPT, etc.)</text>
    
    <!-- MCP Client -->
    <rect x="320" y="80" width="160" height="100" class="box" fill="#E6ECFF" />
    <text x="400" y="110" class="title">MCP Client</text>
    <text x="400" y="130" class="description">Protocol Client</text>
    <text x="400" y="150" class="description">JSON-RPC 2.0</text>
    
    <!-- MCP Server -->
    <rect x="590" y="80" width="160" height="100" class="box" fill="#E6E6FF" />
    <text x="670" y="110" class="title">MCP Server</text>
    <text x="670" y="130" class="description">Tool/Resource Provider</text>
    <text x="670" y="150" class="description">Capability Definitions</text>
    
    <!-- Data Sources -->
    <rect x="540" y="250" width="120" height="60" class="data-source" />
    <text x="600" y="280" class="title" font-size="16">Database</text>
    
    <rect x="680" y="250" width="120" height="60" class="data-source" />
    <text x="740" y="280" class="title" font-size="16">API</text>
    
    <rect x="610" y="330" width="120" height="60" class="data-source" />
    <text x="670" y="360" class="title" font-size="16">Local Files</text>
    
    <!-- Connections -->
    <path d="M 210 130 L 320 130" class="arrow" />
    <path d="M 480 130 L 590 130" class="arrow" />
    <path d="M 670 180 L 670 230 L 600 230 L 600 250" class="arrow" />
    <path d="M 670 180 L 670 230 L 740 230 L 740 250" class="arrow" />
    <path d="M 670 180 L 670 330" class="arrow" />
    
    <!-- Connection Labels -->
    <text x="265" y="120" class="label">Request</text>
    <text x="265" y="135" class="sublabel">Query/Command</text>
    
    <text x="535" y="120" class="label">Execute</text>
    <text x="535" y="135" class="sublabel">Tools/Resources</text>
    
    <!-- Transport Types -->
    <rect x="260" y="30" width="280" height="30" rx="15" ry="15" fill="#7e53f1" opacity="0.1" stroke="#7e53f1" stroke-width="1" />
    <text x="400" y="50" font-family="Arial" font-size="14" text-anchor="middle">Transport: STDIO or Streamable HTTP</text>

    <!-- Legend -->
    <rect x="50" y="350" width="280" height="30" rx="5" ry="5" fill="white" stroke="#999" stroke-width="1" />
    <text x="190" y="370" font-family="Arial" font-size="12" text-anchor="middle">MCP follows client-server architecture with JSON-RPC 2.0</text>
</svg>