Skip to main content
Glama
lumile

LumbreTravel MCP Server

by lumile

add_activities

Add activities to travel programs by specifying dates, times, services, hotels, guides, vehicles, and passengers. Ensures all referenced entities exist before creation.

Instructions

Crea actividades asociadas a un programa. Es importante que los servicios, hoteles, guías, vehículos y extras ya existan

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
programIdYesID del programa
activitiesYesLista de actividades a agregar

Implementation Reference

  • Handler implementation for the 'add_activities' tool. It processes input arguments, formats dates using formatDate utility, calls the ApiService.addActivities method, and returns a formatted success response.
    case 'add_activities': {
      const { programId, activities } = args
      activities.forEach((activity: any) => {
        activity.date = formatDate(activity.date)
      })
      const program = await this.apiService.addActivities({ programId, activities })
    
      return {
        content: [{
          type: 'text',
          text: `Actividades agregadas exitosamente al programa.\n\nDetalles del programa actualizado:\n${JSON.stringify(program, null, 2)}`
        }]
      }
    }
  • Tool schema definition including name, description, and detailed inputSchema for validating 'add_activities' tool parameters.
    {
      name: 'add_activities',
      description: 'Crea actividades asociadas a un programa.  Es importante que los servicios, hoteles, guías, vehículos y extras ya existan',
      inputSchema: {
        type: 'object',
        properties: {
          programId: {
            type: 'string',
            description: 'ID del programa'
          },
          activities: {
            type: 'array',
            description: 'Lista de actividades a agregar',
            items: {
              type: 'object',
              properties: {
                primaryPassenger: {
                  type: 'string',
                  description: 'ID del pasajero principal, si no se especifica se asume que el primer pasajero es el principal.  Siempre se debe especificar el pasajero principal.'
                },
                passengers: {
                  type: 'array',
                  description: 'Lista de pasajeros a asociar a la actividad, es importante que los pasajeros ya existan',
                  items: {
                    type: 'object',
                    properties: {
                      id: { type: 'string' },
                      name: { type: 'string' }
                    },
                    required: ['id', 'name']
                  }
                },
                date: {
                  type: 'string',
                  description: 'Fecha de la actividad (DD-MM-YYYY), debe ser una fecha entre la fecha de inicio y fin del programa'
                },
                hour: {
                  type: 'string',
                  description: 'Hora de la actividad (HH:mm)'
                },
                service: {
                  type: 'object',
                  description: 'Servicio a asociar a la actividad, es importante que el servicio ya exista',
                  properties: {
                    id: { type: 'string' },
                    name: { type: 'string' }
                  },
                  required: ['id', 'name']
                },
                hotel: {
                  type: 'object',
                  description: 'Hotel a asociar a la actividad, es importante que el hotel ya exista',
                  properties: {
                    id: { type: 'string' },
                    name: { type: 'string' }
                  },
                  required: ['id', 'name']
                },
                leader: {
                  type: 'object',
                  description: 'Guía a asociar a la actividad, es importante que el guía ya exista',
                  properties: {
                    id: { type: 'string' },
                    name: { type: 'string' }
                  },
                  required: ['id', 'name']
                },
                vehicle: {
                  type: 'object',
                  description: 'Vehículo a asociar a la actividad, es importante que el vehículo ya exista',
                  properties: {
                    id: { type: 'string' },
                    name: { type: 'string' }
                  },
                  required: ['id', 'name']
                },
                includes: {
                  type: 'array',
                  description: 'Lista de extras o incluídos a asociar a la actividad, es importante que los extras ya existan',
                  items: {
                    type: 'object',
                    properties: {
                      id: { type: 'string' },
                      name: { type: 'string' }
                    }
                  }
                },
                servicelanguage: {
                  type: 'object',
                  description: 'Idioma en el que se va a prestar el servicio, si no se especifica se mantiene el idioma actual. Es importante que el idioma ya exista',
                  properties: {
                    id: { type: 'string' },
                    name: { type: 'string' }
                  },
                  required: ['id', 'name']
                },
                code: {
                  type: 'string',
                  description: 'Código de la actividad'
                },
                itinerary: {
                  type: 'string',
                  description: 'Itinerario de la actividad'
                },
                news: {
                  type: 'string',
                  description: 'Noticias de la actividad'
                }
              },
              required: ['date', 'hour', 'primaryPassenger']
            }
          }
        },
        required: ['programId', 'activities']
      }
  • Helper method in ApiService that makes the HTTP POST request to the backend API endpoint to add activities to a program.
    async addActivities (data: {
      programId: string
      activities: Array<{
        date: string
        hour: string
        service?: {
          id: string
          name: string
        }
        hotel?: {
          id: string
          name: string
        }
        leader?: {
          id: string
          name: string
        }
        vehicle?: {
          id: string
          name: string
        }
        primaryPassenger: string
        passengers: Array<{
          id: string
          name: string
        }>
        includes?: Array<{
          id: string
          name: string
        }>
        servicelanguage?: {
          id: string
          name: string
        }
        code?: string
        itinerary?: string
        news?: string
      }>
    }) {
      const headers = await this.getHeaders()
      const response = await fetch(`${API_CONFIG.baseUrl}/integrations/mcp/programs/activity/add`, {
        method: 'POST',
        headers: { ...headers, 'Content-Type': 'application/json' },
        body: JSON.stringify(data)
      })
      return await this.handleResponse<any>(response)
    }
  • src/index.ts:38-41 (registration)
    Registration of tool handlers on the MCP server: listTools for tool schemas and callTool for executing tools like 'add_activities'.
    this.server.setRequestHandler(
      ListToolsRequestSchema,
      async () => this.toolsHandler.listTools()
    )

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lumile/lumbretravel-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server