Drewtu commited on
Commit
8f321c6
·
verified ·
1 Parent(s): 2e325b0

Add 3 files

Browse files
Files changed (3) hide show
  1. README.md +6 -4
  2. index.html +903 -19
  3. prompts.txt +0 -0
README.md CHANGED
@@ -1,10 +1,12 @@
1
  ---
2
- title: Modelcontextprotocol Io
3
- emoji: 📚
4
- colorFrom: blue
5
  colorTo: red
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
1
  ---
2
+ title: modelcontextprotocol-io
3
+ emoji: 🐳
4
+ colorFrom: green
5
  colorTo: red
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite
10
  ---
11
 
12
+ Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
index.html CHANGED
@@ -1,19 +1,903 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>ModelContextProtocol.io (MCP)</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <style>
10
+ .gradient-bg {
11
+ background: linear-gradient(135deg, #6e48aa 0%, #9d50bb 100%);
12
+ }
13
+ .protocol-card:hover {
14
+ transform: translateY(-5px);
15
+ box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);
16
+ }
17
+ .code-block {
18
+ font-family: 'Courier New', monospace;
19
+ background-color: #2d3748;
20
+ border-radius: 0.5rem;
21
+ position: relative;
22
+ }
23
+ .copy-btn {
24
+ position: absolute;
25
+ top: 0.5rem;
26
+ right: 0.5rem;
27
+ opacity: 0;
28
+ transition: opacity 0.2s;
29
+ }
30
+ .code-block:hover .copy-btn {
31
+ opacity: 1;
32
+ }
33
+ .tab-content {
34
+ display: none;
35
+ }
36
+ .tab-content.active {
37
+ display: block;
38
+ animation: fadeIn 0.3s ease-in-out;
39
+ }
40
+ @keyframes fadeIn {
41
+ from { opacity: 0; }
42
+ to { opacity: 1; }
43
+ }
44
+ </style>
45
+ </head>
46
+ <body class="bg-gray-100 font-sans">
47
+ <!-- Header -->
48
+ <header class="gradient-bg text-white">
49
+ <div class="container mx-auto px-6 py-12">
50
+ <div class="flex justify-between items-center">
51
+ <div>
52
+ <h1 class="text-4xl font-bold">ModelContextProtocol.io</h1>
53
+ <p class="mt-2 text-xl opacity-90">High-performance context-aware protocol for AI systems</p>
54
+ </div>
55
+ <div class="hidden md:block">
56
+ <span class="px-4 py-2 bg-white bg-opacity-20 rounded-full text-sm font-semibold">v1.2.0</span>
57
+ </div>
58
+ </div>
59
+ </div>
60
+ </header>
61
+
62
+ <!-- Main Content -->
63
+ <main class="container mx-auto px-6 py-8">
64
+ <!-- MCP Core Architecture -->
65
+ <section class="mb-16">
66
+ <h2 class="text-3xl font-bold mb-6 text-gray-800 border-b pb-2">MCP Core Architecture</h2>
67
+
68
+ <div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-5 gap-6">
69
+ <!-- Function Transport -->
70
+ <div class="protocol-card bg-white rounded-xl shadow-md overflow-hidden transition-all duration-300">
71
+ <div class="p-6">
72
+ <div class="flex items-center mb-4">
73
+ <div class="bg-indigo-100 p-3 rounded-full mr-4">
74
+ <i class="fas fa-exchange-alt text-indigo-600 text-xl"></i>
75
+ </div>
76
+ <h3 class="text-xl font-semibold text-gray-800">Function Transport</h3>
77
+ </div>
78
+ <p class="text-gray-600">QUIC (UDP-based) for low-latency communication with optimized packet routing and congestion control.</p>
79
+ </div>
80
+ <div class="px-6 py-3 bg-gray-50 text-sm text-gray-500">
81
+ <span class="font-medium">Port:</span> 5840
82
+ </div>
83
+ </div>
84
+
85
+ <!-- Session -->
86
+ <div class="protocol-card bg-white rounded-xl shadow-md overflow-hidden transition-all duration-300">
87
+ <div class="p-6">
88
+ <div class="flex items-center mb-4">
89
+ <div class="bg-blue-100 p-3 rounded-full mr-4">
90
+ <i class="fas fa-user-shield text-blue-600 text-xl"></i>
91
+ </div>
92
+ <h3 class="text-xl font-semibold text-gray-800">Session</h3>
93
+ </div>
94
+ <p class="text-gray-600">JWT-based agent authentication with rotating keys and session timeouts for secure communication.</p>
95
+ </div>
96
+ <div class="px-6 py-3 bg-gray-50 text-sm text-gray-500">
97
+ <span class="font-medium">TTL:</span> 24h
98
+ </div>
99
+ </div>
100
+
101
+ <!-- Context -->
102
+ <div class="protocol-card bg-white rounded-xl shadow-md overflow-hidden transition-all duration-300">
103
+ <div class="p-6">
104
+ <div class="flex items-center mb-4">
105
+ <div class="bg-purple-100 p-3 rounded-full mr-4">
106
+ <i class="fas fa-project-diagram text-purple-600 text-xl"></i>
107
+ </div>
108
+ <h3 class="text-xl font-semibold text-gray-800">Context</h3>
109
+ </div>
110
+ <p class="text-gray-600">Protocol Buffers encoding for efficient serialization with schema evolution support.</p>
111
+ </div>
112
+ <div class="px-6 py-3 bg-gray-50 text-sm text-gray-500">
113
+ <span class="font-medium">Version:</span> proto3
114
+ </div>
115
+ </div>
116
+
117
+ <!-- Semantic -->
118
+ <div class="protocol-card bg-white rounded-xl shadow-md overflow-hidden transition-all duration-300">
119
+ <div class="p-6">
120
+ <div class="flex items-center mb-4">
121
+ <div class="bg-green-100 p-3 rounded-full mr-4">
122
+ <i class="fas fa-brain text-green-600 text-xl"></i>
123
+ </div>
124
+ <h3 class="text-xl font-semibold text-gray-800">Semantic</h3>
125
+ </div>
126
+ <p class="text-gray-600">RDF/OWL knowledge graphs for rich semantic understanding and reasoning capabilities.</p>
127
+ </div>
128
+ <div class="px-6 py-3 bg-gray-50 text-sm text-gray-500">
129
+ <span class="font-medium">Format:</span> Turtle
130
+ </div>
131
+ </div>
132
+
133
+ <!-- Action -->
134
+ <div class="protocol-card bg-white rounded-xl shadow-md overflow-hidden transition-all duration-300">
135
+ <div class="p-6">
136
+ <div class="flex items-center mb-4">
137
+ <div class="bg-red-100 p-3 rounded-full mr-4">
138
+ <i class="fas fa-bolt text-red-600 text-xl"></i>
139
+ </div>
140
+ <h3 class="text-xl font-semibold text-gray-800">Action</h3>
141
+ </div>
142
+ <p class="text-gray-600">OpenAPI-like task definitions with JSON Schema validation for consistent execution.</p>
143
+ </div>
144
+ <div class="px-6 py-3 bg-gray-50 text-sm text-gray-500">
145
+ <span class="font-medium">Spec:</span> 3.0.0
146
+ </div>
147
+ </div>
148
+ </div>
149
+ </section>
150
+
151
+ <!-- PowerShell Installation -->
152
+ <section class="mb-16">
153
+ <h2 class="text-3xl font-bold mb-6 text-gray-800 border-b pb-2">PowerShell Installation</h2>
154
+
155
+ <div class="bg-white rounded-xl shadow-md overflow-hidden">
156
+ <div class="border-b border-gray-200">
157
+ <div class="flex">
158
+ <button class="tab-btn px-6 py-3 text-sm font-medium text-gray-700 border-b-2 border-transparent hover:text-indigo-600 hover:border-indigo-300 active" data-tab="script">
159
+ Full Script
160
+ </button>
161
+ <button class="tab-btn px-6 py-3 text-sm font-medium text-gray-700 border-b-2 border-transparent hover:text-indigo-600 hover:border-indigo-300" data-tab="features">
162
+ Key Features
163
+ </button>
164
+ </div>
165
+ </div>
166
+
167
+ <div class="p-6">
168
+ <div id="script" class="tab-content active">
169
+ <div class="code-block relative rounded-lg overflow-hidden mb-4">
170
+ <pre class="p-4 text-gray-200 overflow-x-auto"><code># MCP PowerShell Installation Script
171
+ # Version 1.2.0
172
+
173
+ param (
174
+ [Parameter(Mandatory=$false)]
175
+ [string]$InstallPath = "$env:ProgramFiles\MCP"
176
+ )
177
+
178
+ # Validate system requirements
179
+ if (-not (Test-Path "HKLM:\SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full")) {
180
+ Write-Error ".NET Framework 4.8 or later required"
181
+ exit 1
182
+ }
183
+
184
+ # Create installation directory
185
+ if (-not (Test-Path $InstallPath)) {
186
+ New-Item -ItemType Directory -Path $InstallPath | Out-Null
187
+ }
188
+
189
+ # Download and extract MCP components
190
+ $ProgressPreference = 'SilentlyContinue'
191
+ Invoke-WebRequest -Uri "https://mcp.io/download/latest/windows" -OutFile "$InstallPath\mcp-core.zip"
192
+ Expand-Archive -Path "$InstallPath\mcp-core.zip" -DestinationPath $InstallPath -Force
193
+
194
+ # Register Windows service
195
+ New-Service -Name "MCP Agent" -BinaryPathName "$InstallPath\mcp-agent.exe" `
196
+ -DisplayName "MCP Context Agent" -StartupType Automatic | Out-Null
197
+
198
+ # Configure firewall rules
199
+ if (Get-Command "New-NetFirewallRule" -ErrorAction SilentlyContinue) {
200
+ New-NetFirewallRule -DisplayName "MCP QUIC" -Direction Inbound `
201
+ -LocalPort 5840 -Protocol UDP -Action Allow | Out-Null
202
+
203
+ New-NetFirewallRule -DisplayName "MCP HTTP/3" -Direction Inbound `
204
+ -LocalPort 5841 -Protocol TCP -Action Allow | Out-Null
205
+ }
206
+
207
+ # Set environment variables
208
+ [Environment]::SetEnvironmentVariable("MCP_HOME", $InstallPath, "Machine")
209
+ [Environment]::SetEnvironmentVariable("MCP_JWT_SECRET", (New-Guid).Guid, "Machine")
210
+
211
+ # Verify installation
212
+ Start-Service "MCP Agent"
213
+ if ((Get-Service "MCP Agent").Status -ne "Running") {
214
+ Write-Error "Service failed to start"
215
+ exit 1
216
+ }
217
+
218
+ Write-Host "MCP installed successfully at $InstallPath" -ForegroundColor Green</code></pre>
219
+ <button class="copy-btn bg-gray-700 hover:bg-gray-600 text-white px-3 py-1 rounded text-sm">
220
+ <i class="fas fa-copy mr-1"></i> Copy
221
+ </button>
222
+ </div>
223
+
224
+ <div class="flex flex-wrap gap-2">
225
+ <span class="px-3 py-1 bg-blue-100 text-blue-800 rounded-full text-xs font-medium">PowerShell 7+</span>
226
+ <span class="px-3 py-1 bg-green-100 text-green-800 rounded-full text-xs font-medium">Windows 10/11</span>
227
+ <span class="px-3 py-1 bg-purple-100 text-purple-800 rounded-full text-xs font-medium">Admin Privileges</span>
228
+ <span class="px-3 py-1 bg-yellow-100 text-yellow-800 rounded-full text-xs font-medium">.NET 4.8</span>
229
+ </div>
230
+ </div>
231
+
232
+ <div id="features" class="tab-content">
233
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
234
+ <div class="bg-gray-50 p-4 rounded-lg">
235
+ <div class="flex items-center mb-2">
236
+ <div class="bg-blue-500 text-white p-2 rounded-full mr-3">
237
+ <i class="fas fa-check-circle"></i>
238
+ </div>
239
+ <h3 class="font-semibold text-gray-800">System requirement validation</h3>
240
+ </div>
241
+ <p class="text-gray-600 text-sm">Checks for PowerShell version, .NET Framework, and OS compatibility before installation.</p>
242
+ </div>
243
+
244
+ <div class="bg-gray-50 p-4 rounded-lg">
245
+ <div class="flex items-center mb-2">
246
+ <div class="bg-green-500 text-white p-2 rounded-full mr-3">
247
+ <i class="fas fa-server"></i>
248
+ </div>
249
+ <h3 class="font-semibold text-gray-800">Automatic service registration</h3>
250
+ </div>
251
+ <p class="text-gray-600 text-sm">Creates and configures a Windows service for automatic startup and management.</p>
252
+ </div>
253
+
254
+ <div class="bg-gray-50 p-4 rounded-lg">
255
+ <div class="flex items-center mb-2">
256
+ <div class="bg-purple-500 text-white p-2 rounded-full mr-3">
257
+ <i class="fas fa-shield-alt"></i>
258
+ </div>
259
+ <h3 class="font-semibold text-gray-800">Firewall configuration</h3>
260
+ </div>
261
+ <p class="text-gray-600 text-sm">Sets up necessary inbound rules for QUIC (UDP 5840) and HTTP/3 (TCP 5841).</p>
262
+ </div>
263
+
264
+ <div class="bg-gray-50 p-4 rounded-lg">
265
+ <div class="flex items-center mb-2">
266
+ <div class="bg-red-500 text-white p-2 rounded-full mr-3">
267
+ <i class="fas fa-cog"></i>
268
+ </div>
269
+ <h3 class="font-semibold text-gray-800">Environment variables setup</h3>
270
+ </div>
271
+ <p class="text-gray-600 text-sm">Configures system-wide variables including installation path and JWT secret.</p>
272
+ </div>
273
+
274
+ <div class="bg-gray-50 p-4 rounded-lg">
275
+ <div class="flex items-center mb-2">
276
+ <div class="bg-yellow-500 text-white p-2 rounded-full mr-3">
277
+ <i class="fas fa-search"></i>
278
+ </div>
279
+ <h3 class="font-semibold text-gray-800">Post-install verification</h3>
280
+ </div>
281
+ <p class="text-gray-600 text-sm">Validates service startup and provides clear success/error messaging.</p>
282
+ </div>
283
+ </div>
284
+ </div>
285
+ </div>
286
+ </div>
287
+ </section>
288
+
289
+ <!-- Protocol Specifications -->
290
+ <section class="mb-16">
291
+ <h2 class="text-3xl font-bold mb-6 text-gray-800 border-b pb-2">Protocol Specifications</h2>
292
+
293
+ <div class="grid grid-cols-1 lg:grid-cols-2 gap-8">
294
+ <!-- Context Encoding -->
295
+ <div class="bg-white rounded-xl shadow-md overflow-hidden">
296
+ <div class="p-6 border-b border-gray-200">
297
+ <h3 class="text-xl font-semibold text-gray-800 flex items-center">
298
+ <i class="fas fa-code mr-2 text-indigo-600"></i>
299
+ Context Encoding (.mcproto)
300
+ </h3>
301
+ </div>
302
+ <div class="p-6">
303
+ <div class="code-block relative rounded-lg overflow-hidden">
304
+ <pre class="p-4 text-gray-200 overflow-x-auto"><code>syntax = "proto3";
305
+
306
+ message ContextFrame {
307
+ string agent_id = 1; // UUIDv4 format
308
+ bytes semantic_graph = 2; // RDF/Turtle serialized
309
+ repeated Action actions = 3;
310
+
311
+ message Action {
312
+ string name = 1;
313
+ map&lt;string, string&gt; parameters = 2;
314
+ int32 priority = 3; // 0-100 scale
315
+ }
316
+
317
+ // Timestamp in RFC 3339 format
318
+ string timestamp = 4;
319
+
320
+ // Optional digital signature
321
+ bytes signature = 5;
322
+ }</code></pre>
323
+ <button class="copy-btn bg-gray-700 hover:bg-gray-600 text-white px-3 py-1 rounded text-sm">
324
+ <i class="fas fa-copy mr-1"></i> Copy
325
+ </button>
326
+ </div>
327
+
328
+ <div class="mt-4">
329
+ <h4 class="font-medium text-gray-800 mb-2">Supported Serialization Formats</h4>
330
+ <div class="flex flex-wrap gap-2">
331
+ <span class="px-3 py-1 bg-blue-100 text-blue-800 rounded-full text-xs font-medium">Protocol Buffers</span>
332
+ <span class="px-3 py-1 bg-green-100 text-green-800 rounded-full text-xs font-medium">JSON</span>
333
+ <span class="px-3 py-1 bg-purple-100 text-purple-800 rounded-full text-xs font-medium">MessagePack</span>
334
+ <span class="px-3 py-1 bg-yellow-100 text-yellow-800 rounded-full text-xs font-medium">CBOR</span>
335
+ </div>
336
+ </div>
337
+ </div>
338
+ </div>
339
+
340
+ <!-- Network Endpoints -->
341
+ <div class="bg-white rounded-xl shadow-md overflow-hidden">
342
+ <div class="p-6 border-b border-gray-200">
343
+ <h3 class="text-xl font-semibold text-gray-800 flex items-center">
344
+ <i class="fas fa-network-wired mr-2 text-indigo-600"></i>
345
+ Network Endpoints
346
+ </h3>
347
+ </div>
348
+ <div class="p-6">
349
+ <div class="overflow-x-auto">
350
+ <table class="min-w-full divide-y divide-gray-200">
351
+ <thead class="bg-gray-50">
352
+ <tr>
353
+ <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Endpoint</th>
354
+ <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Protocol</th>
355
+ <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Port</th>
356
+ </tr>
357
+ </thead>
358
+ <tbody class="bg-white divide-y divide-gray-200">
359
+ <tr>
360
+ <td class="px-6 py-4 whitespace-nowrap text-sm font-mono text-indigo-600">mcp://agent.register</td>
361
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">QUIC</td>
362
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">5840</td>
363
+ </tr>
364
+ <tr>
365
+ <td class="px-6 py-4 whitespace-nowrap text-sm font-mono text-indigo-600">mcp://context.push</td>
366
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">HTTP/3</td>
367
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">5841</td>
368
+ </tr>
369
+ <tr>
370
+ <td class="px-6 py-4 whitespace-nowrap text-sm font-mono text-indigo-600">mcp://metrics.stream</td>
371
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">WebSocket</td>
372
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">5842</td>
373
+ </tr>
374
+ <tr>
375
+ <td class="px-6 py-4 whitespace-nowrap text-sm font-mono text-indigo-600">mcp://admin.console</td>
376
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">HTTPS</td>
377
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">5843</td>
378
+ </tr>
379
+ </tbody>
380
+ </table>
381
+ </div>
382
+
383
+ <div class="mt-6 bg-blue-50 p-4 rounded-lg">
384
+ <div class="flex">
385
+ <div class="flex-shrink-0">
386
+ <i class="fas fa-info-circle text-blue-500 mt-1"></i>
387
+ </div>
388
+ <div class="ml-3">
389
+ <h4 class="text-sm font-medium text-blue-800">Endpoint Security</h4>
390
+ <p class="text-sm text-blue-700 mt-1">
391
+ All endpoints require JWT authentication with rotating keys. QUIC connections use TLS 1.3 with 0-RTT.
392
+ </p>
393
+ </div>
394
+ </div>
395
+ </div>
396
+ </div>
397
+ </div>
398
+ </div>
399
+ </section>
400
+
401
+ <!-- 3DS Automator Script -->
402
+ <section class="mb-16">
403
+ <h2 class="text-3xl font-bold mb-6 text-gray-800 border-b pb-2">3DS Automator Script (Node.js)</h2>
404
+
405
+ <div class="bg-white rounded-xl shadow-md overflow-hidden">
406
+ <div class="p-6 border-b border-gray-200">
407
+ <div class="flex items-center justify-between">
408
+ <h3 class="text-xl font-semibold text-gray-800 flex items-center">
409
+ <i class="fab fa-node-js mr-2 text-green-600"></i>
410
+ 3DS Automator for MCP-PayPal Agent
411
+ </h3>
412
+ <div class="flex items-center">
413
+ <span class="px-2 py-1 bg-gray-100 text-gray-800 rounded-full text-xs font-medium mr-2">
414
+ Puppeteer
415
+ </span>
416
+ <span class="px-2 py-1 bg-gray-100 text-gray-800 rounded-full text-xs font-medium">
417
+ Headless Chrome
418
+ </span>
419
+ </div>
420
+ </div>
421
+ </div>
422
+
423
+ <div class="p-6">
424
+ <div class="code-block relative rounded-lg overflow-hidden mb-6">
425
+ <pre class="p-4 text-gray-200 overflow-x-auto"><code>const puppeteer = require('puppeteer');
426
+ const yargs = require('yargs');
427
+
428
+ const args = yargs
429
+ .option('amount', { type: 'number', required: true })
430
+ .option('token', { type: 'string', required: true })
431
+ .argv;
432
+
433
+ (async () => {
434
+ const browser = await puppeteer.launch({
435
+ headless: true,
436
+ args: ['--no-sandbox', '--disable-setuid-sandbox']
437
+ });
438
+ const page = await browser.newPage();
439
+
440
+ try {
441
+ // Simulate navigating to payment gateway's 3DS page
442
+ await page.goto(`https://mcp-payment-gateway/3ds?token=${args.token}&amount=${args.amount}`);
443
+
444
+ // Fill 3DS form (example selectors - adjust per your gateway)
445
+ await page.type('#cardholder-name', 'MCP Payment Agent');
446
+ await page.type('#verification-code', '123456'); // Mock OTP
447
+ await page.click('#submit-3ds');
448
+
449
+ // Wait for success/failure
450
+ await page.waitForSelector('.auth-result', { timeout: 10000 });
451
+ const result = await page.$eval('.auth-result', el => el.textContent.trim());
452
+
453
+ // Output result to PowerShell
454
+ console.log(result === 'Authentication successful' ? 'success' : 'failed');
455
+ } catch (error) {
456
+ console.error('failed');
457
+ } finally {
458
+ await browser.close();
459
+ }
460
+ })();</code></pre>
461
+ <button class="copy-btn bg-gray-700 hover:bg-gray-600 text-white px-3 py-1 rounded text-sm">
462
+ <i class="fas fa-copy mr-1"></i> Copy
463
+ </button>
464
+ </div>
465
+
466
+ <div class="grid grid-cols-1 md:grid-cols-2 gap-6">
467
+ <div>
468
+ <h4 class="font-medium text-gray-800 mb-3">Setup Instructions</h4>
469
+ <div class="bg-gray-50 p-4 rounded-lg">
470
+ <pre class="text-sm text-gray-800"><code># Install dependencies
471
+ npm install puppeteer yargs
472
+
473
+ # Run the script
474
+ node 3ds-automator.js \
475
+ --amount 99.99 \
476
+ --token "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..."</code></pre>
477
+ </div>
478
+ </div>
479
+
480
+ <div>
481
+ <h4 class="font-medium text-gray-800 mb-3">Configuration Options</h4>
482
+ <ul class="space-y-2 text-sm text-gray-700">
483
+ <li class="flex items-start">
484
+ <i class="fas fa-check-circle text-green-500 mt-1 mr-2"></i>
485
+ <span><span class="font-mono font-medium">--headless</span>: Run browser in headless mode (default: true)</span>
486
+ </li>
487
+ <li class="flex items-start">
488
+ <i class="fas fa-check-circle text-green-500 mt-1 mr-2"></i>
489
+ <span><span class="font-mono font-medium">--timeout</span>: Maximum wait time in ms (default: 10000)</span>
490
+ </li>
491
+ <li class="flex items-start">
492
+ <i class="fas fa-check-circle text-green-500 mt-1 mr-2"></i>
493
+ <span><span class="font-mono font-medium">--debug</span>: Enable verbose logging</span>
494
+ </li>
495
+ </ul>
496
+ </div>
497
+ </div>
498
+ </div>
499
+ </div>
500
+ </section>
501
+
502
+ <!-- Hugging Face Spaces Deployment -->
503
+ <section class="mb-16">
504
+ <h2 class="text-3xl font-bold mb-6 text-gray-800 border-b pb-2">Hugging Face Spaces Deployment</h2>
505
+
506
+ <div class="bg-white rounded-xl shadow-md overflow-hidden">
507
+ <div class="p-6 border-b border-gray-200">
508
+ <div class="flex items-center justify-between">
509
+ <h3 class="text-xl font-semibold text-gray-800 flex items-center">
510
+ <i class="fas fa-robot mr-2 text-purple-600"></i>
511
+ MCP-PayPal Agent Space
512
+ </h3>
513
+ <div class="flex items-center">
514
+ <span class="px-2 py-1 bg-gray-100 text-gray-800 rounded-full text-xs font-medium mr-2">
515
+ FastAPI
516
+ </span>
517
+ <span class="px-2 py-1 bg-gray-100 text-gray-800 rounded-full text-xs font-medium">
518
+ WebSocket
519
+ </span>
520
+ </div>
521
+ </div>
522
+ </div>
523
+
524
+ <div class="p-6">
525
+ <div class="grid grid-cols-1 lg:grid-cols-3 gap-6 mb-6">
526
+ <!-- Dockerfile -->
527
+ <div class="bg-gray-50 p-4 rounded-lg">
528
+ <h4 class="font-medium text-gray-800 mb-3 flex items-center">
529
+ <i class="fab fa-docker mr-2 text-blue-500"></i>
530
+ Dockerfile
531
+ </h4>
532
+ <div class="code-block relative rounded-lg overflow-hidden">
533
+ <pre class="p-4 text-gray-200 overflow-x-auto text-sm"><code>FROM python:3.9-slim
534
+
535
+ # Install PowerShell 7
536
+ RUN apt-get update && \
537
+ apt-get install -y wget apt-transport-https && \
538
+ wget -q https://packages.microsoft.com/config/debian/10/packages-microsoft-prod.deb && \
539
+ dpkg -i packages-microsoft-prod.deb && \
540
+ apt-get update && \
541
+ apt-get install -y powershell
542
+
543
+ # Install Node.js for PM2/WebSocket
544
+ RUN curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && \
545
+ apt-get install -y nodejs
546
+
547
+ # Install dependencies
548
+ RUN npm install -g pm2
549
+ RUN pip install fastapi uvicorn websockets
550
+
551
+ # Copy scripts
552
+ COPY MCP-PayPal-Agent.ps1 /app/
553
+ COPY 3ds-automator.js /app/
554
+ COPY mcp-agent.js /app/
555
+
556
+ # Expose ports
557
+ EXPOSE 8080 # WebSocket
558
+ EXPOSE 5840 # MCP QUIC
559
+
560
+ # Start services
561
+ CMD ["pm2-runtime", "start", "/app/mcp-agent.js"]</code></pre>
562
+ <button class="copy-btn bg-gray-700 hover:bg-gray-600 text-white px-3 py-1 rounded text-xs">
563
+ <i class="fas fa-copy mr-1"></i> Copy
564
+ </button>
565
+ </div>
566
+ </div>
567
+
568
+ <!-- FastAPI Webhook -->
569
+ <div class="bg-gray-50 p-4 rounded-lg">
570
+ <h4 class="font-medium text-gray-800 mb-3 flex items-center">
571
+ <i class="fas fa-bolt mr-2 text-yellow-500"></i>
572
+ FastAPI Webhook
573
+ </h4>
574
+ <div class="code-block relative rounded-lg overflow-hidden">
575
+ <pre class="p-4 text-gray-200 overflow-x-auto text-sm"><code>from fastapi import FastAPI, WebSocket
576
+ import subprocess
577
+
578
+ app = FastAPI()
579
+
580
+ @app.websocket("/ws")
581
+ async def websocket_endpoint(websocket: WebSocket):
582
+ await websocket.accept()
583
+ while True:
584
+ data = await websocket.receive_text()
585
+ # Execute PowerShell script on payment request
586
+ result = subprocess.run(
587
+ ["pwsh", "/app/MCP-PayPal-Agent.ps1", f"-OrderSource {data}"],
588
+ capture_output=True, text=True
589
+ )
590
+ await websocket.send_text(result.stdout)</code></pre>
591
+ <button class="copy-btn bg-gray-700 hover:bg-gray-600 text-white px-3 py-1 rounded text-xs">
592
+ <i class="fas fa-copy mr-1"></i> Copy
593
+ </button>
594
+ </div>
595
+ </div>
596
+
597
+ <!-- PM2 WebSocket Agent -->
598
+ <div class="bg-gray-50 p-4 rounded-lg">
599
+ <h4 class="font-medium text-gray-800 mb-3 flex items-center">
600
+ <i class="fas fa-plug mr-2 text-green-500"></i>
601
+ PM2 WebSocket Agent
602
+ </h4>
603
+ <div class="code-block relative rounded-lg overflow-hidden">
604
+ <pre class="p-4 text-gray-200 overflow-x-auto text-sm"><code>const WebSocket = require('ws');
605
+ const { exec } = require('child_process');
606
+
607
+ const wss = new WebSocket.Server({ port: 8080 });
608
+ const MCP_LOGS = new Map(); // Track payment states
609
+
610
+ wss.on('connection', (ws) => {
611
+ ws.on('message', async (message) => {
612
+ const { auth, action, payload } = JSON.parse(message);
613
+
614
+ if (auth === process.env.MCP_JWT_TOKEN) {
615
+ switch (action) {
616
+ case 'process-payment':
617
+ exec(`pwsh ./MCP-PayPal-Agent.ps1 -OrderSource "${payload.source}"`, (error, stdout) => {
618
+ MCP_LOGS.set(payload.id, stdout);
619
+ ws.send(JSON.stringify({ status: 'completed', log: stdout }));
620
+ });
621
+ break;
622
+
623
+ case 'get-status':
624
+ ws.send(JSON.stringify({ status: 'pending', log: MCP_LOGS.get(payload.id) }));
625
+ break;
626
+ }
627
+ }
628
+ });
629
+ });</code></pre>
630
+ <button class="copy-btn bg-gray-700 hover:bg-gray-600 text-white px-3 py-1 rounded text-xs">
631
+ <i class="fas fa-copy mr-1"></i> Copy
632
+ </button>
633
+ </div>
634
+ </div>
635
+ </div>
636
+
637
+ <div class="bg-purple-50 p-4 rounded-lg">
638
+ <h4 class="font-medium text-purple-800 mb-3">Deployment Steps</h4>
639
+ <ol class="space-y-3 text-sm text-purple-700">
640
+ <li class="flex items-start">
641
+ <span class="bg-purple-100 text-purple-800 rounded-full w-6 h-6 flex items-center justify-center mr-2 flex-shrink-0">1</span>
642
+ <span>Authenticate with Hugging Face CLI: <span class="font-mono bg-purple-100 px-2 py-1 rounded">huggingface-cli login</span></span>
643
+ </li>
644
+ <li class="flex items-start">
645
+ <span class="bg-purple-100 text-purple-800 rounded-full w-6 h-6 flex items-center justify-center mr-2 flex-shrink-0">2</span>
646
+ <span>Upload your space: <span class="font-mono bg-purple-100 px-2 py-1 rounded">huggingface-cli upload username/mcp-paypal-agent ./ --repo-type=space</span></span>
647
+ </li>
648
+ <li class="flex items-start">
649
+ <span class="bg-purple-100 text-purple-800 rounded-full w-6 h-6 flex items-center justify-center mr-2 flex-shrink-0">3</span>
650
+ <span>Configure environment variables in Space settings (MCP_JWT_TOKEN, etc.)</span>
651
+ </li>
652
+ <li class="flex items-start">
653
+ <span class="bg-purple-100 text-purple-800 rounded-full w-6 h-6 flex items-center justify-center mr-2 flex-shrink-0">4</span>
654
+ <span>Test WebSocket connection: <span class="font-mono bg-purple-100 px-2 py-1 rounded">websocat wss://your-hf-space.ngrok-free.app/ws</span></span>
655
+ </li>
656
+ </ol>
657
+ </div>
658
+ </div>
659
+ </div>
660
+ </section>
661
+
662
+ <!-- Key Integration Points -->
663
+ <section class="mb-16">
664
+ <h2 class="text-3xl font-bold mb-6 text-gray-800 border-b pb-2">Key Integration Points</h2>
665
+
666
+ <div class="bg-white rounded-xl shadow-md overflow-hidden">
667
+ <div class="overflow-x-auto">
668
+ <table class="min-w-full divide-y divide-gray-200">
669
+ <thead class="bg-gray-50">
670
+ <tr>
671
+ <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Component</th>
672
+ <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Purpose</th>
673
+ <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Port</th>
674
+ <th class="px-6 py-3 text-left text-xs font-medium text-gray-500 uppercase tracking-wider">Protocol</th>
675
+ </tr>
676
+ </thead>
677
+ <tbody class="bg-white divide-y divide-gray-200">
678
+ <tr>
679
+ <td class="px-6 py-4 whitespace-nowrap">
680
+ <div class="flex items-center">
681
+ <div class="flex-shrink-0 h-10 w-10 bg-blue-100 rounded-full flex items-center justify-center">
682
+ <i class="fas fa-windows text-blue-600"></i>
683
+ </div>
684
+ <div class="ml-4">
685
+ <div class="text-sm font-medium text-gray-900">PowerShell</div>
686
+ <div class="text-sm text-gray-500">7.2.0+</div>
687
+ </div>
688
+ </div>
689
+ </td>
690
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">Payment logic and order processing</td>
691
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">-</td>
692
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">CLI</td>
693
+ </tr>
694
+ <tr>
695
+ <td class="px-6 py-4 whitespace-nowrap">
696
+ <div class="flex items-center">
697
+ <div class="flex-shrink-0 h-10 w-10 bg-green-100 rounded-full flex items-center justify-center">
698
+ <i class="fab fa-chrome text-green-600"></i>
699
+ </div>
700
+ <div class="ml-4">
701
+ <div class="text-sm font-medium text-gray-900">3DS Automator</div>
702
+ <div class="text-sm text-gray-500">Puppeteer</div>
703
+ </div>
704
+ </div>
705
+ </td>
706
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">Headless authentication flows</td>
707
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">9222</td>
708
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">Chrome DevTools</td>
709
+ </tr>
710
+ <tr>
711
+ <td class="px-6 py-4 whitespace-nowrap">
712
+ <div class="flex items-center">
713
+ <div class="flex-shrink-0 h-10 w-10 bg-purple-100 rounded-full flex items-center justify-center">
714
+ <i class="fas fa-plug text-purple-600"></i>
715
+ </div>
716
+ <div class="ml-4">
717
+ <div class="text-sm font-medium text-gray-900">PM2 WebSocket</div>
718
+ <div class="text-sm text-gray-500">Node.js</div>
719
+ </div>
720
+ </div>
721
+ </td>
722
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">Real-time control interface</td>
723
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">8080</td>
724
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">WebSocket</td>
725
+ </tr>
726
+ <tr>
727
+ <td class="px-6 py-4 whitespace-nowrap">
728
+ <div class="flex items-center">
729
+ <div class="flex-shrink-0 h-10 w-10 bg-red-100 rounded-full flex items-center justify-center">
730
+ <i class="fas fa-network-wired text-red-600"></i>
731
+ </div>
732
+ <div class="ml-4">
733
+ <div class="text-sm font-medium text-gray-900">MCP Protocol</div>
734
+ <div class="text-sm text-gray-500">Agent communication</div>
735
+ </div>
736
+ </div>
737
+ </td>
738
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">Context-aware messaging</td>
739
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">5840-5841</td>
740
+ <td class="px-6 py-4 whitespace-nowrap text-sm text-gray-700">QUIC/HTTP3</td>
741
+ </tr>
742
+ </tbody>
743
+ </table>
744
+ </div>
745
+ </div>
746
+ </section>
747
+
748
+ <!-- Example Workflow -->
749
+ <section>
750
+ <h2 class="text-3xl font-bold mb-6 text-gray-800 border-b pb-2">Example Workflow</h2>
751
+
752
+ <div class="bg-white rounded-xl shadow-md overflow-hidden">
753
+ <div class="p-6">
754
+ <ol class="relative border-l border-gray-200 space-y-10">
755
+ <!-- Step 1 -->
756
+ <li class="ml-6">
757
+ <div class="absolute w-6 h-6 bg-blue-100 rounded-full -left-3 border border-white flex items-center justify-center">
758
+ <span class="text-blue-600 font-bold">1</span>
759
+ </div>
760
+ <div class="p-4 bg-blue-50 rounded-lg">
761
+ <h3 class="text-lg font-semibold text-gray-800 mb-2">User uploads order.pdf</h3>
762
+ <p class="text-gray-700">Customer uploads an invoice or order document to the Hugging Face Space interface.</p>
763
+ <div class="mt-3 bg-white p-3 rounded border border-gray-200">
764
+ <pre class="text-sm text-gray-800"><code>{
765
+ "filename": "order.pdf",
766
+ "size": "245KB",
767
+ "type": "application/pdf"
768
+ }</code></pre>
769
+ </div>
770
+ </div>
771
+ </li>
772
+
773
+ <!-- Step 2 -->
774
+ <li class="ml-6">
775
+ <div class="absolute w-6 h-6 bg-green-100 rounded-full -left-3 border border-white flex items-center justify-center">
776
+ <span class="text-green-600 font-bold">2</span>
777
+ </div>
778
+ <div class="p-4 bg-green-50 rounded-lg">
779
+ <h3 class="text-lg font-semibold text-gray-800 mb-2">WebSocket message sent</h3>
780
+ <p class="text-gray-700">Frontend initiates payment processing via WebSocket message with JWT authentication.</p>
781
+ <div class="mt-3 bg-white p-3 rounded border border-gray-200">
782
+ <pre class="text-sm text-gray-800"><code>{
783
+ "auth": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
784
+ "action": "process-payment",
785
+ "payload": {
786
+ "source": "order.pdf",
787
+ "gateway": "PayPal"
788
+ }
789
+ }</code></pre>
790
+ </div>
791
+ </div>
792
+ </li>
793
+
794
+ <!-- Step 3 -->
795
+ <li class="ml-6">
796
+ <div class="absolute w-6 h-6 bg-purple-100 rounded-full -left-3 border border-white flex items-center justify-center">
797
+ <span class="text-purple-600 font-bold">3</span>
798
+ </div>
799
+ <div class="p-4 bg-purple-50 rounded-lg">
800
+ <h3 class="text-lg font-semibold text-gray-800 mb-2">PowerScript execution</h3>
801
+ <p class="text-gray-700">PM2 triggers the MCP-PayPal-Agent.ps1 script which processes the payment through multiple steps.</p>
802
+ <div class="mt-3">
803
+ <div class="flex flex-wrap gap-2">
804
+ <span class="px-3 py-1 bg-white rounded-full text-xs font-medium border border-purple-200">1. PDF Extraction</span>
805
+ <span class="px-3 py-1 bg-white rounded-full text-xs font-medium border border-purple-200">2. Payment Initiation</span>
806
+ <span class="px-3 py-1 bg-white rounded-full text-xs font-medium border border-purple-200">3. 3DS Authentication</span>
807
+ <span class="px-3 py-1 bg-white rounded-full text-xs font-medium border border-purple-200">4. Confirmation Email</span>
808
+ </div>
809
+ </div>
810
+ </div>
811
+ </li>
812
+
813
+ <!-- Step 4 -->
814
+ <li class="ml-6">
815
+ <div class="absolute w-6 h-6 bg-yellow-100 rounded-full -left-3 border border-white flex items-center justify-center">
816
+ <span class="text-yellow-600 font-bold">4</span>
817
+ </div>
818
+ <div class="p-4 bg-yellow-50 rounded-lg">
819
+ <h3 class="text-lg font-semibold text-gray-800 mb-2">Result returned</h3>
820
+ <p class="text-gray-700">WebSocket connection receives the final status and transaction details.</p>
821
+ <div class="mt-3 bg-white p-3 rounded border border-gray-200">
822
+ <pre class="text-sm text-gray-800"><code>{
823
+ "status": "completed",
824
+ "transaction_id": "txn_GH123456789",
825
+ "amount": 99.99,
826
+ "currency": "USD",
827
+ "timestamp": "2023-07-15T14:32:10Z"
828
+ }</code></pre>
829
+ </div>
830
+ </div>
831
+ </li>
832
+ </ol>
833
+ </div>
834
+ </div>
835
+ </section>
836
+ </main>
837
+
838
+ <!-- Footer -->
839
+ <footer class="gradient-bg text-white mt-16">
840
+ <div class="container mx-auto px-6 py-8">
841
+ <div class="grid grid-cols-1 md:grid-cols-3 gap-8">
842
+ <div>
843
+ <h3 class="text-xl font-semibold mb-4">ModelContextProtocol.io</h3>
844
+ <p class="text-gray-300">High-performance context-aware protocol for building next-generation AI agent systems.</p>
845
+ </div>
846
+ <div>
847
+ <h3 class="text-xl font-semibold mb-4">Resources</h3>
848
+ <ul class="space-y-2">
849
+ <li><a href="#" class="text-gray-300 hover:text-white">Documentation</a></li>
850
+ <li><a href="#" class="text-gray-300 hover:text-white">GitHub Repository</a></li>
851
+ <li><a href="#" class="text-gray-300 hover:text-white">API Reference</a></li>
852
+ </ul>
853
+ </div>
854
+ <div>
855
+ <h3 class="text-xl font-semibold mb-4">Community</h3>
856
+ <div class="flex space-x-4">
857
+ <a href="#" class="text-gray-300 hover:text-white text-2xl"><i class="fab fa-github"></i></a>
858
+ <a href="#" class="text-gray-300 hover:text-white text-2xl"><i class="fab fa-discord"></i></a>
859
+ <a href="#" class="text-gray-300 hover:text-white text-2xl"><i class="fab fa-twitter"></i></a>
860
+ </div>
861
+ </div>
862
+ </div>
863
+ <div class="border-t border-gray-700 mt-8 pt-8 text-center text-gray-400 text-sm">
864
+ <p>© 2023 ModelContextProtocol.io. All rights reserved.</p>
865
+ </div>
866
+ </div>
867
+ </footer>
868
+
869
+ <script>
870
+ // Tab functionality
871
+ document.querySelectorAll('.tab-btn').forEach(btn => {
872
+ btn.addEventListener('click', () => {
873
+ const tabId = btn.getAttribute('data-tab');
874
+
875
+ // Remove active class from all buttons and content
876
+ document.querySelectorAll('.tab-btn').forEach(b => b.classList.remove('active'));
877
+ document.querySelectorAll('.tab-content').forEach(c => c.classList.remove('active'));
878
+
879
+ // Add active class to clicked button and corresponding content
880
+ btn.classList.add('active');
881
+ document.getElementById(tabId).classList.add('active');
882
+ });
883
+ });
884
+
885
+ // Copy button functionality
886
+ document.querySelectorAll('.copy-btn').forEach(btn => {
887
+ btn.addEventListener('click', () => {
888
+ const codeBlock = btn.closest('.code-block').querySelector('code');
889
+ const textToCopy = codeBlock.textContent;
890
+
891
+ navigator.clipboard.writeText(textToCopy).then(() => {
892
+ const originalText = btn.innerHTML;
893
+ btn.innerHTML = '<i class="fas fa-check mr-1"></i> Copied!';
894
+
895
+ setTimeout(() => {
896
+ btn.innerHTML = originalText;
897
+ }, 2000);
898
+ });
899
+ });
900
+ });
901
+ </script>
902
+ <p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;">Made with <img src="https://enzostvs-deepsite.hf.space/logo.svg" alt="DeepSite Logo" style="width: 16px; height: 16px; vertical-align: middle;display:inline-block;margin-right:3px;filter:brightness(0) invert(1);"><a href="https://enzostvs-deepsite.hf.space" style="color: #fff;text-decoration: underline;" target="_blank" >DeepSite</a> - 🧬 <a href="https://enzostvs-deepsite.hf.space?remix=Drewtu/modelcontextprotocol-io" style="color: #fff;text-decoration: underline;" target="_blank" >Remix</a></p></body>
903
+ </html>
prompts.txt ADDED
File without changes