Skip to main content
Glama
forgemeshlabs

Travel Assistant MCP

DO NOT USE THIS REPO! READ TRAVEL-REPO-MAP.md ASAP

Travel Assistant MCP

No-key travel assistant for Claude Desktop, Codex-style agent workflows, Hermes, and other MCP clients. It helps agents look up airports, compare routes, explain travel timing, and build external booking links without requiring a travel API account.

Features

  • Look up airport metadata by IATA code

  • Compare alternate origin and destination airport routes

  • Explain booking windows, airport arrival timing, layovers, and seasonal travel factors

  • Build external booking links for selected routes

  • Run locally with no API key or account setup

  • Disclose commission-eligible links in tool output

Related MCP server: Flight + Stay Search MCP

Install

npm install -g @forgemeshlabs/travel-assistant-mcp

Claude Desktop

Add this to your Claude Desktop claude_desktop_config.json:

{
  "mcpServers": {
    "travel-assistant": {
      "command": "npx",
      "args": ["-y", "@forgemeshlabs/travel-assistant-mcp"]
    }
  }
}

Restart Claude Desktop after saving the config, then ask Claude to plan or compare travel routes.

Codex, Hermes, and other MCP-capable agent runtimes can use the same server command:

npx -y @forgemeshlabs/travel-assistant-mcp

Local Run

npm run build
node dist/index.js

Tools

  • search_travel_options

  • get_airport_info

  • compare_routes

  • build_booking_link

  • explain_travel_timing

Public Data Boundary

This package uses generic language for provider integrations. Tool responses may include external booking links and commission-eligible links. Booking completion happens with booking partners outside this MCP server.

Available Tools

5 tools
compare_routesA
Read-onlyIdempotent

Compare two or more airport route pairs side by side. Use when the user is choosing between alternate origins, destinations, or airports; use search_travel_options for one dated route and get_airport_info for a single airport lookup. Read-only, no authentication, no booking side effects. Responses may include commission-eligible external booking links for each route.

ParametersJSON Schema
NameRequiredDescriptionDefault
routesYesArray of route pairs to compare. Minimum 1, typically 2-5.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond annotations (readOnlyHint, destructiveHint, idempotentHint, openWorldHint), description adds 'Read-only, no authentication, no booking side effects' and mentions 'responses may include commission-eligible external booking links'. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with main action, then usage guidelines, then behavioral notes. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema, but description hints at return content (external booking links). For a comparison tool, this sets reasonable expectations. Could mention return format (text/table) but acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema has 100% description coverage for the single parameter 'routes' with nested objects. Description does not add much beyond schema, but the phrase 'two or more' helps clarify minimum length. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Compare two or more airport route pairs side by side' with specific verb and resource. It distinguishes from siblings by naming when to use search_travel_options (one dated route) and get_airport_info (single airport lookup).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use this tool ('choosing between alternate origins, destinations, or airports') and when to use alternatives (search_travel_options for one dated route, get_airport_info for single airport).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

explain_travel_timingA
Read-onlyIdempotent

Explain general travel timing and logistics, including booking windows, airport arrival timing, layovers, and seasonal considerations. Use for advice questions like when to book or how early to arrive; use search_travel_options when the user wants route-specific flight search. Read-only, no authentication, no external booking link, and no booking side effects.

ParametersJSON Schema
NameRequiredDescriptionDefault
originNoOrigin IATA code. Optional — used to determine if route is international.
destinationNoDestination IATA code. Optional — used to determine if route is international.

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description discloses read-only nature, no authentication, no booking link, and no booking side effects. Annotations already declare readOnlyHint, destructiveHint, and idempotentHint true, and the description adds context consistent with annotations, no contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is concise—three sentences covering purpose, usage, and behavioral traits. No wasted words; front-loaded with the core action and scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a lightweight advice tool with no output schema, the description covers all necessary context: purpose, parameters, when to use, behavioral properties. Complete and sufficient for an AI agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% (both parameters have schema descriptions), so baseline is 3. The description does not add further meaning beyond schema; it only mentions parameters are 'optional' and used to determine route internationality, which is already in schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool explains travel timing and logistics, listing specific topics (booking windows, airport arrival timing, layovers, seasonal considerations). It distinguishes itself from the sibling 'search_travel_options' by specifying use for advice questions vs. route-specific search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (advice questions about booking or arrival timing) and when not to use (route-specific flight search, which is covered by 'search_travel_options'). This provides clear guidance on tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_airport_infoA
Read-onlyIdempotent

Look up metadata for one airport by IATA code. Use to validate or explain a single airport code before route planning; use search_travel_options for an actual trip search and compare_routes for multiple origin-destination pairs. Read-only, no authentication, no external booking links, and no booking side effects.

ParametersJSON Schema
NameRequiredDescriptionDefault
codeYesThree-letter IATA airport code (e.g. 'SFO'). Case-insensitive.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, destructiveHint, idempotentHint. Description adds valuable context: 'Read-only, no authentication, no external booking links, and no booking side effects,' reinforcing and extending beyond annotations without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is two sentences, each serving a distinct purpose: first states functionality, second gives usage guidelines and behavioral traits. No waste, front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has no output schema, yet description only says 'metadata' without detailing what fields are returned. While the tool is simple and annotations cover safety, the description could be more complete by specifying the structure of the response (e.g., airport name, city, country).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter fully described in schema ('Three-letter IATA airport code (e.g. 'SFO'). Case-insensitive.'). Description adds no further semantic details, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Look up metadata for one airport by IATA code' with a specific verb and resource. It distinguishes from sibling tools by explicitly mentioning alternatives like search_travel_options and compare_routes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides explicit when-to-use ('to validate or explain a single airport code before route planning') and when-not-to-use with named alternatives ('use search_travel_options for an actual trip search and compare_routes for multiple origin-destination pairs').

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_travel_optionsA
Read-onlyIdempotent

