simsima-connectivity
Simsima Connectivity es un servidor MCP público que expone el catálogo de eSIM de viaje de Simsima a agentes de IA. Proporciona acceso de solo lectura a listas de destinos, búsqueda de planes, recomendaciones y enlaces de pago con atribución a través de un endpoint HTTP transmisible.
Documentación
Simsima — planes eSIM de viaje en Claude
En Claude: directorio de conectores · Sitio web: simsima.io · Endpoint: https://mcp.simsima.io/mcp (HTTP Streamable) · Registro: io.github.Willyfab/simsima-connectivity
Simsima vende eSIM de viaje prepagadas para unos 190 países, regiones y planes mundiales. Este conector permite a Claude, o a cualquier cliente MCP, consultar ese catálogo mientras planificas un viaje: qué planes existen para un destino, cuánto cuestan, si un plan regional cubre todos los países de tu ruta, qué redes locales utiliza y qué plan se ajusta a la duración de tu estancia. Cuando hayas elegido uno, te da el enlace a ese plan en simsima.io, donde completas la compra tú mismo.
Funciona en los 26 idiomas de simsima.io, con precios en la moneda correspondiente. No necesita cuenta ni inicio de sesión, y solo lee el catálogo público.
Añadirlo a Claude
Simsima está listado en el directorio de conectores de Claude: abre claude.ai/directory/simsima y conéctalo. No se requiere cuenta ni autenticación.
También puedes añadirlo manualmente: en Claude (web, escritorio o móvil), abre Configuración › Conectores,
elige Añadir conector personalizado e introduce https://mcp.simsima.io/mcp.
En Claude Code:
claude mcp add --transport http simsima https://mcp.simsima.io/mcp
Qué puedes preguntar
- "Voy a pasar 10 días en Japón y uso mucho mapas y redes sociales. ¿Qué eSIM debería llevar?"
- "¿Funciona la eSIM de Europa en Suiza y en el Reino Unido?"
- "Compara planes ilimitados para Tailandia durante dos semanas, por menos de 30 $."
- "¿Qué redes móviles utiliza la eSIM de Simsima para Brasil y puedo recargarla?"
- "Dame el enlace para comprar el plan de 5 GB y 7 días para Italia."
Herramientas
Todas las herramientas son de solo lectura.
| Herramienta | Qué hace |
|---|---|
list_destinations | Destinos cubiertos (países, regiones, global), con el precio de entrada y la URL del producto de cada uno. |
search_plans | Planes para un destino, primero los más baratos, filtrados por precio, datos, validez o datos ilimitados. |
get_plan | Un plan por su sku. |
recommend_plan | Mejor(es) plan(es) para un viaje, dada su duración en días y uso ligero, medio o intensivo. |
check_coverage | Si el plan de un destino cubre un país determinado (nombre o código ISO), con el plan de país independiente como alternativa. |
get_destination_info | Países cubiertos, operadores móviles, disponibilidad de recarga y precio de entrada para un destino. |
create_checkout_link | Enlace a la página de un plan en simsima.io, con el plan preseleccionado (dado solo un destino, la página del destino). La herramienta no realiza ningún pedido ni pago: la compra se realiza en el sitio web. |
Datos y privacidad
El servidor nunca recibe tu conversación, solo los parámetros que Claude pasa a una herramienta. Por
cada llamada registra el nombre de la herramienta, los parámetros de búsqueda (destino, plan, duración del viaje, nivel
de uso, idioma), el tipo de cliente leído del User-Agent HTTP (por ejemplo, "Claude") y el
país derivado de la dirección IP, para medir el uso del servicio. Estos eventos van a
PostHog, alojado en la UE. La dirección IP en sí solo se usa en memoria para limitar las tasas de solicitudes y
nunca se almacena. Los enlaces entregados llevan parámetros utm_* que nombran el tipo de cliente, para que una compra
pueda atribuirse al conector.
Política de privacidad completa: simsima.io/en/privacy · Términos: simsima.io/en/terms
Soporte
¿Preguntas o problemas?: support@simsima.io.
Para desarrolladores
Comprobación de estado: GET https://mcp.simsima.io/health.
Fuente de datos
Lee el feed web público ${SIMSIMA_FEED_BASE}/{locale}/agent/catalog (almacenado en caché ~15 min).
Cada herramienta acepta un locale entre los 26 idiomas del sitio (por defecto en). Establece el idioma de
las URL de producto y la moneda de los precios (USD en inglés, EUR en francés, JPY en japonés…); los slugs
de destino son los mismos en todos los idiomas, y check_coverage lee los nombres de países en el idioma y
escritura del usuario ("Kroatien", "クロアチア").
Las URL de producto provienen directamente del feed → siempre válidas (cero 404). Sin base de datos, sin llamadas de backend.
Ese feed se construye a partir del catálogo vendible de Simsima, la misma fuente que leen el sitio web y el feed de Google Shopping. Así que lo que responde este servidor es lo que el sitio realmente vende: un plan por (destino, datos, duración), planes ilimitados resueltos a través de la cascada de uso justo del sitio, y el precio mínimo de pago ya aplicado.
La cobertura y los operadores móviles viajan en el bloque destinations del feed, una vez por destino
en lugar de en cada plan (solo la zona de Europa lleva ~40 códigos de país). Los operadores se listan
solo para destinos de un solo país: en una zona, las redes de cuarenta países mezcladas no dirían
nada útil.
Entorno
-
SIMSIMA_FEED_BASE(por defectohttps://simsima.io) -
PORT(por defecto 8080) -
RATE_LIMIT_RPM(por defecto 60) — por IP que llama. Depende detrust proxy: sin él, cada llamador comparte la dirección del proxy y el límite se convierte en un tope global que un solo escáner agota. -
RATE_LIMIT_RPM_ANTHROPIC(por defecto 1200) — por IP que llama dentro del rango de salida de Anthropic160.79.104.0/21, de donde provienen todas las llamadas del conector de claude.ai. Un puñado de esas direcciones transporta el tráfico de todos los usuarios de Claude a la vez; con el límite ordinario por llamador, unas pocas conversaciones simultáneas harían que todos se vieran limitados. -
POSTHOG_KEY(opcional) — clave de API del proyecto PostHog. Cuando se establece, el servidor emite un eventomcp_tool_callpor llamada de herramienta, que llevaresultCount,feedStaley unfailureReasonnombrado cuando una llamada vuelve vacía, además de un evento dedicadomcp_checkout_linkcuando se entrega un enlace de pago. Ausente → telemetría desactivada (sin operación).Cada evento también lleva de dónde provino la llamada, leído una vez por solicitud de las cabeceras:
client(claude/openai/cursor/vscode/bot/script/unknown), eluserAgentcrudo, ycountry. El User-Agent lo envía el cliente MCP en lugar de escribirlo el modelo, lo que lo convierte en la única señal de origen que un llamador no elige por sí mismo. También es a lo que se atribuye el enlace de pago (source=agent:<client>,utm_source=<client>) y de lo que se construye eldistinct_idde PostHog (mcp:<client>). Un argumento anterioragentSource, rellenado por el modelo a partir de la conversación, se ha eliminado: llevaba fragmentos de conversación y no identificaba a nadie. La IP del llamador también se resuelve (CF-Connecting-IP, luegoX-Forwarded-For, luegoreq.ip) y se usa solo para medir solicitudes; nunca llega a PostHog. -
POSTHOG_HOST(opcional, por defectohttps://eu.i.posthog.com) — host de ingesta de PostHog (coincide con la aplicación web).
Desarrollo local
cd mcp
npm install
npm test # jest
npm run dev # ts-node-dev on :8080
curl localhost:8080/health
Despliegue
Aplicación Coolify, contexto de compilación Docker = mcp/, subdominio mcp.simsima.io. Auto-despliegue al hacer push a main.
Establece las variables de entorno SIMSIMA_FEED_BASE, PORT, RATE_LIMIT_RPM.
Publicación en el Registro MCP (Fase 1b)
Los metadatos viven en server.json (espacio de nombres io.github.Willyfab/simsima-connectivity,
remoto streamable-http en https://mcp.simsima.io/mcp). El descubrimiento también se insinúa desde
web/public/llms.txt + llms-full.txt.
Para publicar (necesita la CLI mcp-publisher + autenticación de GitHub como propietario del repositorio):
cd mcp
# install: see github.com/modelcontextprotocol/registry (release binary or `go install`)
mcp-publisher login github # OIDC auth for the io.github.Willyfab/* namespace
mcp-publisher publish # validates server.json and publishes
- Incrementa
versionenserver.jsonen cada cambio significativo y vuelve a ejecutarpublish. - Para usar un espacio de nombres
com.simsima/connectivityde marca, verifica la propiedad del dominio desimsima.iomediante un registro DNS TXT, luego actualizanameenserver.json(la URL remotamcp.simsima.ioya está en el dominio verificado).