jevstrudel.git / website / src / pages / ai.astro
ai.astro83 lines · 2.2 KB · raw
1---
2// "Make songs with your AI": how a visitor connects their own MCP client to
3// the hosted MCP. The guide is ConnectAi.jsx, which the jev panel's mcp tab
4// shows too, rendered here at build time.
5import { siteName, siteUrl, themeColor } from '../jev/site.mjs';
6import { ConnectAi } from '../jev/ConnectAi.jsx';
7
8const server = `${siteUrl}/jev/mcp`;
9---
10
11<html lang="en">
12  <head>
13    <meta charset="utf-8" />
14    <meta name="viewport" content="width=device-width, initial-scale=1" />
15    <title>Make songs with your AI · {siteName}</title>
16    <meta name="description" content={`Connect your own AI (Claude Code, Claude, any MCP client) to ${siteName}: it plays Strudel songs in your open tab and publishes them for Jev to screen.`} />
17    <style define:vars={{ accent: themeColor }}>
18      body {
19        margin: 0;
20        background: #161616;
21        color: #eee;
22        font: 15px/1.6 ui-monospace, SFMono-Regular, Menlo, monospace;
23      }
24      main {
25        max-width: 46rem;
26        margin: 2.5rem auto;
27        padding: 0 1rem 4rem;
28      }
29      h1,
30      h2 {
31        color: var(--accent);
32      }
33      h1 {
34        font-size: 1.5rem;
35      }
36      h2 {
37        font-size: 1.1rem;
38        margin-top: 2rem;
39      }
40      a {
41        color: var(--accent);
42      }
43      pre,
44      code {
45        background: #222;
46        border-radius: 4px;
47      }
48      pre {
49        padding: 0.6rem 0.8rem;
50        overflow-x: auto;
51        border: 1px solid #333;
52      }
53      code {
54        padding: 0 0.2rem;
55      }
56      table {
57        border-collapse: collapse;
58        width: 100%;
59      }
60      td,
61      th {
62        border-top: 1px solid #333;
63        padding: 0.4rem 0.5rem 0.4rem 0;
64        vertical-align: top;
65        text-align: left;
66      }
67      .muted {
68        opacity: 0.75;
69      }
70    </style>
71  </head>
72  <body>
73    <main>
74      <p><a href="/">← {siteName}</a></p>
75      <h1>Make songs with your AI</h1>
76      <ConnectAi server={server} />
77    </main>
78    <script is:inline>
79      // in dev, and anywhere else the site runs, the server is this origin's
80      for (const el of document.querySelectorAll('.server')) el.textContent = `${location.origin}/jev/mcp`;
81    </script>
82  </body>
83</html>