React MCP SPA
React MCP SPA
Una aplicación de página única (SPA) de React minimalista que se empaqueta en un único blob HTML y es servida por un servidor de MCP Apps. La SPA no utiliza enrutamiento de rutas URL; elige qué página renderizar leyendo el nombre de la herramienta actual desde el contexto del host MCP.
Estructura
packages/ui/ — SPA de React + Vite, compilada en un blob HTML de un solo archivo mediante
vite-plugin-singlefile.packages/mcp/ — Servidor MCP que utiliza
@modelcontextprotocol/ext-apps/server. Registra herramientas (show-home,show-counter,show-profile) que apuntan todas al mismo recursoui://.packages/playground/ — Entorno de desarrollo que renderiza la SPA dentro de una interfaz de chat simulada con entradas JSON para
hostContextytoolResult, para que las páginas puedan probarse sin un host MCP.
Related MCP server: @businessmaps/mcp
Instalación
Requiere Node.js ≥ 20 y pnpm ≥ 9.
pnpm installDesarrollar la interfaz de usuario de forma aislada
pnpm run dev:uiAbra la URL impresa (por ejemplo, http://localhost:5173). La SPA detecta que no hay un host MCP y muestra un selector de rutas para que pueda previsualizar cada página.
Playground — probar el renderizado sin MCP
pnpm run dev:playgroundSe abre en http://localhost:5174. El playground reutiliza el renderizador de rutas real de la SPA (RouteRenderer de packages/ui/src/Router.tsx) y lo envuelve en una interfaz de chat simulada. El encabezado tiene dos áreas de texto JSON: una para el hostContext (que determina qué página se renderiza mediante toolInfo.tool.name) y otra para el toolResult pasado a la página. Los botones preestablecidos cargan pares de contexto+resultado listos para cada herramienta registrada; las ediciones en cualquiera de las áreas de texto vuelven a renderizar en vivo la burbuja de salida de la herramienta del asistente.
Compilar y ejecutar el servidor MCP
pnpm run build # builds packages/ui → dist/index.html, then packages/mcp
pnpm run serve:mcp # starts Streamable HTTP server on http://localhost:3001/mcpPara transporte stdio:
pnpm --filter @react-mcp-spa/mcp run serve:stdioExponer el servidor con cloudflared
Algunos clientes MCP (incluidos los alojados) no pueden acceder a localhost. Utilice cloudflared para abrir un túnel rápido que asigne una URL HTTPS pública.
Instale cloudflared a través del gestor de paquetes de su sistema operativo:
# 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.cloudflaredInicie el servidor localmente:
pnpm run serve:mcpEn otra terminal, ejecute:
cloudflared tunnel --url http://localhost:3001
# or: pnpm run tunnelcloudflared imprime una URL como https://<random>.trycloudflare.com. Añada /mcp y utilícela como la URL de su servidor MCP:
https://<random>.trycloudflare.com/mcpEl túnel permanece activo hasta que cierre cloudflared. Para obtener un nombre de host estable, configure un túnel de Cloudflare con nombre en lugar de un túnel rápido.
Empaquetado como una extensión de Claude Desktop (.mcpb)
El repositorio incluye un empaquetador que produce un MCP Bundle instalable para Claude Desktop. La extensión ejecuta el servidor a través de stdio; no se requiere túnel.
pnpm run pack:mcpbEsto compila ambos paquetes, prepara el servidor compilado + HTML de la interfaz de usuario + node_modules de producción en build/mcpb-staging/, e invoca mcpb pack para producir:
build/react-mcp-spa.mcpbPara instalarlo, haga doble clic en el archivo .mcpb en Finder/Explorer (o arrástrelo a Claude Desktop). Claude valida el manifiesto y registra el servidor; después de la instalación, las tres herramientas (show-home, show-counter, show-profile) estarán disponibles y cada una renderizará su página como una interfaz de usuario de React en línea.
El manifiesto del paquete se encuentra en mcpb/manifest.json — actualice la version allí (y en packages/mcp/package.json) al realizar una nueva versión de la extensión.
Cómo funciona el enrutamiento
La SPA nunca lee window.location. En su lugar, packages/ui/src/App.tsx utiliza useApp() de @modelcontextprotocol/ext-apps/react y:
Lee
app.getHostContext().toolInfo.tool.namepara saber qué herramienta invocó el host; esta es la "ruta".Se suscribe a
app.ontoolresultpara recibir elCallToolResultdel servidor y pasarlo a la página como datos.Observa
app.onhostcontextchangedpara que las actualizaciones de tema / área segura / configuración regional se rendericen correctamente.
Añadir una nueva página es un cambio de dos pasos:
Registre una herramienta en packages/mcp/src/server.ts con
_meta.ui.resourceUriapuntando al recurso compartidoui://react-mcp-spa/app.html.Añada un caso para el nombre de la herramienta en
renderRoute()dentro de packages/ui/src/App.tsx.
This server cannot be deployed
Maintenance
Related MCP Connectors
The Remote MCP server acts as a standardized bridge between LLM applications (like Claude, ChatGPT, and Cursor) and external services, enabling AI agents to access external tools and resources. Its primary capability is providing a centralized search tool to discover other MCP servers and their respective tools. Unlike local implementations, it runs remotely with OAuth authentication and permission controls for security.
Unified MCP Server is a remote MCP connector for AI agents and vertical AI products that provides access to 22,000+ authorized SaaS tools across 400+ integrations and 24 categories directly inside LLMs (Claude, GPT, Gemini, Cohere). Tools operate only on explicitly authorized customer connections, enabling agents to safely read and write against live third-party systems.
Hosted MCP catalog with 30 tenant-isolated browser, RAG, AI, mail and media tools.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA 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.11 npm-
- AlicenseNot gradedqualityDmaintenanceAn 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.14 npmApache 2.0
- FlicenseNot gradedqualityDmaintenanceA minimal todo app MCP server for ChatGPT that exposes tools for managing tasks and provides an interactive HTML widget interface. It demonstrates how to build MCP servers with React-based UIs and includes development OAuth for ChatGPT connector setup.-
- FlicenseAqualityDmaintenanceProvides interactive, React-based UI apps inside Claude Desktop for tracking workouts, planning trips, budgeting, comparing products, and making decisions with bidirectional communication.8-