Skip to main content
Glama
AkekaratP

Flight + Stay Search MCP

by AkekaratP

search_multi_city

Search for multi-city flight itineraries with multiple segments, specifying cabin class, passenger count, and connection preferences.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
segmentsYesFlight segments for multi-city trip
cabinClassYesCabin class
adultsNoNumber of adult passengers
maxConnectionsNoMaximum number of connections

Implementation Reference

  • The handler function for the 'search_multi_city' tool. It constructs flight slices from the provided segments and creates an offer request using the DuffelClient with a 30-second timeout.
    async (params: MultiCityRequest) => {
      try {
        const slices = [];
        
        // Build slices from segments
        for (const segment of params.segments) {
          slices.push(flightClient.createSlice(
            segment.origin,
            segment.destination,
            segment.departureDate
          ));
        }
        
        // Create the offer request with a longer timeout for multi-city
        const response = await flightClient.createOfferRequest({
          slices,
          cabin_class: params.cabinClass,
          adult_count: params.adults,
          max_connections: params.maxConnections,
          return_offers: true,
          supplier_timeout: 30000 // 30 seconds
        });
        
        return {
          content: [
            {
              type: 'text',
              text: JSON.stringify(response, null, 2)
            }
          ]
        };
        
      } catch (error) {
        console.error(`Error searching multi-city flights: ${error}`);
        throw error;
      }
    }
  • src/server.ts:140-180 (registration)
    Registration of the 'search_multi_city' tool on the MCP server, specifying the tool name, input schema, and handler function.
    server.tool(
      'search_multi_city',
      multiCityRequestSchema.shape,
      async (params: MultiCityRequest) => {
        try {
          const slices = [];
          
          // Build slices from segments
          for (const segment of params.segments) {
            slices.push(flightClient.createSlice(
              segment.origin,
              segment.destination,
              segment.departureDate
            ));
          }
          
          // Create the offer request with a longer timeout for multi-city
          const response = await flightClient.createOfferRequest({
            slices,
            cabin_class: params.cabinClass,
            adult_count: params.adults,
            max_connections: params.maxConnections,
            return_offers: true,
            supplier_timeout: 30000 // 30 seconds
          });
          
          return {
            content: [
              {
                type: 'text',
                text: JSON.stringify(response, null, 2)
              }
            ]
          };
          
        } catch (error) {
          console.error(`Error searching multi-city flights: ${error}`);
          throw error;
        }
      }
    );
  • Zod schema defining the input parameters for the 'search_multi_city' tool, including segments, cabin class, adults, and max connections.
    export const multiCityRequestSchema = z.object({
      segments: z.array(flightSegmentSchema).min(2).describe('Flight segments for multi-city trip'),
      cabinClass: z.enum(['economy', 'premium_economy', 'business', 'first']).describe('Cabin class'),
      adults: z.number().min(1).default(1).describe('Number of adult passengers'),
      maxConnections: z.number().optional().describe('Maximum number of connections')
    });
    
    export type MultiCityRequest = z.infer<typeof multiCityRequestSchema>;

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/AkekaratP/flights-mcp-ts'

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