mcp-pedidos
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-pedidos ¿Dónde está mi pedido P-0001?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-pedidos
Servidor MCP para que un cliente consulte sus pedidos desde Claude o ChatGPT: estado, ítems, total e historial, con permisos por cliente. SQLite, cero dependencias, sin API key.
Cliente: ¿Dónde está mi pedido P-0001?
Agente: P-0001 está enviado desde el 13/11 14:30.
- 4 x Bolsas de harina 000 x 25 kg $98.000,00
- 10 x Levadura fresca x 1 kg $18.900,00
Total: $116.900,00
Historial: pendiente → preparando → enviadoEl problema
Un negocio chico recibe "¿llegó mi pedido?" por WhatsApp todo el día. La respuesta ya está en el sistema, pero nadie quiere abrir el sistema. Con este servidor, el cliente conecta su cuenta a un agente y pregunta en lenguaje natural; el agente consulta el pedido real, no inventa.
Lo importante no es el CRUD: es el límite. Una instancia de cliente no puede ver pedidos de otro, y el modelo no puede elegir el token: viene en la configuración del cliente MCP. Si el modelo insiste, el servidor responde "no existe".
Related MCP server: Shopify MCP Demo
Qué expone
Herramienta | Quién | Para qué |
| cliente y admin | Estado, ítems, total e historial de un pedido |
| cliente y admin | Lista acotada a lo que la sesión puede ver, con filtro por estado |
| cliente | Crea un pedido en estado pendiente |
| admin | Avanza el pedido respetando la máquina de estados |
| admin | Pedidos por estado y total facturado (sin cancelados) |
Instalación
Necesitás Node 22.13+. No hay dependencias.
git clone https://github.com/lucabaello1998/mcp-pedidos.git
cd mcp-pedidos
node cli.js semilla
PEDIDOS_TOKEN=cli_laespiga_demo_2026 node cli.js listarConectarlo a un cliente MCP
{
"mcpServers": {
"pedidos": {
"command": "node",
"args": ["C:/ruta/a/mcp-pedidos/server.js"],
"env": {
"PEDIDOS_DB": "C:/ruta/a/pedidos.db",
"PEDIDOS_TOKEN": "cli_laespiga_demo_2026"
}
}
}
}Para la instancia del dueño, el mismo servidor con otro token:
"env": {
"PEDIDOS_DB": "C:/ruta/a/pedidos.db",
"PEDIDOS_TOKEN": "<token de admin>",
"PEDIDOS_ADMIN_TOKEN": "<token de admin>"
}Variables:
Variable | Para qué |
| Ruta de la base SQLite (default |
| Token de esta instancia: cliente o admin |
| Token del dueño, para reconocer la sesión de admin |
Modelo de datos
clientes (id, nombre, email, token)
pedidos (id, numero, cliente_id, estado, total_centavos, nota, fechas)
items (id, pedido_id, descripcion, cantidad, precio_centavos)
eventos (id, pedido_id, estado, nota, creado_en) -- historialEl dinero va en centavos enteros, nunca en float: 0.1 + 0.2 no es 0.3, y
un total no puede depender de eso. La API expone precio_centavos y devuelve
total_centavos; el total en pesos es solo para mostrar.
Máquina de estados
pendiente → preparando → enviado → entregado
↘ ↘
cancelado canceladoUn pedido entregado no vuelve atrás: si hay que corregir algo, se hace una devolución, no se reescribe la historia. Las transiciones inválidas devuelven el motivo y las opciones posibles, no un "error 400".
Decisiones y por qué
El token no es un argumento de la herramienta. Si el token viajara en el prompt, el modelo podría cambiarlo o el usuario podría pedirle "probá con otro". Va en la configuración del cliente MCP: una instancia = una identidad. Es la diferencia entre autenticación y "confiar en el modelo".
Pedido ajeno = "no existe". Responder "no autorizado" confirma que el número existe; con números correlativos eso es un oráculo. Mismo criterio que un login.
Comparación de tokens en tiempo constante. No es paranoia de más: es la
misma razón por la que no se compara una contraseña con ===.
Máquina de estados explícita. Un UPDATE estado = ? sin validar permite
"entregado → pendiente" y rompe cualquier reporte. Las transiciones están en una
tabla de 5 líneas, legibles y testeables.
Centavos enteros. Un pedido con precios en float acumula centavos perdidos; el bug aparece recién cuando el contador cuadra mal.
Sin ORM. Cuatro tablas y cinco consultas: un ORM agregaría una capa para ahorrar veinte líneas de SQL.
Límites honestos
No hay usuarios ni contraseñas. El token es la identidad; para producción haría falta rotación, expiración y un registro de accesos.
Un solo negocio por base. No hay
tenant_id; para varios negocios se agrega la columna y se filtra igual que por cliente.Sin pagos ni stock. El total se calcula, no se cobra ni se descuenta.
SQLite. Bien para una pyme; para varias instancias escribiendo a la vez hace falta un motor con más concurrencia.
Tests
npm test55 tests con node --test, sin frameworks:
creación: total en centavos exacto, número correlativo, evento inicial y rechazo de ítems inválidos (cantidad, precio con decimales, descripción vacía);
permisos: el cliente ve lo suyo, el ajeno responde "no existe", el admin ve todo, el cliente no cambia estados ni ve el resumen;
máquina de estados: recorrido completo, saltos rechazados, estados finales;
protocolo MCP por stdio: handshake,
tools/list,-32601,-32700, notificaciones sin respuesta y stdout solo con JSON-RPC;CLI: semilla idempotente, listar, consultar, resumen y códigos de salida.
Licencia
MIT. Ver LICENSE.
Available Tools
5 toolsactualizar_estadoA
Avanza el estado de un pedido. Solo el dueño del negocio puede usarla. Las transiciones válidas son pendiente → preparando → enviado → entregado; cancelar solo desde pendiente o preparando.
Inputs: estado (required), numero (required), nota.
consultar_pedidoA
Devuelve un pedido por su número (formato P-0001): estado actual, ítems, total e historial de cambios. Un cliente solo puede consultar sus propios pedidos; si el número es de otro, responde que no existe.
Inputs: numero (required).
crear_pedidoA
Crea un pedido nuevo en estado pendiente para el cliente de esta sesión. Los precios van en centavos enteros (precio_centavos), nunca con decimales. Devuelve el pedido creado con su número.
Inputs: items (required), nota.
listar_pedidosA
Lista los pedidos visibles para esta sesión, del más nuevo al más viejo. Un cliente ve solo los suyos; el dueño del negocio ve todos. Se puede filtrar por estado.
Inputs: estado, limite.
resumenA
Resumen del negocio: cantidad de pedidos por estado y total facturado (sin contar cancelados). Solo el dueño del negocio puede consultarlo.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Cada herramienta tiene un propósito claramente distinto: consulta individual, listado, creación, cambio de estado y resumen agregado. No hay solapamiento ambiguo entre ellas, incluso consultar_pedido y listar_pedidos se diferencian por alcance y formato de salida.
La mayoría sigue un patrón consistente verbo_sustantivo en español y snake_case: consultar_pedido, listar_pedidos, crear_pedido, actualizar_estado. Solo 'resumen' rompe ligeramente el patrón al ser un sustantivo aislado, pero sigue siendo legible y coherente con el dominio.
Cinco herramientas es un número bien ajustado para un servidor de gestión de pedidos: cubre las operaciones principales sin redundancia. Cada herramienta aporta una capacidad necesaria y diferenciada.
El ciclo de vida del pedido está bien cubierto: creación, consulta, listado, transiciones de estado y resumen del negocio. Faltan operaciones menores como modificar ítems de un pedido existente o una herramienta dedicada de cancelación, aunque la cancelación se resuelve mediante actualizar_estado.
Maintenance
Related MCP Connectors
Connect AI to store orders, products and inventory with scoped access and human approvals.
Connect your Odoo to Claude and ChatGPT: ask about sales, stock, customers and invoices.
Run your online shop from your AI: products, prices, stock and orders. Payouts via your own Stripe.
Read-only access to your Order41 wholesale data. Look up orders, carts, products, drops and contacts, with their custom tags, straight from Claude, ChatGPT or Cursor. Order41 is a B2B ordering platform for fashion and action-sports brands, their sales agencies and retail buyers. Sign in with your Order41 account; you only see what your role allows.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables management of Shopify orders through the Admin REST API, allowing users to create new orders and retrieve order status details. It supports both local and remote access via SSE and STDIO transports for integration with MCP clients like Claude Desktop.-
- FlicenseNot gradedqualityBmaintenanceEnables shopping a live Shopify store from inside ChatGPT or Claude with full catalog, cart, OTP login, saved addresses and payment via Cashfree, all without leaving the conversation.1-
- AlicenseAqualityBmaintenanceEnables Claude Code and Claude Desktop to automate order operations through the Chatea Pro API, including reading contacts, orders, tags, flows, and agents, and acting on individual contacts via tagged writes with dry-run and opt-in safety gates.25MIT
- AlicenseNot gradedqualityCmaintenanceEnables connecting 13 e-commerce platforms such as Amazon, eBay, WooCommerce, and OTTO to Claude, ChatGPT, Copilot, and Cursor, exposing 160 tools to manage stores, orders, products, and marketplaces through natural language.AGPL 3.0