WebWeaver Nexus services for MCP hosts: waitlist signup (with UI), product overview, contact info.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
An MCP server that exposes WebWeaver Nexus services β waitlist signup (with an embedded form UI), product overview, and contact info β to MCP-enabled hosts (Claude Desktop, claude.ai, ChatGPT, Cursor, MCP Inspector, basic-host).
Production URL: https://webweaver-nexus-mcp.vercel.app/mcp β Streamable HTTP, public, no authentication.
Published to the official MCP registry as io.github.webweaver-nexus/webweaver-mcp-server. See Publishing to the MCP registry.
| Tool | Type | Description |
|---|---|---|
join_waitlist | MCP App (UI) | Embeds the Tally waitlist form inside the host |
get_product_overview | Plain tool | Returns a description of what WebWeaver Nexus does |
get_contact_info | Plain tool | Returns contact methods and links |
engines in package.json)
enginespins 24.x deliberately: Vercel selects the function runtime from it. Newer local Node majors work fine but make npm print anEBADENGINEwarning.
This bundles the MCP App UI with Vite + vite-plugin-singlefile, type-checks the client and server, and emits the compiled server.
The Vite step runs first and is load-bearing: a build plugin writes the bundled HTML into generated/mcp-app-html.ts, which server.ts imports. The server type-check would fail without it. generated/ is a build artifact and is git-ignored.
During
npm run dev, the watch build regenerates that module on every client change, butnpm run serveloads it once at startup β restart the server to pick up UI edits.
The server listens at http://localhost:3001/mcp by default.
Before deploying, update the Tally form ID:
src/mcp-app.tsdata-tally-src URL in mcp-app.html to matchTally's embed.js does not populate embeds by itself β src/mcp-app.ts has to call window.Tally.loadEmbeds() once the script loads, or the iframe keeps its data-tally-src, never gets a src, and the form silently renders as blank space.
Two settings keep the form readable in dark hosts and should be changed together: transparentBackground=0 in the data-tally-src URL, and color-scheme: light on #tally-container in src/mcp-app.css. Tally's form styling does not follow the host theme, so with a transparent background its labels and inputs end up dark-on-dark. This mirrors the fix applied to the landing page embed.
MCP Inspector is the official MCP debugger and the right tool for almost every check here. Verified against v2.5.0.
The web UI opens on port 6274. Set:
Streamable HTTPVia Proxy or Direct β both work. Proxy routes JSON-RPC through Inspector's local proxy (port 6277); Direct goes browser β server.http://localhost:3001/mcp (local) or https://webweaver-nexus-mcp.vercel.app/mcp (production)Click Connect, then verify across tabs:
join_waitlist, get_product_overview, get_contact_info); the two plain tools return their text when called.ui://join-waitlist/mcp-app.html lists; reading it returns ~435 KB of bundled HTML.join_waitlist; the Tally form renders inside its sandboxed iframe. Inspector builds a real CSP from our _meta.ui.csp, so this genuinely exercises resourceDomains / frameDomains / connectDomains. The form renders here but is not fully interactive β see Inspector strips allow-same-origin below.There is also a CLI, which makes post-deploy checks scriptable without a browser:
The one thing Inspector cannot do: accept ui/update-model-context. As of v2.5.0 it never registers an onupdatemodelcontext handler and never declares the capability, so app.updateModelContext() has nowhere to land. Use basic-host for that one check.
A vendored copy of the MCP Apps basic-host harness lives in tools/basic-host/. It is the only local host that declares the updateModelContext capability and renders a π Model Context panel, which is how you confirm the waitlist form actually notifies the host model after submission.
Against production instead:
SERVERS is a JSON array, and ports 8080/8081 are effectively fixed β see tools/basic-host/README.md for provenance and the full set of caveats.
The Model Context panel stays hidden until the first update arrives, which for
join_waitlistmeans a real Tally submission β it creates a live waitlist entry and fires notification emails. Use a throwaway entry.
| Need | Use |
|---|---|
| "Is the server reachable? Do tools list?" | Inspector (--cli for scripts) |
| "Do the plain tools return the right text?" | Inspector |
| "Does the Tally form render inside the CSP sandbox?" | Inspector (renders, but not fully interactive) |
| "Can a user actually complete and submit the form?" | basic-host or the deployed site |
"Does app.updateModelContext() reach the host?" | basic-host β Inspector cannot |
| Fastest post-deploy sanity check | Inspector --cli |
For iterating on the server locally against claude.ai's custom connector UI (which only accepts public HTTPS URLs, not localhost), expose your dev server via a Cloudflare tunnel:
Copy the https://*.trycloudflare.com URL from the tunnel output. In Claude's settings, add a custom MCP connector pointing to https://<tunnel-url>/mcp.
*.trycloudflare.com is allowlisted by the Host header check in api/mcp.ts β cloudflared forwards the public hostname rather than localhost, so without that entry every tunnelled request is rejected with 403 Invalid Host.
Note: As of writing, claude.ai's custom connectors ignore
frameDomainsdeclared in_meta.ui.csp(see GitHub issueanthropics/claude-ai-mcp#40). This will cause the Tally embed injoin_waitlistto be blocked. The two read-only tools work correctly. Track that issue for the fix.
The MCP server is deployed as a Vercel serverless function using the Express + Streamable HTTP pattern.
How it works:
vercel.json routes traffic to api/mcp.ts, which exports the Express app as default.generated/mcp-app-html.ts), so no file is read from disk at runtime.maxDuration: 60 (well above what's needed; tool calls return in milliseconds).To redeploy: Push to the main branch. Vercel auto-deploys on push.
To verify the deployment:
For an interactive equivalent, run MCP Inspector against the deployed URL (see Testing with MCP Inspector above). Recommended as the first post-deploy check before bringing up basic-host.
The registry entry is io.github.webweaver-nexus/webweaver-mcp-server, defined by server.json. Publishing is manual dispatch only β run the Publish to MCP Registry workflow from the Actions tab.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/webweaver-mcp-server)<a href="https://allmcps.com/mcp/webweaver-mcp-server"><img src="https://allmcps.com/api/badge/webweaver-mcp-server?style=directory" alt="Webweaver MCP Server on AllMCPs" /></a>