Flight Search

Busca vuelos utilizando el motor de Google Flights de SerpAPI.

Documentación

Servidor MCP de Búsqueda de Vuelos

Un servidor confiable del Protocolo de Contexto de Modelo (MCP) para buscar vuelos utilizando el motor de Google Flights de SerpAPI. Este servidor proporciona capacidades de búsqueda de vuelos en tiempo real tanto para vuelos de ida como de ida y vuelta. Funciona bien con claude ai desktop

✈️ Características

  • Búsqueda de vuelos en tiempo real utilizando Google Flights de SerpAPI
  • Soporte para vuelos de ida y de ida y vuelta
  • Múltiples opciones de vuelo con precios, horarios y detalles de aerolíneas
  • Implementación del protocolo MCP compatible con JSON-RPC 2.0
  • Integración fácil con Claude y otros clientes MCP
  • Manejo robusto de errores y registro de actividades

🚀 Inicio Rápido

Requisitos Previos

  • Python 3.7 o superior
  • Cuenta de SerpAPI y clave de API (Obtén una aquí)
  • Cliente compatible con MCP (Claude, etc.)

Instalación

  1. Clona o descarga el archivo del servidor:
mkdir -p ~/tools/flightsearch
# Copy flight_search_server.py to ~/tools/flightsearch/
  1. Instala las dependencias:
pip install requests
  1. Obtén tu clave de SerpAPI:
    • Regístrate en SerpAPI
    • Obtén tu clave de API desde el panel de control

Configuración

Agrega lo siguiente a la configuración de tu cliente MCP:

{
  "flightsearch": {
    "command": "python3",
    "args": [
      "/path/to/your/tools/flightsearch/flight_search_server.py",
      "--connection_type", 
      "stdio"
    ],
    "env": {
      "SERP_API_KEY": "your_serpapi_key_here"
    }
  }
}

Para Claude Desktop, agrega esto a tu claude_desktop_config.json:

{
  "mcpServers": {
    "flightsearch": {
      "command": "python3",
      "args": [
        "/Users/yourusername/tools/flightsearch/flight_search_server.py",
        "--connection_type", 
        "stdio"
      ],
      "env": {
        "SERP_API_KEY": "your_serpapi_key_here"
      }
    }
  }
}

📖 Uso

Herramientas Disponibles

search_flights

Busca vuelos entre aeropuertos.

Parámetros:

  • origin (obligatorio): Código del aeropuerto de origen (ej., "JFK", "LAX")
  • destination (obligatorio): Código del aeropuerto de destino (ej., "JFK", "LAX")
  • outbound_date (obligatorio): Fecha de salida en formato YYYY-MM-DD
  • return_date (opcional): Fecha de regreso para vuelos de ida y vuelta en formato YYYY-MM-DD

Ejemplos:

# One-way flight
search_flights(origin="JFK", destination="LAX", outbound_date="2025-07-01")

# Round-trip flight  
search_flights(origin="JFK", destination="LAX", outbound_date="2025-07-01", return_date="2025-07-08")

server_status

Verifica si el servidor de búsqueda de vuelos está en funcionamiento.

Parámetros: Ninguno

Respuesta de Ejemplo

{
  "status": "success",
  "origin": "JFK",
  "destination": "LAX", 
  "outbound_date": "2025-07-01",
  "return_date": null,
  "trip_type": "one_way",
  "flights": [
    {
      "price": 199,
      "departure_time": "2025-07-01 08:40",
      "arrival_time": "2025-07-01 11:45", 
      "airline": "Delta",
      "duration": 365,
      "stops": 0
    },
    {
      "price": 204,
      "departure_time": "2025-07-01 09:00",
      "arrival_time": "2025-07-01 12:00",
      "airline": "JetBlue", 
      "duration": 360,
      "stops": 0
    }
  ]
}

🔧 Desarrollo

Ejecución de Pruebas

Prueba el servidor directamente:

# Set environment variable
export SERP_API_KEY="your_api_key"

# Run the server  
python3 flight_search_server.py --connection_type stdio

Pruebas del Protocolo

El servidor implementa JSON-RPC 2.0 y soporta estos métodos:

  • initialize - Inicializa la conexión MCP
  • tools/list - Lista las herramientas disponibles
  • tools/call - Ejecuta una herramienta
  • ping - Verificación de estado
  • notifications/initialized - Notificación de inicialización

Registro de Actividades

El servidor registra en stderr para depuración:

# View logs while running
python3 flight_search_server.py --connection_type stdio 2>debug.log

🐛 Solución de Problemas

Problemas Comunes

1. "API request failed: 400 Client Error"

  • Verifica que tu clave de SerpAPI sea válida
  • Comprueba que los códigos de aeropuerto sean correctos (usa códigos IATA como "JFK", "LAX")
  • Asegúrate de que el formato de fecha sea YYYY-MM-DD

2. "SERP_API_KEY environment variable not set"

  • Asegúrate de que la clave de API esté configurada correctamente en tu configuración MCP
  • Verifica que el nombre de la variable de entorno sea exactamente SERP_API_KEY

3. "JSON-RPC schema validation errors"

  • Reinicia tu cliente MCP para recargar el servidor
  • Comprueba que estás usando la versión más reciente del servidor

4. No se encontraron vuelos

  • Prueba con diferentes códigos de aeropuerto o fechas
  • Algunas rutas pueden no estar disponibles para la fecha seleccionada
  • Consulta la documentación de SerpAPI para aeropuertos compatibles

Modo de Depuración

Habilita el registro de depuración:

# Add to the top of flight_search_server.py
logging.basicConfig(level=logging.DEBUG, stream=sys.stderr)

📝 Limitaciones de la API

  • Límites de tasa de SerpAPI: Consulta tu plan de SerpAPI para conocer los límites de solicitudes
  • Datos de vuelos: Los resultados dependen de la disponibilidad de datos de Google Flights
  • Rango de fechas: Solo fechas futuras (no se pueden buscar vuelos pasados)
  • Códigos de aeropuerto: Deben usarse códigos IATA válidos

🤝 Contribuciones

  1. Haz un fork del repositorio
  2. Crea una rama de características
  3. Realiza tus cambios
  4. Agrega pruebas si corresponde
  5. Envía una solicitud de extracción

Configuración de Desarrollo

# Clone the repo
git clone https://github.com/yourusername/flight-search-mcp.git
cd flight-search-mcp

# Install dependencies
pip install requests

# Run tests
python3 test_mcp_protocol.py
python3 test_flight_search.py

📄 Licencia

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

🙏 Agradecimientos

  • SerpAPI por proporcionar la API de Google Flights
  • Anthropic por la especificación del protocolo MCP
  • La comunidad de código abierto por la inspiración y los comentarios

📞 Soporte


Hecho con ❤️ para la comunidad MCP