mcp-telepizza
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-telepizza¿Qué ofertas hay hoy?"
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-telepizza
Servidor MCP (Model Context Protocol) no oficial y solo de lectura para telepizza.es: consulta la carta con precios, ofertas, tiendas, tus puntos MiTelepi y tu historial de pedidos desde Claude (o cualquier cliente MCP), usando tu propia cuenta.
🍕 "¿Qué ofertas hay hoy?" · "¿Cuánto cuesta una familiar de masa madre?" · "¿Qué pedí la última vez?" · "¿Cuántos puntos tengo?"

Demo con datos ficticios; no usa tu cuenta. Generada con VHS desde docs/demo/demo.tape.
No puede gastar dinero: no existe checkout ni ninguna herramienta de pago. Hay herramientas de consulta y unas pocas de escritura sin coste (llenar/vaciar el carrito, marcar favoritos) claramente marcadas como WRITE.
🧠 Cómo funciona
telepizza.es no tiene API pública: es un storefront de Salesforce Commerce Cloud (Demandware). Este servidor replica las llamadas internas que hace la propia web contra sus controladores:
https://www.telepizza.es/on/demandware.store/Sites-TelepizzaES-Site/default/<Controller>-<Action>Los detalles no obvios descubiertos por ingeniería inversa están documentados en la cabecera de src/telepizza_mcp/client.py. Los tres que más duelen:
🫓 Los precios dependen de la tienda: sin tienda fijada en sesión la carta no trae precios. La secuencia es
Stores-GetStore?lat&lng&method=delivery→Stores-SetStore.🫓
Stores-SetStoreexige body JSON — enviándolo como formulario devuelve un 410 que parece un error de CSRF pero no lo es.🫓 El login es un POST de formulario con token CSRF; las cuentas antiguas ("migradas") usan además un hash bcrypt en cliente con salt que devuelve el servidor.
Related MCP server: Fitatu MCP Unofficial
🚀 Instalación
Requiere Python ≥ 3.11.
git clone https://github.com/aramosf/mcp-telepizza.git
cd mcp-telepizza
python3 -m venv .venv
.venv/bin/pip install -e .
cp .env.example .env # y rellena tus credenciales de telepizza.es.env (no se versiona nunca):
TELEPIZZA_EMAIL=tu@email.com
TELEPIZZA_PASSWORD=...Registro en Claude Code
claude mcp add telepizza -- $(pwd)/.venv/bin/python -m telepizza_mcp.serverEl servidor carga el .env del propio repo; no hace falta exportar variables. Para Claude Desktop u otros clientes MCP, configura el mismo comando como servidor stdio.
Registro en Codex CLI (OpenAI)
Codex CLI habla MCP por stdio, igual que Claude Code. Añade el servidor a ~/.codex/config.toml:
[mcp_servers.telepizza]
command = "/ruta/a/mcp-telepizza/.venv/bin/python"
args = ["-m", "telepizza_mcp.server"]
# el .env del repo se carga solo; si prefieres, pásalas aquí:
# env = { TELEPIZZA_EMAIL = "tu@email.com", TELEPIZZA_PASSWORD = "..." }O con el comando:
codex mcp add telepizza -- /ruta/a/mcp-telepizza/.venv/bin/python -m telepizza_mcp.serverRegistro en ChatGPT
ChatGPT (web/escritorio) admite servidores MCP como conectores personalizados en modo desarrollador, pero solo remotos por HTTP/SSE — no lanza procesos locales por stdio. Este servidor es stdio, así que para usarlo desde ChatGPT necesitas exponerlo como endpoint remoto, por ejemplo con un puente mcp-remote/supergateway y una URL accesible (con su capa de autenticación). Para uso local, Codex CLI o Claude Code son la vía directa.
📄 ¿Quieres entender cómo funciona telepizza.es por dentro (plataforma, endpoints, sesión, precios por tienda, puntos)? Está todo en
docs/TELEPIZZA_INTERNALS.md.
🍕 Herramientas
Tool | Qué hace |
| Inicia sesión y devuelve el estado de la cuenta |
| Direcciones de entrega guardadas en la cuenta |
| Fija tienda/dirección en sesión (necesario para precios); admite |
| Busca tiendas cercanas a una dirección libre (geocodifica con Nominatim/OSM) |
| Cambia a modo recoger (takeaway) para una tienda (id de |
| Horario semanal de reparto de las tiendas cercanas a una dirección |
| Franjas de entrega disponibles hoy para la dirección guardada |
| Info oficial de alérgenos (PDF autorizado + 14 alérgenos EU + leyenda); filtra por producto |
| Carta con precios por categoría: |
| Búsqueda de productos en toda la carta |
| Tamaños, masas, bordes e ingredientes de un producto |
| Promociones vigentes |
| Condiciones completas de una promoción |
| Puntos MiTelepi (disponibles/pendientes/canjeados) y movimientos |
| Catálogo de canjes: a qué equivalen tus puntos (puntos + precio + canal) |
| Carrito actual |
| Pedidos anteriores (id, fecha, artículos) |
| Detalle de un pedido: fecha, envío, pago y totales |
| Estado de sesión y tienda: abierta/cerrada, próxima franja, horario de hoy |
✍️ Herramientas de escritura (sin coste, pero modifican tu cuenta)
Tool | Qué hace |
| Añade un producto al carrito real ( |
| Llena el carrito con un pedido anterior |
| Quita una línea del carrito por su |
| Vacía el carrito (verifica que quedó vacío o lanza error) |
| Aplica/quita un código promocional en el carrito |
| Marca/desmarca un pedido como favorito |
Ninguna de ellas paga ni confirma pedidos — el checkout no existe en este MCP — pero sí modifican el estado real de tu cuenta.
🔓 Permisos en Claude Code: lectura sin prompts, escritura con confirmación
Por defecto Claude Code pide permiso en cada llamada a una tool MCP. Para usar el servidor con fluidez, añade a tu settings.json (~/.claude/settings.json global o .claude/settings.json del proyecto) una allowlist solo con las herramientas de lectura:
{
"permissions": {
"allow": [
"mcp__telepizza__status",
"mcp__telepizza__login",
"mcp__telepizza__list_saved_addresses",
"mcp__telepizza__set_delivery_address",
"mcp__telepizza__find_stores",
"mcp__telepizza__set_pickup_store",
"mcp__telepizza__get_allergens",
"mcp__telepizza__get_store_schedule",
"mcp__telepizza__get_delivery_slots",
"mcp__telepizza__get_menu",
"mcp__telepizza__search_products",
"mcp__telepizza__get_product_details",
"mcp__telepizza__get_offers",
"mcp__telepizza__get_offer_details",
"mcp__telepizza__get_loyalty_status",
"mcp__telepizza__get_loyalty_rewards",
"mcp__telepizza__get_cart",
"mcp__telepizza__get_order_history",
"mcp__telepizza__get_order_details"
]
}
}⚠️ Aviso de seguridad
No añadas
mcp__telepizzaa secas (el servidor entero): eso auto-aprobaría también las herramientas de escritura.Las herramientas
WRITE(add_to_cart,reorder,remove_from_cart,clear_cart,apply_coupon,remove_coupon,toggle_favorite_order) deben quedarse fuera de la allowlist para que Claude te pida confirmación cada vez: modifican el carrito y los favoritos de tu cuenta real. No pueden gastar dinero (no hay checkout), pero un carrito lleno por error acaba en sorpresas si luego rematas el pedido a mano.Estas herramientas usan tus credenciales reales de telepizza.es; concede permisos solo en máquinas de confianza.
🎁 Puntos MiTelepi
get_loyalty_statuste dice cuántos puntos tienes (disponibles, pendientes de verificar y canjeados) y sus movimientos con caducidades.get_loyalty_rewardslista el catálogo de canjes: cada recompensa con su coste en puntos, el precio resultante y el canal (a domicilio o recoger). Ejemplo: "Pizza mediana 5 ingredientes → 1.600 puntos + 9,95€ a domicilio".Cómo se usan: el canje se materializa al hacer un pedido — con puntos suficientes, la promoción aparece disponible en el flujo de ofertas/carrito de la web o la app (máximo 3 canjes distintos por pedido). Este MCP no confirma pedidos, así que el canje se remata en la web/app.
💡 Los puntos caducan (los movimientos de
get_loyalty_statuslo muestran): revisa el saldo de vez en cuando.
⚕️ Alérgenos (léelo)
get_allergens devuelve siempre el PDF oficial de alérgenos de Telepizza, los 14 alérgenos EU y la leyenda (● presente / ○ puede estar presente). El parseo por producto es orientativo y requiere el extra pip install 'mcp-telepizza[allergens]' (usa pdfplumber).
⚠️ No certifica que un producto sea apto. Las cocinas de Telepizza manipulan los 14 alérgenos (contaminación cruzada). Ante una alergia real, consulta el PDF oficial y confirma en tienda; no te fíes de una respuesta automática.
📝 Notas
🕐 Con la tienda cerrada el sitio no permite fijar tienda: la carta se devuelve sin precios,
statuste dice el horario de hoy, yget_delivery_slots/get_offer_detailsreportan la indisponibilidad con el mensaje del sitio.⚡ Carta y ofertas se cachean 5 minutos por proceso para no machacar la web.
🔁 Si la sesión caduca a mitad de conversación, el cliente reloguea solo.
💾 La sesión se guarda en
~/.cache/mcp-telepizza/(permisos600) para no reloguear en cada arranque; los precios y el carrito son numéricos (euros comofloat).🔐 Las credenciales viven solo en tu
.envlocal (ignorado por git) y solo se envían a telepizza.es.🧪 Los tests corren offline contra fixtures HTML sanitizadas (sin datos personales) capturadas del sitio real; el CI de GitHub Actions no necesita credenciales.
🧱 Si Telepizza cambia el frontal, los parsers pueden necesitar ajustes (los tests avisan).
⚖️ Aviso
Proyecto personal, sin afiliación alguna con Telepizza. Automatiza el acceso a tu propia cuenta con tus propias credenciales, igual que lo haría tu navegador; revisa los términos de uso del sitio y úsalo con moderación. El software se ofrece tal cual, sin garantías (ver LICENSE).
🍕 Hecho con hambre y un poco de ingeniería inversa.
This server cannot be deployed
Maintenance
Related MCP Connectors
- mcpOAuthcom.zomato
An MCP server that exposes functionalities to use Zomato's services.
Unofficial read-only MCP server for VeryChic hotel offers
Unlock the power of food transparency with our Open Food Facts MCP server. Easily look up any food
Read-only MCP server for ClassQuill, a tutoring-business-management platform.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for managing Yazio user & nutrition data (unofficial)15125 npm61MIT
- AlicenseNot gradedqualityAmaintenanceUnofficial MCP server that exposes Fitatu account operations as tools for inspecting and updating your meal plan.5MIT
- AlicenseBqualityCmaintenanceUnofficial read-only MCP server to log into Kanpla and read canteen menus using your account credentials.38 npmMIT
- AlicenseAqualityAmaintenanceMCP server for browsing Glovo stores, menus, products, and managing a basket via API calls without checkout or payment.273MIT