Rakuten Travel

Busca hoteles y verifica su disponibilidad utilizando la API de Rakuten Travel.

Documentación

Servidor MCP de Rakuten Travel

Un servidor de Model Context Protocol (MCP) que proporciona una interfaz para la API de Rakuten Travel para búsqueda de hoteles y verificación de disponibilidad.

Características

  • Búsqueda de Hoteles: Busca hoteles por ubicación, número de hotel o código de área
  • Búsqueda de Disponibilidad: Encuentra hoteles vacantes con disponibilidad en tiempo real
  • Recurso de Código de Área: Accede a datos jerárquicos de ubicaciones en Japón
  • Seguridad de Tipos: Tipos TypeScript completos con validación Zod
  • Compatible con MCP: Funciona con cualquier cliente compatible con MCP

Requisitos Previos

Instalación

  1. Clona el repositorio:
git clone https://github.com/yourusername/rakuten_travel_mcp.git
cd rakuten_travel_mcp

Uso

Ejecutar el Servidor

  1. Configura tu cliente MCP. (el siguiente ejemplo es para Claude Desktop)
```json
{
    "mcpServers": {
        "rakuten_travel_mcp": {
            "command": "deno",
            "args": [
                "run",
                "--allow-net=app.rakuten.co.jp",
                "--allow-env=APPLICATION_ID",
                "/path/to/rakuten_travel_mcp/serve.ts"
            ],
            "env": {
                "APPLICATION_ID": "<your_application_id>"
            }
        }
    }
}

Herramientas Disponibles

1. Búsqueda de Hoteles (hotel-search)

Busca hoteles usando varios criterios:

Búsqueda por Número de Hotel:

{
  "hotelNo": ["123456", "789012"]
}

Búsqueda por Coordenadas:

{
  "latitude": 35.6762,
  "longitude": 139.6503,
  "searchRadius": 3,
  "datumType": 1
}

Búsqueda por Código de Área:

{
  "largeClassCode": "japan",
  "middleClassCode": "tokyo",
  "smallClassCode": "shibuya"
}

2. Búsqueda de Hoteles Vacantes (vacant-hotel-search)

Busca hoteles disponibles:

{
  "checkinDate": "2024-03-15",
  "checkoutDate": "2024-03-17",
  "rooms": 1,
  "adultNum": 2,
  "largeClassCode": "japan",
  "middleClassCode": "tokyo"
}

Recursos Disponibles

Recurso de Código de Área (config://area_code)

Accede a datos jerárquicos de ubicaciones en Japón:

  • Nivel de país (por ejemplo, "japan")
  • Nivel de prefectura (por ejemplo, "tokyo", "osaka")
  • Nivel de ciudad (por ejemplo, "shibuya", "shinjuku")
  • Nivel de área (distritos detallados)

Desarrollo

Ejecutar Pruebas

# Run all tests
deno task test

# Run tests in watch mode
deno task test:watch

Estructura del Proyecto

rakuten_travel_mcp/
├── serve.ts           # Main MCP server implementation
├── types.ts           # TypeScript types and Zod schemas
├── area_code.json     # Hierarchical location data
├── *.test.ts          # Test files
├── deno.json          # Deno configuration
└── .env              # Environment variables (create this)

Parámetros de la API

Parámetros Comunes

  • hits: Número de resultados por página (1-30, predeterminado: 30)
  • page: Número de página para paginación
  • sort: Orden de clasificación (varias opciones disponibles)

Específicos de Búsqueda de Hoteles

  • hotelNo: Matriz de números de hotel
  • latitude/longitude: Coordenadas para búsqueda geográfica
  • searchRadius: Radio de búsqueda en km (1-3)
  • squeezeCondition: Filtro para hoteles con/sin vacantes
  • hotelType: Filtro por tipo de hotel (0-3)

Específicos de Búsqueda de Hoteles Vacantes

  • checkinDate/checkoutDate: Fechas requeridas (AAAA-MM-DD)
  • rooms: Número de habitaciones (1-5)
  • adultNum: Adultos por habitación (1-5)
  • minCharge/maxCharge: Filtros de rango de precios

Pruebas

El proyecto incluye pruebas completas para:

  • Validación de esquemas
  • Construcción de parámetros de API
  • Procesamiento de respuestas
  • Manejo de errores
  • Tiempos de espera de red

Manejo de Errores

El servidor maneja varios escenarios de error:

  • Parámetros requeridos faltantes
  • Formatos de fecha inválidos
  • Límites de velocidad de la API
  • Tiempos de espera de red
  • Respuestas de API inválidas

Contribuciones

  1. Haz un fork del repositorio
  2. Crea tu rama de características (git checkout -b feature/amazing-feature)
  3. Haz commit de tus cambios (git commit -m 'Add some amazing feature')
  4. Haz push a la rama (git push origin feature/amazing-feature)
  5. Abre una Solicitud de Extracción

Licencia

Este proyecto está licenciado bajo la Licencia MIT - consulta el archivo LICENSE para más detalles.

Agradecimientos