Skip to content

Latest commit

 

History

History
208 lines (158 loc) · 7.39 KB

File metadata and controls

208 lines (158 loc) · 7.39 KB

MCP Logo MCP Emtrafesa

Un servidor del Protocolo de Contexto de Modelo (MCP) para acceder a los servicios de transporte de autobuses de Emtrafesa en Perú

CI codecov NPM Version TypeScript Bun MCP License: MIT

MCP Emtrafesa es un servidor del Protocolo de Contexto de Modelo que proporciona a los asistentes de IA acceso fluido al sistema de transporte de autobuses Emtrafesa de Perú. Consulta terminales, horarios, boletos y preguntas frecuentes a través de herramientas MCP estandarizadas.


¿Qué puedes hacer con este MCP?

  • Buscar terminales de buses en todo el Perú
  • Consultar horarios entre cualquier par de ciudades
  • Ver tus boletos comprados usando tu DNI y correo electrónico
  • Descargar tu boleto en PDF para imprimir o compartir
  • Obtener respuestas a preguntas frecuentes

Inicio Rápido

Opción 1: Claude Desktop (Recomendado)

Abre el archivo de configuración de Claude Desktop:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Agrega la siguiente entrada:

{
  "mcpServers": {
    "mcp-emtrafesa": {
      "command": "npx",
      "args": ["mcp-emtrafesa@latest"]
    }
  }
}

Reinicia Claude Desktop. Verás un indicador MCP en la esquina inferior derecha del chat cuando el servidor esté conectado.

Opción 2: Clonar y ejecutar localmente

# Clona el repositorio
git clone https://github.com/georgegiosue/mcp-emtrafesa.git
cd mcp-emtrafesa

# Instala las dependencias
bun install

Luego apunta tu cliente MCP al servidor local:

{
  "mcpServers": {
    "mcp-emtrafesa": {
      "command": "bun",
      "args": ["/ruta/absoluta/a/mcp-emtrafesa/src/index.ts"]
    }
  }
}

Tip: Usa el Inspector MCP para depuración: bunx @modelcontextprotocol/inspector bun src/index.ts


Herramientas Disponibles

Herramienta Descripción Parámetros
get-terminals Obtiene todos los terminales de buses del Perú Ninguno
get-arrival-terminals Obtiene terminales de destino para un origen departureTerminalId
get-departure-schedules Obtiene horarios entre dos terminales departureTerminalId, arrivalTerminalId, date?
get-latest-purchased-tickets Busca tus boletos comprados DNI, email
get-ticket-pdf Descarga tu boleto como archivo PDF ticketCode
get-frequently-asked-questions Obtiene preguntas frecuentes del servicio Ninguno

Ejemplos de Uso

Una vez conectado, puedes preguntarle a Claude de forma natural:

  • "¿Qué terminales de buses tiene Emtrafesa?"
  • "¿Qué horarios hay de Chiclayo a Trujillo el 14/07/2025?"
  • "Busca mis boletos con DNI 12345678 y correo usuario@ejemplo.com"
  • "Descarga el PDF del boleto BP01-123456"

Requisitos

  • Bun v1.2.10+ o Node.js v18+
  • Un cliente compatible con MCP (Claude Desktop, etc.)

Estructura del Proyecto

mcp-emtrafesa/
├── src/
│   ├── config/                        # Configuración de API
│   ├── domain/
│   │   ├── models/                    # Interfaces de modelos del dominio
│   │   └── ports/                     # Interfaz del repositorio (contrato)
│   ├── infrastructure/
│   │   ├── http/                      # Implementación del repositorio HTTP
│   │   └── mcp/
│   │       └── tools/
│   │           ├── index.ts           # Descubre y registra las tools automáticamente
│   │           ├── tool.ts            # Interfaz Tool + helper register()
│   │           ├── error.ts           # errorResponse() compartido
│   │           ├── faq/
│   │           │   └── get-frequently-asked-questions/
│   │           │       ├── constants.ts
│   │           │       └── get-frequently-asked-questions.ts
│   │           ├── schedule/
│   │           │   └── get-departure-schedules/
│   │           │       ├── constants.ts
│   │           │       ├── schema.ts
│   │           │       ├── types.ts
│   │           │       └── get-departure-schedules.ts
│   │           ├── terminal/
│   │           │   ├── get-terminals/
│   │           │   │   ├── constants.ts
│   │           │   │   └── get-terminals.ts
│   │           │   └── get-arrival-terminals/
│   │           │       ├── constants.ts
│   │           │       ├── schema.ts
│   │           │       ├── types.ts
│   │           │       └── get-arrival-terminals.ts
│   │           └── ticket/
│   │               ├── get-latest-purchased-tickets/
│   │               │   ├── constants.ts
│   │               │   ├── schema.ts
│   │               │   ├── types.ts
│   │               │   └── get-latest-purchased-tickets.ts
│   │               └── get-ticket-pdf/
│   │                   ├── constants.ts
│   │                   ├── schema.ts
│   │                   ├── types.ts
│   │                   └── get-ticket-pdf.ts
│   ├── shared/                        # Utilidades compartidas
│   └── index.ts                       # Punto de entrada del servidor MCP
├── package.json
└── tsconfig.json

Desarrollo

# Formatear código
bun run format

# Verificar formateo
bunx biome check

Contribuciones

  1. Haz fork del repositorio
  2. Crea una rama de característica (git checkout -b feature/nueva-caracteristica)
  3. Formatea tu código (bun run format)
  4. Confirma tus cambios
  5. Abre un Pull Request

Licencia

Licencia MIT - ver LICENSE para más detalles.


Reconocimientos


Soporte