Scaffold VTEX IO apps, Node services and GraphQL, look up Store Framework block props, search docs
Runs on your machine from its package; the steps are below.

At most: creates or changes data: records, files, settings.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
npx -y vtex-io-mcp
MCP client config
{
"mcpServers": {
"vtex-io-mcp": {
"command": "npx",
"args": [
"-y",
"vtex-io-mcp"
]
}
}
}
Servidor MCP para desarrollar en VTEX IO: Store Framework, React, servicios Node, GraphQL, Admin y más.
vtex-io-mcp es un servidor Model Context Protocol que convierte a tu asistente de IA en un copiloto de VTEX IO. Genera el scaffolding de apps, servicios Node y esquemas GraphQL, consulta las props de los blocks de Store Framework y busca en una base de documentación y cursos que viaja dentro del paquete. Funciona con Claude Code, Claude Desktop, Cursor, VS Code, Windsurf y cualquier cliente MCP.
Versión del código: 0.1.8, según package.json. La entrada src/index.ts conecta el servidor por stdio; el cliente MCP inicia el proceso y se comunica por la entrada y salida estándar, sin abrir un puerto HTTP. Las nueve herramientas se registran en src/tools/index.ts.
manifest.json y estructura de carpetas para cualquier combinación de builders.service.json, clients, rutas HTTP y handlers de eventos; esquema GraphQL con resolvers tipados.El cliente MCP ejecuta el servidor bajo demanda con npx, así que no hace falta instalarlo. Requiere Node >= 18.
claude mcp add vtex-io -- npx -y vtex-io-mcp
Para compartirlo con el equipo en un repositorio, usa --scope project: la configuración queda en .mcp.json.
En claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"vtex-io": {
"command": "npx",
"args": ["-y", "vtex-io-mcp"]
}
}
}
En ~/.cursor/mcp.json (global) o .cursor/mcp.json (por proyecto):
{
"mcpServers": {
"vtex-io": {
"command": "npx",
"args": ["-y", "vtex-io-mcp"]
}
}
}
En .vscode/mcp.json:
{
"servers": {
"vtex-io": {
"type": "stdio",
"command": "npx",
"args": ["-y", "vtex-io-mcp"]
}
}
}
En ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"vtex-io": {
"command": "npx",
"args": ["-y", "vtex-io-mcp"]
}
}
}
Cualquier cliente con transporte stdio sirve: el comando es npx y los argumentos, -y vtex-io-mcp. Si prefieres una instalación global, npm install -g vtex-io-mcp y usa vtex-io-mcp como comando.
El servidor está listado en el Official MCP Registry como io.github.zeluizr/vtex-io-mcp.
Después de reiniciar el cliente, pide lo que necesitas en lenguaje natural y el asistente elige la herramienta:
product-reviews con los builders react, node, graphql y store"flex-layout.row? Dame un ejemplo con dos columnas"GET /_v/order/:orderId y un handler para order.created"productReviews(productId: ID!) y una mutation addReview"| herramienta | parámetros | qué hace |
|---|---|---|
scaffold-vtex-app | appName, vendor, builders, version?, description? | Genera manifest.json y la estructura de carpetas de los builders elegidos: store, react, node, graphql, styles, messages, admin, pixel, docs. |
scaffold-node-service | appName, vendor, routes?, events?, memory?, timeout? | Genera node/index.ts, service.json, clients y middlewares. Cada ruta lleva name, path, method y public; cada evento, name, sender y keys. |
scaffold-graphql | appName, vendor, queries?, mutations? | Genera schema.graphql y los resolvers en TypeScript, con argumentos, tipo de retorno y descripción. |
| herramienta | parámetros | qué hace |
|---|---|---|
lookup-block-props | blockName | Devuelve descripción, props y ejemplos de un block. |
add-block | blockName, blockId?, props?, children? | Genera un fragmento JSONC para blocks.jsonc y valida las props contra el esquema del block. |
Blocks disponibles hoy: rich-text, info-card, flex-layout.row, flex-layout.col, shelf, image.
| herramienta | parámetros | qué hace |
|---|---|---|
search-concepts | query, maxResults? | Busca por palabras clave en los 391 documentos y devuelve resultados ordenados con extractos. |
explain-concept | concept | Devuelve el documento completo de un concepto por su ID. |
search-courses | query, courseId? | Busca en los cursos oficiales de VTEX IO y devuelve extractos con contexto. |
lookup-vtex-api | api | Referencia REST de una API de VTEX: catalog, orders, checkout, master-data, logistics, pricing, intelligent-search, session, headless-cms, promotions, payments-gateway, license-manager. |
| URI | contenido |
|---|---|
vtex://concepts | Índice de los documentos, agrupados por prefijo. |
vtex://concepts/{conceptId} | Documento completo de un concepto. |
vtex://courses | Índice de los cursos, con título, descripción y número de pasos. |
vtex://courses/{id} | Contenido completo de un curso: onboarding, basic-blocks, layout-blocks, styles-course, store-block, service-course, calling-commerce-apis, admin, content-workflow, store-performance. |
slider-layout, tab-layout, responsive-layout, stack-layout, condition-layout, modal-layout, disclosure-layout), producto (product-summary, product-images, product-price, sku-selector, buy-button), búsqueda, header, footer, minicart y logindata/builders/ (hoy: store y node)validate-blocks, create-page-templategenerate-react-component, add-css-handles, create-graphql-queryadd-route-handler, add-event-handler, create-client, add-graphql-fieldadd-builder, add-dependency, add-policy, generate-manifestvtex://builders/{name} y vtex://api/{client} con los clients de @vtex/apidata/ desde los cursos y los README de vtex-appssrc/
├── index.ts # entry point del binario (stdio)
├── server.ts # McpServer: registra tools y resources
├── tools/ # una herramienta por archivo, registradas en tools/index.ts
├── resources/ # vtex://concepts y vtex://courses
└── knowledge/ # carga y búsqueda sobre data/
data/
├── blocks/ # un JSON por block + _index.json
├── builders/ # referencia por builder
├── concepts/ # documentación en Markdown
└── courses/ # cursos en Markdown + _index.json
public/ # imágenes del README (no va en el paquete npm)
git clone https://github.com/zeluizr/vtex-io-mcp.git
cd vtex-io-mcp
npm install
npm run build
npm run inspect
npm run inspect abre el MCP Inspector sobre build/index.js para llamar a cada herramienta y leer los resources sin un cliente.
Para probar la versión local en un cliente, apunta el comando a la build en lugar de npx:
claude mcp add vtex-io-local -- node /ruta/a/vtex-io-mcp/build/index.js
| comando | qué hace |
|---|---|
npm run build | Compila TypeScript en build/ y marca el binario como ejecutable. |
npm run dev | Compilación en modo watch. |
npm run lint | Verificación de tipos (tsc --noEmit). |
npm run inspect | Abre el MCP Inspector sobre el servidor compilado. |
src/tools/<nombre>.ts exportando el esquema zod (<nombre>Schema) y la función que devuelve el contenido.src/tools/index.ts con server.tool(nombre, descripción, esquema, función). La descripción es lo que el modelo lee para decidir cuándo usarla: di qué hace y con qué ejemplos.data/ y cárgalos desde src/knowledge/.npm run build y pruébala en el Inspector.El trabajo nace en una rama salida de dev y el PR va contra dev. De ahí se promueve a qa y, después de probar, a main, siempre con merge de la rama completa. El CI corre lint y build en Node 18, 20 y 22.
Para publicar, actualiza la versión en package.json y CHANGELOG.md y sube un tag v*: el workflow publish.yml compila, publica en npm con provenance, crea el GitHub Release y publica el server.json en el MCP Registry.
Ver CHANGELOG.md.
Hecho con amor y café por zeluizr y con la ayuda de Claude ☕