Travel Assistant MCP
Provides airport metadata lookup by IATA code, enabling retrieval of airport information based on IATA codes.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Travel Assistant MCPsearch for flights from SFO to JFK on December 20"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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-mcpClaude 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-mcpLocal Run
npm run build
node dist/index.jsTools
search_travel_optionsget_airport_infocompare_routesbuild_booking_linkexplain_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 toolsbuild_booking_linkARead-onlyIdempotent
Generate only an external booking link for an already chosen route. Use after route details are known or after compare_routes/search_travel_options; do not use as the first step when the user still needs search guidance. Read-only, no authentication, no booking completion, and no reservation side effects. The returned link may be commission-eligible and is disclosed in output.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | Origin IATA code (e.g. 'IAH'). Case-insensitive. | |
| currency | No | ISO 4217 currency code (default: USD). | |
| destination | No | Destination IATA code (e.g. 'CDG'). Case-insensitive. | |
| return_date | No | Return date in YYYY-MM-DD format. Optional — omit for one-way. | |
| departure_date | No | Departure date in YYYY-MM-DD format. Optional. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint; description adds commission-eligibility disclosure and confirms no side effects, providing helpful behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences covering purpose, usage, and behavior with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple link-generation tool with 5 fully described parameters and no output schema, the description sufficiently explains the output and side effects; slight room for additional error handling details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add parameter-specific details beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates an external booking link for an already chosen route and distinguishes it from sibling tools like search_travel_options by specifying when not to use it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use after route details are known or after compare_routes/search_travel_options, and warns not to use as the first step. Also notes read-only, no authentication, no booking completion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_routesARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| routes | Yes | Array of route pairs to compare. Minimum 1, typically 2-5. |
TDQS
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.
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.
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.
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.
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.
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_timingARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | No | Origin IATA code. Optional — used to determine if route is international. | |
| destination | No | Destination IATA code. Optional — used to determine if route is international. |
TDQS
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.
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.
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.
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.
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.
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_infoARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Three-letter IATA airport code (e.g. 'SFO'). Case-insensitive. |
TDQS
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.
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.
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.
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.
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.
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_optionsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| origin | Yes | Origin airport IATA code (e.g. 'LAX', 'JFK'). Case-insensitive. | |
| currency | No | ISO 4217 currency code (default: USD). Used in booking link parameters. | |
| destination | Yes | Destination airport IATA code (e.g. 'LHR', 'NRT'). Case-insensitive. | |
| return_date | No | Return date in YYYY-MM-DD format. Omit for one-way trips. | |
| departure_date | No | Departure date in YYYY-MM-DD format. Optional — omit for open date searches. |
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
- Changed
build_booking_link5 fields changed- changed
Input schema / properties / currency / descriptionPrevious value: -"Currency code"New value: +"ISO 4217 currency code (default: USD)." - changed
Input schema / properties / departure_date / descriptionPrevious value: -"Departure date YYYY-MM-DD"New value: +"Departure date in YYYY-MM-DD format. Optional." - changed
Input schema / properties / destination / descriptionPrevious value: -"Destination airport code"New value: +"Destination IATA code (e.g. 'CDG'). Case-insensitive." - changed
Input schema / properties / origin / descriptionPrevious value: -"Origin airport code"New value: +"Origin IATA code (e.g. 'IAH'). Case-insensitive." - changed
Input schema / properties / return_date / descriptionPrevious value: -"Return date YYYY-MM-DD"New value: +"Return date in YYYY-MM-DD format. Optional — omit for one-way."
- Changed
compare_routes3 fields changed- added
Input schema / properties / routes / descriptionAdded value: +"Array of route pairs to compare. Minimum 1, typically 2-5." - added
Input schema / properties / routes / items / properties / destination / descriptionAdded value: +"Destination IATA code" - added
Input schema / properties / routes / items / properties / origin / descriptionAdded value: +"Origin IATA code"
- Changed
explain_travel_timing2 fields changed- changed
Input schema / properties / destination / descriptionPrevious value: -"Destination airport code"New value: +"Destination IATA code. Optional — used to determine if route is international." - changed
Input schema / properties / origin / descriptionPrevious value: -"Origin airport code"New value: +"Origin IATA code. Optional — used to determine if route is international."
- Changed
get_airport_info1 field changed- changed
Input schema / properties / code / descriptionPrevious value: -"IATA airport code"New value: +"Three-letter IATA airport code (e.g. 'SFO'). Case-insensitive."
- Changed
search_travel_options5 fields changed- changed
Input schema / properties / currency / descriptionPrevious value: -"Currency code"New value: +"ISO 4217 currency code (default: USD). Used in booking link parameters." - changed
Input schema / properties / departure_date / descriptionPrevious value: -"Departure date YYYY-MM-DD"New value: +"Departure date in YYYY-MM-DD format. Optional — omit for open date searches." - changed
Input schema / properties / destination / descriptionPrevious value: -"Destination airport IATA code"New value: +"Destination airport IATA code (e.g. 'LHR', 'NRT'). Case-insensitive." - changed
Input schema / properties / origin / descriptionPrevious value: -"Origin airport IATA code"New value: +"Origin airport IATA code (e.g. 'LAX', 'JFK'). Case-insensitive." - changed
Input schema / properties / return_date / descriptionPrevious value: -"Return date YYYY-MM-DD"New value: +"Return date in YYYY-MM-DD format. Omit for one-way trips."
5 tool updates
v0.1.0- First observed
build_booking_link - First observed
compare_routes - First observed
explain_travel_timing - First observed
get_airport_info - First observed
search_travel_options
TDQS
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.
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.
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.
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
Related MCP Connectors
Give AI assistants access to real-time data. Search the web, compare flights, find hotels, and more.
Search award flights and cash fares, optimize points, and predict fares inside ChatGPT and Claude.
Travel tools for AI agents: plan and edit real trips, search stays and tours, import travel videos.
Live flight prices and working booking links for AI agents and travel apps.
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables LLMs to perform travel-related tasks by interacting with Google Maps and travel planning services including location search, place details, and travel time calculations.53899MIT
- FlicenseCqualityCmaintenanceEnables searching for flights (one-way, round-trip, multi-city) and hotels using the Duffel API, with support for filtering by cabin class, passengers, dates, and viewing accommodation reviews.5-
- FlicenseAqualityNot gradedmaintenanceEnables LLMs to search and book flights across 300+ airlines, manage travel orders, and search airports through the Duffel API with support for real-time pricing, multi-city trips, and flexible cabin classes.6-
- AlicenseNot gradedqualityFmaintenanceEnables flight and airport search capabilities through Skyscanner, allowing users to find flight options, compare prices, and locate airports using natural language.13GPL 3.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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