diff --git a/src/index.ts b/src/index.ts index d06fe9d..3a63374 100644 --- a/src/index.ts +++ b/src/index.ts @@ -167,6 +167,12 @@ app.get("/mcp-logo.png", (req, res) => { res.sendFile(logoPath); }); +app.get("/styles.css", (req, res) => { + const cssPath = path.join(__dirname, "static", "styles.css"); + res.setHeader('Content-Type', 'text/css'); + res.sendFile(cssPath); +}); + // Splash page app.get("/", (req, res) => { const splashPath = path.join(__dirname, "static", "index.html"); diff --git a/src/static/index.html b/src/static/index.html index acbfd37..2e3eeb9 100644 --- a/src/static/index.html +++ b/src/static/index.html @@ -3,197 +3,14 @@ - MCP Everything Server - + MCP Example Server +
-

MCP Everything Server

+

MCP Example Server

@@ -264,7 +81,7 @@

API Endpoints

MCP Documentation - + Protocol Specification
diff --git a/src/static/styles.css b/src/static/styles.css new file mode 100644 index 0000000..c3dcd08 --- /dev/null +++ b/src/static/styles.css @@ -0,0 +1,188 @@ +* { + margin: 0; + padding: 0; + box-sizing: border-box; +} + +body { + font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif; + background: #ffffff; + color: #000000; + min-height: 100vh; + display: flex; + flex-direction: column; +} + +.container { + max-width: 1200px; + margin: 0 auto; + padding: 2rem; + flex: 1; +} + +header { + display: flex; + align-items: center; + gap: 2rem; + margin-bottom: 3rem; + padding-bottom: 2rem; + border-bottom: 2px solid #000000; +} + +.logo { + width: 80px; + height: 80px; + background: #000000; + padding: 10px; + border-radius: 8px; +} + +h1 { + font-size: 2.5rem; + font-weight: 700; + letter-spacing: -0.02em; +} + +.tagline { + font-size: 1.25rem; + color: #666666; + margin-bottom: 3rem; + line-height: 1.6; +} + +.features { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + gap: 2rem; + margin-bottom: 3rem; +} + +.feature-card { + border: 2px solid #000000; + padding: 1.5rem; + background: #ffffff; + transition: all 0.2s ease; +} + +.feature-card:hover { + background: #000000; + color: #ffffff; + transform: translateY(-2px); + box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2); +} + +.feature-card h3 { + font-size: 1.25rem; + margin-bottom: 0.75rem; + font-weight: 600; +} + +.feature-card p { + line-height: 1.6; + opacity: 0.9; +} + +.endpoints { + background: #f5f5f5; + border: 2px solid #000000; + padding: 2rem; + margin-bottom: 3rem; +} + +.endpoints h2 { + font-size: 1.75rem; + margin-bottom: 1.5rem; + font-weight: 600; +} + +.endpoint-list { + display: flex; + flex-direction: column; + gap: 1rem; +} + +.endpoint { + font-family: 'Courier New', monospace; + background: #ffffff; + padding: 0.75rem 1rem; + border: 1px solid #000000; + display: flex; + align-items: center; + gap: 1rem; +} + +.method { + font-weight: bold; + min-width: 80px; +} + +.method.get { color: #0066cc; } +.method.post { color: #009900; } +.method.delete { color: #cc0000; } + +.links { + display: flex; + gap: 2rem; + flex-wrap: wrap; + margin-bottom: 3rem; +} + +.link-button { + display: inline-flex; + align-items: center; + gap: 0.5rem; + padding: 1rem 2rem; + background: #000000; + color: #ffffff; + text-decoration: none; + font-weight: 600; + transition: all 0.2s ease; + border: 2px solid #000000; +} + +.link-button:hover { + background: #ffffff; + color: #000000; +} + +.link-button.secondary { + background: #ffffff; + color: #000000; +} + +.link-button.secondary:hover { + background: #000000; + color: #ffffff; +} + +footer { + background: #000000; + color: #ffffff; + padding: 2rem; + text-align: center; +} + +footer a { + color: #ffffff; + text-decoration: underline; +} + +@media (max-width: 768px) { + h1 { + font-size: 2rem; + } + + header { + flex-direction: column; + align-items: flex-start; + gap: 1rem; + } + + .logo { + width: 60px; + height: 60px; + background: #000000; + padding: 8px; + border-radius: 6px; + } +} \ No newline at end of file