Travel Assistant MCP
Provides airport metadata lookup by IATA code, enabling retrieval of airport information based on IATA codes.
Click on "Deploy 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: Duffel MCP Server
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?
Adds behavioral context beyond annotations: read-only, no authentication, no booking completion, no reservation side effects, commission-eligible, link disclosed. Annotations already declare safety profile, but description enriches it.
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, each essential. Front-loaded with purpose. 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?
Tool is simple; schema fully describes parameters. Description covers behavior, usage context, and no output schema needed. Complete for its purpose.
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%, so baseline is 3. Description does not add parameter-specific details beyond schema, but overall context is sufficient.
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 verb 'generate', resource 'external booking link', and context 'for an already chosen route'. Differentiates from sibling tools by specifying it is for after route details are known.
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' and 'do not use as the first step when the user still needs search guidance'. Provides clear context for use.
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, etc.), the description adds that it requires no authentication, has no booking side effects, and responses may include commission-eligible external booking links. This fully discloses behavioral traits.
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?
The description is a single paragraph that efficiently covers purpose, usage context, and behavioral notes with no redundant information. Every sentence serves a purpose.
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 the tool's simplicity (one array parameter, read-only, no output schema), the description fully covers its use case, alternatives, and safety profile. No gaps in information.
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?
Input schema has 100% coverage with clear descriptions of the 'routes' parameter and its subfields. The description adds that typical usage is 2-5 routes, which provides useful context beyond 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 compares two or more airport route pairs side by side, and distinguishes it from sibling tools like search_travel_options and get_airport_info by specifying when to use each.
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 (choosing between alternate origins/destinations/airports) and when to use alternatives (search_travel_options for one dated route, get_airport_info for single airport lookup).
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 states read-only, no authentication, no booking link, and no booking side effects. Annotations already indicate readOnlyHint and idempotentHint, but the description adds specific 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?
Two concise sentences with purpose, topics, usage guidance, and behavioral traits front-loaded. No unnecessary 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?
Covers purpose, usage, and behavior. Lacks explicit mention of output format (likely textual explanation), but given the tool name and description, it's largely complete. Optional params are noted, but their impact on output is implicit.
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%, so baseline 3. The description does not add additional semantic info beyond what the schema already provides for the two optional parameters.
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 the tool explains general travel timing and logistics, listing specific topics. It distinguishes from sibling 'search_travel_options' by specifying when to use each.
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 advises using this tool for general timing advice (e.g., when to book, how early to arrive) and directs to 'search_travel_options' for route-specific search. Also notes read-only, no auth, no booking side effects.
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 provide readOnlyHint, destructiveHint, idempotentHint. Description adds 'Read-only, no authentication, no external booking links, and no booking side effects,' reinforcing and providing additional 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?
Two sentences, front-loaded with purpose, then usage guidelines and behavioral notes. Every sentence adds value without 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 lookup tool with one parameter, full schema coverage, and comprehensive annotations, the description covers purpose, usage, and behavior completely.
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 new information about the single parameter beyond what the schema already states (IATA code, case-insensitive).
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 siblings by directing to search_travel_options and compare_routes for other use cases.
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 when to use (validate/explain a single code before route planning) and when not to, naming alternative tools for trip search and multi-route comparison.
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, destructiveHint, idempotentHint, and openWorldHint. The description adds 'no authentication' and mentions response contents including commission-eligible links, providing useful context 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?
The description is four sentences, each serving a distinct purpose: purpose statement, usage guidelines, behavioral transparency, and parameter hints. No redundant or extraneous information.
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 no output schema, the description mentions response contents (route metadata, booking links). All parameters are covered by schema and description. For a simple search tool with 5 params, this is sufficiently complete.
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 the baseline is 3. The description adds value by explicitly clarifying the optionality of return_date (one-way trips) and departure_date (open date searches), and by noting the default currency and its role in booking links.
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's purpose as the primary search workflow for one origin-destination airport pair. It explicitly distinguishes this from sibling tools like compare_routes and build_booking_link, making selection unambiguous.
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?
The description provides explicit when-to-use guidance, including using compare_routes for multiple routes and build_booking_link only after route details are known. It also clarifies optional parameters like return_date 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.
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
Scored across 5 tools
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.530 npm99MIT
- 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
- AlicenseBqualityCmaintenanceDisruption Intelligence MCP gives AI agents access to commercial disruption signals through a public MCP server backed by the hosted Forgemesh API. It supports WARN/layoff intelligence, company context, geospatial territory disruption, x402 payment challenge inspection, and economic signal workflows without exposing private scoring logic, ingestion systems, schemas, or infrastructure.1444 npm1MIT