Primary travel search workflow for one origin-destination airport pair. Use when the user wants flight/trip options for a specific route; use compare_routes for multiple routes, build_booking_link only when route details are already known, and get_airport_info only to validate one airport. Read-only, no authentication, no booking side effects. return_date is optional; omit it for one-way trips. Responses include route metadata and may include commission-eligible external booking links.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesOrigin airport IATA code (e.g. 'LAX', 'JFK'). Case-insensitive.
currencyNoISO 4217 currency code (default: USD). Used in booking link parameters.
destinationYesDestination airport IATA code (e.g. 'LHR', 'NRT'). Case-insensitive.
return_dateNoReturn date in YYYY-MM-DD format. Omit for one-way trips.
departure_dateNoDeparture date in YYYY-MM-DD format. Optional — omit for open date searches.

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, non-destructive, idempotent, and openWorld. Description adds 'no authentication, no booking side effects' and mentions response includes route metadata and commission-eligible links, going beyond annotations to clarify safety and output characteristics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four sentences, no wasted words, front-loaded with purpose and usage, then parameter guidance and behavioral traits. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 5 parameters, no output schema, but rich annotations, the description covers purpose, usage, parameter hints, behavioral safety, and response hints. Complete for an AI agent to decide when and how to invoke.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with well-described parameters. Description adds context that currency is used in booking link parameters and reinforces return_date optionality, providing slight added value over the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Primary travel search workflow for one origin-destination airport pair' and distinguishes from siblings by naming compare_routes for multiple routes, build_booking_link for known routes, and get_airport_info for validation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly tells when to use this tool ('when the user wants flight/trip options for a specific route') and when to use alternatives, plus clarifies return_date optionality for one-way trips.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 5 tool updates
    • Changedbuild_booking_link5 fields changed
      • changedInput schema / properties / currency / description
        Previous value: -"Currency code"New value: +"ISO 4217 currency code (default: USD)."
      • changedInput schema / properties / departure_date / description
        Previous value: -"Departure date YYYY-MM-DD"New value: +"Departure date in YYYY-MM-DD format. Optional."
      • changedInput schema / properties / destination / description
        Previous value: -"Destination airport code"New value: +"Destination IATA code (e.g. 'CDG'). Case-insensitive."
      • changedInput schema / properties / origin / description
        Previous value: -"Origin airport code"New value: +"Origin IATA code (e.g. 'IAH'). Case-insensitive."
      • changedInput schema / properties / return_date / description
        Previous value: -"Return date YYYY-MM-DD"New value: +"Return date in YYYY-MM-DD format. Optional — omit for one-way."
    • Changedcompare_routes3 fields changed
      • addedInput schema / properties / routes / description
        Added value: +"Array of route pairs to compare. Minimum 1, typically 2-5."
      • addedInput schema / properties / routes / items / properties / destination / description
        Added value: +"Destination IATA code"
      • addedInput schema / properties / routes / items / properties / origin / description
        Added value: +"Origin IATA code"
    • Changedexplain_travel_timing2 fields changed
      • changedInput schema / properties / destination / description
        Previous value: -"Destination airport code"New value: +"Destination IATA code. Optional — used to determine if route is international."
      • changedInput schema / properties / origin / description
        Previous value: -"Origin airport code"New value: +"Origin IATA code. Optional — used to determine if route is international."
    • Changedget_airport_info1 field changed
      • changedInput schema / properties / code / description
        Previous value: -"IATA airport code"New value: +"Three-letter IATA airport code (e.g. 'SFO'). Case-insensitive."
    • Changedsearch_travel_options5 fields changed
      • changedInput schema / properties / currency / description
        Previous value: -"Currency code"New value: +"ISO 4217 currency code (default: USD). Used in booking link parameters."
      • changedInput schema / properties / departure_date / description
        Previous value: -"Departure date YYYY-MM-DD"New value: +"Departure date in YYYY-MM-DD format. Optional — omit for open date searches."
      • changedInput schema / properties / destination / description
        Previous value: -"Destination airport IATA code"New value: +"Destination airport IATA code (e.g. 'LHR', 'NRT'). Case-insensitive."
      • changedInput schema / properties / origin / description
        Previous value: -"Origin airport IATA code"New value: +"Origin airport IATA code (e.g. 'LAX', 'JFK'). Case-insensitive."
      • changedInput schema / properties / return_date / description
        Previous value: -"Return date YYYY-MM-DD"New value: +"Return date in YYYY-MM-DD format. Omit for one-way trips."
  2. 5 tool updatesv0.1.0
    • First observedbuild_booking_link
    • First observedcompare_routes
    • First observedexplain_travel_timing
    • First observedget_airport_info
    • First observedsearch_travel_options

TDQS

A4.7/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose with explicit usage guidance. Descriptions include what to use for specific scenarios and what not to use, eliminating ambiguity.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores (e.g., build_booking_link, compare_routes), making them predictable and easy to distinguish.

Tool Count5/5

Five tools cover the essential travel assistance tasks: search, compare, airport info, booking link generation, and general advice. The count is well-scoped without redundancy.

Completeness5/5

The tool set covers the full planning workflow: validate airports, search routes, compare alternatives, get timing advice, and generate booking links. No obvious gaps for a read-only travel assistant.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

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/forgemeshlabs/travel-mcp'

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