React MCP SPA
React MCP SPA
Eine minimale React Single-Page-Anwendung, die in einen einzelnen HTML-Blob gebündelt und von einem MCP Apps-Server bereitgestellt wird. Die SPA verwendet kein URL-Pfad-Routing – sie wählt die zu rendernde Seite aus, indem sie den aktuellen Tool-Namen aus dem MCP-Host-Kontext liest.
Layout
packages/ui/ — React + Vite SPA, erstellt als ein einzelner HTML-Blob mittels
vite-plugin-singlefile.packages/mcp/ — MCP-Server unter Verwendung von
@modelcontextprotocol/ext-apps/server. Registriert Tools (show-home,show-counter,show-profile), die alle auf dieselbeui://-Ressource verweisen.packages/playground/ — Entwicklungs-Tool, das die SPA innerhalb einer Mock-Chat-UI mit JSON-Eingaben für
hostContextundtoolResultrendert, sodass Seiten ohne einen MCP-Host getestet werden können.
Related MCP server: routine-mcp
Installation
Erfordert Node.js ≥ 20 und pnpm ≥ 9.
pnpm installEntwicklung der UI in Isolation
pnpm run dev:uiÖffnen Sie die ausgegebene URL (z. B. http://localhost:5173). Die SPA erkennt, dass kein MCP-Host vorhanden ist, und zeigt eine Routenauswahl an, damit Sie jede Seite in der Vorschau ansehen können.
Playground — Rendering ohne MCP testen
pnpm run dev:playgroundÖffnet sich unter http://localhost:5174. Der Playground verwendet den echten Routen-Renderer der SPA (RouteRenderer aus packages/ui/src/Router.tsx) und bettet ihn in eine Mock-Chat-UI ein. Der Header verfügt über zwei JSON-Textbereiche – einen für den hostContext (steuert über toolInfo.tool.name, welche Seite gerendert wird) und einen für das toolResult, das an die Seite übergeben wird. Preset-Schaltflächen laden fertige Kontext-Ergebnis-Paare für jedes registrierte Tool; Änderungen an einem der Textbereiche rendern die Tool-Ausgabe-Sprechblase des Assistenten live neu.
MCP-Server erstellen und ausführen
pnpm run build # builds packages/ui → dist/index.html, then packages/mcp
pnpm run serve:mcp # starts Streamable HTTP server on http://localhost:3001/mcpFür stdio-Transport:
pnpm --filter @react-mcp-spa/mcp run serve:stdioBereitstellung des Servers mit cloudflared
Einige MCP-Clients (einschließlich gehosteter) können localhost nicht erreichen. Verwenden Sie cloudflared, um einen schnellen Tunnel zu öffnen, der eine öffentliche HTTPS-URL zuweist.
Installieren Sie cloudflared über Ihren Betriebssystem-Paketmanager:
# macOS (Homebrew)
brew install cloudflared
# Linux (Debian/Ubuntu)
# See https://pkg.cloudflare.com/ for the apt repo, or grab the .deb from
# https://github.com/cloudflare/cloudflared/releases
# Windows (winget)
winget install --id Cloudflare.cloudflaredStarten Sie den Server lokal:
pnpm run serve:mcpFühren Sie in einem anderen Terminal Folgendes aus:
cloudflared tunnel --url http://localhost:3001
# or: pnpm run tunnelcloudflared gibt eine URL wie https://<random>.trycloudflare.com aus. Hängen Sie /mcp an und verwenden Sie diese als Ihre MCP-Server-URL:
https://<random>.trycloudflare.com/mcpDer Tunnel bleibt bestehen, bis Sie cloudflared beenden. Für einen stabilen Hostnamen konfigurieren Sie einen benannten Cloudflare-Tunnel anstelle eines schnellen Tunnels.
Verpacken als Claude Desktop-Erweiterung (.mcpb)
Das Repo enthält einen Packer, der ein installierbares MCP Bundle für Claude Desktop erstellt. Die Erweiterung führt den Server über stdio aus – es ist kein Tunnel erforderlich.
pnpm run pack:mcpbDies erstellt beide Pakete, stellt den kompilierten Server + UI-HTML + Prod-node_modules unter build/mcpb-staging/ bereit und ruft mcpb pack auf, um Folgendes zu erzeugen:
build/react-mcp-spa.mcpbUm es zu installieren, doppelklicken Sie auf die .mcpb im Finder/Explorer (oder ziehen Sie sie auf Claude Desktop). Claude validiert das Manifest und registriert den Server; nach der Installation sind die drei Tools (show-home, show-counter, show-profile) verfügbar und jedes rendert seine Seite als Inline-React-UI.
Das Bundle-Manifest befindet sich unter mcpb/manifest.json — erhöhen Sie dort (und in packages/mcp/package.json) die version, wenn Sie ein neues Erweiterungs-Release erstellen.
Funktionsweise des Routings
Die SPA liest niemals window.location. Stattdessen verwendet packages/ui/src/App.tsx useApp() aus @modelcontextprotocol/ext-apps/react und:
Liest
app.getHostContext().toolInfo.tool.name, um zu wissen, welches Tool der Host aufgerufen hat – dies ist die "Route".Abonniert
app.ontoolresult, um dasCallToolResultvom Server zu empfangen und es als Daten an die Seite zu übergeben.Überwacht
app.onhostcontextchanged, damit Aktualisierungen von Design / Safe-Area / Gebietsschema korrekt neu gerendert werden.
Das Hinzufügen einer neuen Seite ist eine Änderung in zwei Schritten:
Registrieren Sie ein Tool in packages/mcp/src/server.ts, wobei
_meta.ui.resourceUriauf die gemeinsameui://react-mcp-spa/app.html-Ressource verweist.Fügen Sie einen Fall für den Tool-Namen in
renderRoute()innerhalb von packages/ui/src/App.tsx hinzu.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceA framework for building interactive UI applications and React-based widgets for ChatGPT and Claude using the Model Context Protocol. It enables developers to create custom tools and visual components that facilitate rich, bidirectional interaction between AI models and users.3MIT
- Flicense-qualityDmaintenanceA Model Context Protocol (MCP) server built with the mcp-framework for developing and managing custom tools. It provides a structured foundation for building and integrating modular components like data processors and API clients into Claude Desktop.7
- FlicenseAqualityDmaintenanceAn MCP App that renders an interactive dashboard in Claude conversations to unify calendar events, emails, and documents into a single interface. It enables users to manage their daily schedule and perform actions like meeting preparation through bidirectional communication between the UI and the model.2
- Alicense-qualityDmaintenanceAn MCP bridge server that allows AI tools to call functions and execute code directly within a web browser tab. It enables developers to register custom browser-side tools with full access to the DOM, web APIs, and local application state.11Apache 2.0
Related MCP Connectors
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Build, deploy, and operate hosted web apps on VibeKit (vibekit.bot) from any MCP client.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/billy-yoyo/McpReactSpa'
If you have feedback or need assistance with the MCP directory API, please join our Discord server