Sneaker Carousel MCP App

Sneaker Carousel MCP App

Enables browsing a sneaker carousel, selecting sizes and quantities, and simulating a checkout process within Claude via an MCP App.

Category
Visit Server

README

Sneaker Carousel MCP App

Demo portable de MCP Apps para mostrar en Claude: carrusel de zapatillas, selección de talle/cantidad y botón de pago simulado.

Qué demuestra

  • Un tool visible para el modelo: show-sneaker-carousel.
  • Un recurso ui://sneaker-drop/carousel.html renderizado por el host.
  • HTML, CSS y JavaScript empaquetados en un único archivo.
  • Una llamada UI → host → servidor mediante app.callServerTool().
  • Un tool privado para la UI: prepare-demo-checkout.
  • Validación autoritativa de producto, talle y total en el servidor.
  • Adaptación al tema y tipografías del host.

El pago es una simulación. No solicita tarjeta ni procesa dinero.

Ejecutar localmente

Requisitos: Node.js 20 o superior.

npm install
npm run build
npm start

Endpoint MCP:

http://localhost:3001/mcp

Health check:

http://localhost:3001/

Vista previa del carrusel sin un host MCP:

http://localhost:3001/preview

Probar con el basic-host oficial

En otra carpeta:

git clone https://github.com/modelcontextprotocol/ext-apps.git
cd ext-apps
npm install
SERVERS='["http://localhost:3001/mcp"]' npm start

Abrí http://localhost:8080, elegí show-sneaker-carousel y ejecutá el tool.

Deploy con Docker

docker build -t sneaker-mcp-app .
docker run --rm -p 3001:3001 sneaker-mcp-app

Podés desplegar el Dockerfile en Railway, Render, Fly.io, Cloud Run o ECS. El servicio debe quedar públicamente accesible por HTTPS.

Ejemplo final:

https://tu-dominio.example/mcp

Conectarlo a Claude

  1. Desplegá el proyecto con HTTPS.
  2. En Claude abrí Customize / Connectors.
  3. Elegí Add custom connector.
  4. Pegá https://tu-dominio.example/mcp.
  5. Para esta demo, seleccioná conexión sin autenticación si Claude ofrece esa opción.
  6. En un chat, activá el conector y escribí:
Mostrame el carrusel de zapatillas y ayudame a elegir una.

Claude debería llamar show-sneaker-carousel y renderizar la MCP App dentro de la conversación.

Checkout externo opcional

Si definís:

DEMO_CHECKOUT_URL=https://example.com/checkout

el servidor devolverá esa URL y la MCP App pedirá al host abrirla. Para una integración real, generá una URL única de checkout en el backend y confirmá el pago por webhook. No confíes en el monto enviado por la interfaz.

Estructura

.
├── main.ts              # servidor HTTP/stdio
├── server.ts            # tools y recurso MCP App
├── mcp-app.html         # entrada de la UI
├── src/
│   ├── mcp-app.ts       # comportamiento del carrusel y checkout
│   └── styles.css       # estilos responsivos
├── Dockerfile
└── render.yaml

Solución de problemas

outputSchema no acepta z.object(...)

Esta versión usa @modelcontextprotocol/ext-apps 1.7.4 junto con el SDK MCP 1.29.0. Los helpers del servidor terminan delegando en la API Zod del SDK 1.x, por lo que los schemas de salida se pasan como shapes:

outputSchema: StoreOutputSchema.shape

root is possibly null

El elemento raíz se valida una vez y luego se guarda con tipo HTMLElement, de modo que TypeScript conserva el tipo dentro de callbacks.

Cannot find module dist/main.js

dist/main.js se genera recién cuando npm run build termina correctamente. Ejecutá:

rm -rf dist
npm run build
npm start

Avisos de npm audit

Los avisos de auditoría no causan los errores de compilación. Revisalos con:

npm audit
npm audit fix
npm run build

No ejecutes npm audit fix --force sin revisar los cambios, porque puede instalar actualizaciones mayores incompatibles.

Compatibilidad con Claude

La UI primero lee structuredContent. Como fallback de compatibilidad, también puede recuperar el catálogo y la orden desde un payload JSON marcado dentro de content. Esto permite que la demo siga renderizando en hosts que no reenvían structuredContent al iframe.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured