@supernova123/docker-mcp-server 0.3.3 → 0.3.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,390 @@
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>Docker MCP Hosted — Managed Docker Infrastructure for AI Agents</title>
7
+ <meta name="description" content="Run your AI agent's Docker tools in the cloud. Hosted MCP server with health checks, auto-restart, and per-user isolation. Free tier available.">
8
+ <style>
9
+ :root {
10
+ --bg: #0a0a0f;
11
+ --surface: #12121a;
12
+ --border: #1e1e2e;
13
+ --text: #e4e4e7;
14
+ --muted: #71717a;
15
+ --accent: #3b82f6;
16
+ --accent-hover: #2563eb;
17
+ --green: #22c55e;
18
+ --orange: #f59e0b;
19
+ }
20
+ * { margin: 0; padding: 0; box-sizing: border-box; }
21
+ body {
22
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
23
+ background: var(--bg);
24
+ color: var(--text);
25
+ line-height: 1.6;
26
+ }
27
+ .container { max-width: 960px; margin: 0 auto; padding: 0 24px; }
28
+
29
+ /* Nav */
30
+ nav {
31
+ border-bottom: 1px solid var(--border);
32
+ padding: 16px 0;
33
+ }
34
+ nav .container {
35
+ display: flex;
36
+ justify-content: space-between;
37
+ align-items: center;
38
+ }
39
+ .logo { font-size: 18px; font-weight: 700; color: var(--text); text-decoration: none; }
40
+ .logo span { color: var(--accent); }
41
+ nav a { color: var(--muted); text-decoration: none; font-size: 14px; }
42
+ nav a:hover { color: var(--text); }
43
+
44
+ /* Hero */
45
+ .hero {
46
+ padding: 80px 0 60px;
47
+ text-align: center;
48
+ }
49
+ .hero h1 {
50
+ font-size: 48px;
51
+ font-weight: 800;
52
+ line-height: 1.1;
53
+ margin-bottom: 20px;
54
+ letter-spacing: -0.02em;
55
+ }
56
+ .hero h1 span { color: var(--accent); }
57
+ .hero p {
58
+ font-size: 18px;
59
+ color: var(--muted);
60
+ max-width: 600px;
61
+ margin: 0 auto 32px;
62
+ }
63
+ .hero-buttons { display: flex; gap: 12px; justify-content: center; flex-wrap: wrap; }
64
+ .btn {
65
+ display: inline-block;
66
+ padding: 12px 28px;
67
+ border-radius: 8px;
68
+ font-size: 15px;
69
+ font-weight: 600;
70
+ text-decoration: none;
71
+ transition: all 0.15s;
72
+ cursor: pointer;
73
+ border: none;
74
+ }
75
+ .btn-primary { background: var(--accent); color: white; }
76
+ .btn-primary:hover { background: var(--accent-hover); }
77
+ .btn-secondary { background: var(--surface); color: var(--text); border: 1px solid var(--border); }
78
+ .btn-secondary:hover { border-color: var(--accent); }
79
+
80
+ /* Install command */
81
+ .install {
82
+ background: var(--surface);
83
+ border: 1px solid var(--border);
84
+ border-radius: 8px;
85
+ padding: 16px 24px;
86
+ font-family: 'SF Mono', 'Fira Code', monospace;
87
+ font-size: 14px;
88
+ color: var(--green);
89
+ margin-top: 24px;
90
+ display: inline-block;
91
+ }
92
+ .install .comment { color: var(--muted); }
93
+
94
+ /* Features */
95
+ .features {
96
+ padding: 60px 0;
97
+ border-top: 1px solid var(--border);
98
+ }
99
+ .features h2 {
100
+ text-align: center;
101
+ font-size: 28px;
102
+ margin-bottom: 48px;
103
+ }
104
+ .feature-grid {
105
+ display: grid;
106
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
107
+ gap: 24px;
108
+ }
109
+ .feature-card {
110
+ background: var(--surface);
111
+ border: 1px solid var(--border);
112
+ border-radius: 12px;
113
+ padding: 24px;
114
+ }
115
+ .feature-card h3 {
116
+ font-size: 16px;
117
+ margin-bottom: 8px;
118
+ display: flex;
119
+ align-items: center;
120
+ gap: 8px;
121
+ }
122
+ .feature-card p { color: var(--muted); font-size: 14px; }
123
+ .icon { font-size: 20px; }
124
+
125
+ /* Pricing */
126
+ .pricing {
127
+ padding: 60px 0;
128
+ border-top: 1px solid var(--border);
129
+ }
130
+ .pricing h2 {
131
+ text-align: center;
132
+ font-size: 28px;
133
+ margin-bottom: 12px;
134
+ }
135
+ .pricing .subtitle {
136
+ text-align: center;
137
+ color: var(--muted);
138
+ margin-bottom: 48px;
139
+ }
140
+ .pricing-grid {
141
+ display: grid;
142
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
143
+ gap: 24px;
144
+ max-width: 700px;
145
+ margin: 0 auto;
146
+ }
147
+ .pricing-card {
148
+ background: var(--surface);
149
+ border: 1px solid var(--border);
150
+ border-radius: 12px;
151
+ padding: 32px;
152
+ }
153
+ .pricing-card.featured {
154
+ border-color: var(--accent);
155
+ position: relative;
156
+ }
157
+ .pricing-card.featured::before {
158
+ content: 'MOST POPULAR';
159
+ position: absolute;
160
+ top: -12px;
161
+ left: 50%;
162
+ transform: translateX(-50%);
163
+ background: var(--accent);
164
+ color: white;
165
+ font-size: 11px;
166
+ font-weight: 700;
167
+ padding: 4px 12px;
168
+ border-radius: 4px;
169
+ letter-spacing: 0.05em;
170
+ }
171
+ .pricing-card h3 { font-size: 20px; margin-bottom: 4px; }
172
+ .price { font-size: 36px; font-weight: 800; margin: 16px 0; }
173
+ .price span { font-size: 16px; font-weight: 400; color: var(--muted); }
174
+ .pricing-card ul { list-style: none; margin: 24px 0; }
175
+ .pricing-card li {
176
+ padding: 8px 0;
177
+ font-size: 14px;
178
+ color: var(--muted);
179
+ display: flex;
180
+ align-items: center;
181
+ gap: 8px;
182
+ }
183
+ .pricing-card li::before { content: '✓'; color: var(--green); font-weight: 700; }
184
+
185
+ /* How it works */
186
+ .how {
187
+ padding: 60px 0;
188
+ border-top: 1px solid var(--border);
189
+ }
190
+ .how h2 {
191
+ text-align: center;
192
+ font-size: 28px;
193
+ margin-bottom: 48px;
194
+ }
195
+ .steps {
196
+ display: grid;
197
+ grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
198
+ gap: 32px;
199
+ max-width: 800px;
200
+ margin: 0 auto;
201
+ }
202
+ .step { text-align: center; }
203
+ .step-num {
204
+ width: 40px;
205
+ height: 40px;
206
+ border-radius: 50%;
207
+ background: var(--accent);
208
+ color: white;
209
+ display: inline-flex;
210
+ align-items: center;
211
+ justify-content: center;
212
+ font-weight: 700;
213
+ font-size: 16px;
214
+ margin-bottom: 16px;
215
+ }
216
+ .step h3 { font-size: 16px; margin-bottom: 8px; }
217
+ .step p { color: var(--muted); font-size: 14px; }
218
+
219
+ /* FAQ */
220
+ .faq {
221
+ padding: 60px 0;
222
+ border-top: 1px solid var(--border);
223
+ }
224
+ .faq h2 {
225
+ text-align: center;
226
+ font-size: 28px;
227
+ margin-bottom: 48px;
228
+ }
229
+ .faq-item {
230
+ border-bottom: 1px solid var(--border);
231
+ padding: 20px 0;
232
+ }
233
+ .faq-item h3 { font-size: 16px; margin-bottom: 8px; }
234
+ .faq-item p { color: var(--muted); font-size: 14px; }
235
+
236
+ /* Footer */
237
+ footer {
238
+ border-top: 1px solid var(--border);
239
+ padding: 32px 0;
240
+ text-align: center;
241
+ color: var(--muted);
242
+ font-size: 13px;
243
+ }
244
+ footer a { color: var(--muted); text-decoration: none; }
245
+ footer a:hover { color: var(--text); }
246
+ </style>
247
+ </head>
248
+ <body>
249
+ <nav>
250
+ <div class="container">
251
+ <a href="/" class="logo">docker<span>mcp</span></a>
252
+ <div style="display:flex;gap:20px;">
253
+ <a href="#pricing">Pricing</a>
254
+ <a href="#how">Get Started</a>
255
+ <a href="https://github.com/friendlygeorge/docker-mcp-server">GitHub</a>
256
+ </div>
257
+ </div>
258
+ </nav>
259
+
260
+ <section class="hero">
261
+ <div class="container">
262
+ <h1>Your agent's Docker tools,<br><span>hosted in the cloud</span></h1>
263
+ <p>Stop managing MCP server deployments. Connect your AI agent to Docker via a managed endpoint — health checks, auto-restart, and per-user isolation included.</p>
264
+ <div class="hero-buttons">
265
+ <a href="#pricing" class="btn btn-primary">Start Free</a>
266
+ <a href="https://github.com/friendlygeorge/docker-mcp-server" class="btn btn-secondary">View on GitHub</a>
267
+ </div>
268
+ <div class="install">
269
+ <span class="comment"># Connect in one command:</span><br>
270
+ npx @supernova123/docker-mcp-server --hosted
271
+ </div>
272
+ </div>
273
+ </section>
274
+
275
+ <section class="features">
276
+ <div class="container">
277
+ <h2>Everything your agent needs to manage Docker</h2>
278
+ <div class="feature-grid">
279
+ <div class="feature-card">
280
+ <h3><span class="icon">🔍</span> Health Checks</h3>
281
+ <p>Continuous container health monitoring with configurable thresholds. Your agent knows when something is wrong before you do.</p>
282
+ </div>
283
+ <div class="feature-card">
284
+ <h3><span class="icon">🔄</span> Auto-Restart</h3>
285
+ <p>Crashed containers restart automatically. Set restart policies per-container and let your agent handle the rest.</p>
286
+ </div>
287
+ <div class="feature-card">
288
+ <h3><span class="icon">📊</span> Live Monitoring</h3>
289
+ <p>Real-time container stats, log streaming, and event watching. 39 tools covering the full Docker lifecycle.</p>
290
+ </div>
291
+ <div class="feature-card">
292
+ <h3><span class="icon">🏗️</span> Compose Management</h3>
293
+ <p>Deploy, monitor, and manage multi-container applications. docker-compose up, down, logs, and restart — all via MCP.</p>
294
+ </div>
295
+ <div class="feature-card">
296
+ <h3><span class="icon">🔐</span> Per-User Isolation</h3>
297
+ <p>Each user gets their own Durable Object with isolated state and rate limits. No cross-tenant data leakage.</p>
298
+ </div>
299
+ <div class="feature-card">
300
+ <h3><span class="icon">⚡</span> Zero Config</h3>
301
+ <p>No servers to manage. No Docker daemon to expose. Just connect your agent and start working.</p>
302
+ </div>
303
+ </div>
304
+ </div>
305
+ </section>
306
+
307
+ <section class="pricing" id="pricing">
308
+ <div class="container">
309
+ <h2>Simple, transparent pricing</h2>
310
+ <p class="subtitle">Start free. Upgrade when you need more.</p>
311
+ <div class="pricing-grid">
312
+ <div class="pricing-card">
313
+ <h3>Free</h3>
314
+ <div class="price">$0 <span>/month</span></div>
315
+ <ul>
316
+ <li>Read-only tools (inspect, list, logs)</li>
317
+ <li>50 requests/day</li>
318
+ <li>Community support</li>
319
+ <li>Single Docker host</li>
320
+ </ul>
321
+ <a href="#" class="btn btn-secondary" style="width:100%;text-align:center;">Get Started</a>
322
+ </div>
323
+ <div class="pricing-card featured">
324
+ <h3>Standard</h3>
325
+ <div class="price">$19 <span>/month</span></div>
326
+ <ul>
327
+ <li>All 39 Docker tools</li>
328
+ <li>500 requests/day</li>
329
+ <li>Health checks & auto-restart</li>
330
+ <li>Container exec & file transfer</li>
331
+ <li>Priority support</li>
332
+ </ul>
333
+ <a href="#" class="btn btn-primary" style="width:100%;text-align:center;">Subscribe</a>
334
+ </div>
335
+ </div>
336
+ </div>
337
+ </section>
338
+
339
+ <section class="how" id="how">
340
+ <div class="container">
341
+ <h2>Up and running in 3 steps</h2>
342
+ <div class="steps">
343
+ <div class="step">
344
+ <div class="step-num">1</div>
345
+ <h3>Connect your Docker host</h3>
346
+ <p>Install Cloudflare Tunnel on your machine. One command exposes your Docker daemon securely.</p>
347
+ </div>
348
+ <div class="step">
349
+ <div class="step-num">2</div>
350
+ <h3>Get your API key</h3>
351
+ <p>Sign up and receive a unique API key. Free tier included, upgrade anytime.</p>
352
+ </div>
353
+ <div class="step">
354
+ <div class="step-num">3</div>
355
+ <h3>Point your agent</h3>
356
+ <p>Add the hosted endpoint to your MCP client config. Your agent now has full Docker access.</p>
357
+ </div>
358
+ </div>
359
+ </div>
360
+ </section>
361
+
362
+ <section class="faq">
363
+ <div class="container">
364
+ <h2>Frequently asked questions</h2>
365
+ <div class="faq-item">
366
+ <h3>How does my agent connect to my Docker host?</h3>
367
+ <p>Through Cloudflare Tunnel. You run a lightweight tunnel on your machine that securely proxies Docker API calls. No ports exposed, no firewall changes needed.</p>
368
+ </div>
369
+ <div class="faq-item">
370
+ <h3>Is my Docker data secure?</h3>
371
+ <p>Yes. Each user gets an isolated Durable Object on Cloudflare's edge. Your Docker daemon is only accessible through your authenticated tunnel. We never see your container data.</p>
372
+ </div>
373
+ <div class="faq-item">
374
+ <h3>What MCP clients are supported?</h3>
375
+ <p>Any client that supports the MCP protocol: Claude Desktop, Cursor, Windsurf, Continue, and more. Just point it at the hosted endpoint.</p>
376
+ </div>
377
+ <div class="faq-item">
378
+ <h3>Can I self-host instead?</h3>
379
+ <p>Absolutely. The server is open source on GitHub. The hosted version is for people who want zero-ops convenience.</p>
380
+ </div>
381
+ </div>
382
+ </section>
383
+
384
+ <footer>
385
+ <div class="container">
386
+ <p>Built by <a href="https://github.com/friendlygeorge">Nova</a> · Open source under MIT · <a href="https://github.com/friendlygeorge/docker-mcp-server">GitHub</a></p>
387
+ </div>
388
+ </footer>
389
+ </body>
390
+ </html>