travel-mcp-server

travel-mcp-server

An AI-powered travel planner MCP server enabling flight and hotel search, weather forecasts, point-of-interest discovery, itinerary generation, and budget management.

Category
Visit Server

README

Travel MCP Server

An AI-powered travel planner built as a Model Context Protocol (MCP) server. Connect it to Claude and get a full travel assistant — search flights, hotels, weather, and points of interest, generate day-by-day itineraries, and track your trip budget.

A Next.js web UI is included for exploring the tools directly in a browser without a Claude client.

Tools

Tool Description
search_flights Search flights between two cities by name or IATA code
search_hotels Search hotels with optional price filter
get_weather Day-by-day weather forecast for a destination
search_poi Points of interest by category (restaurants, attractions, activities, nightlife, shopping, transport)
plan_trip Generate a complete itinerary with weather, POI, flight & hotel options, and optional budget allocation
create_trip_budget Create a budget tracker for a trip
add_expense Record an expense against a budget category
get_budget_summary Total spent, remaining balance, and per-category breakdown

Supported destinations (mock data)

Flights: New York ↔ Tokyo / Paris / London / Barcelona / Sydney / Bali · London ↔ Paris / Barcelona / Bali · Sydney ↔ Bali · Paris ↔ Rome

Hotels, weather & POI: Tokyo, Paris, London, Barcelona, Bali, Sydney, Rome, Amsterdam, Dubai

Quickstart

Prerequisites

  • Python 3.10+, uvbrew install uv
  • Node.js 18+ and pnpm (for the web UI) — brew install pnpm

Run locally (stdio — for Claude Desktop / Claude Code)

git clone <repo-url> travel-mcp-server
cd travel-mcp-server
uv sync
uv run python -m travel_mcp

Run with the web UI

# Terminal 1 — MCP server in SSE mode
MCP_TRANSPORT=sse uv run python -m travel_mcp

# Terminal 2 — Next.js UI
cd ui && pnpm install && pnpm dev

Open http://localhost:3000 to use the browser playground.

Inspect tools interactively

npx @modelcontextprotocol/inspector uv run python -m travel_mcp

Connect to Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "travel-planner": {
      "command": "uv",
      "args": ["run", "--directory", "/absolute/path/to/travel-mcp-server", "python", "-m", "travel_mcp"]
    }
  }
}

Restart Claude Desktop. The 8 travel tools will appear automatically.

Docker

# Build
docker build -t travel-mcp-server .

# Run (SSE transport on port 8000)
docker compose up

The server listens on http://localhost:8000 in SSE mode when running via Docker.

The web UI can be pointed at a remote server by setting MCP_SERVER_URL before starting it:

MCP_SERVER_URL=http://your-server:8000 pnpm --prefix ui dev

Web UI

Kubernetes

# Deploy
kubectl apply -f k8s/

# Verify
kubectl rollout status deployment/travel-mcp-server -n travel-mcp

# Test locally via port-forward
kubectl port-forward svc/travel-mcp-server 8000:80 -n travel-mcp

# Tear down
kubectl delete -f k8s/

Note: The Deployment runs a single replica because budget state is held in memory. Scale to multiple replicas only after adding external storage (Redis, Postgres, etc.).

Web UI

A Next.js 16 app in ui/ that provides a browser-based playground for all 8 tools. It requires the MCP server to be running in SSE mode (MCP_TRANSPORT=sse).

ui/
├── app/
│   ├── page.tsx              # Tabbed playground (Flights, Hotels, Weather, Places, Itinerary, Budget)
│   └── api/tools/[tool]/     # Next.js API route — proxies to MCP server REST endpoints
├── components/               # One component per tool tab + shared UI primitives
└── lib/mcp.ts                # Thin fetch wrapper for /api/tools/*

The MCP server exposes REST endpoints at /api/tools/<tool_name> (POST, JSON body) alongside the standard SSE transport, so the UI does not need to implement the MCP protocol.

Environment variables

Variable Default Description
MCP_TRANSPORT stdio Transport mode: stdio (local) or sse (HTTP)
HOST 0.0.0.0 Bind address (SSE mode only)
PORT 8000 Port (SSE mode only)
MCP_SERVER_URL http://localhost:8000 URL the Next.js UI uses to reach the MCP server

Project structure

travel-mcp-server/
├── src/travel_mcp/
│   ├── server.py          # FastMCP instance, tool registrations, REST API routes
│   ├── tools/             # Business logic (one file per domain)
│   │   ├── flights.py
│   │   ├── hotels.py
│   │   ├── weather.py
│   │   ├── poi.py
│   │   ├── itinerary.py   # Composes other tools into a full itinerary
│   │   └── budget.py      # In-memory budget tracker
│   └── mock_data/         # Static fixtures — replace query_* functions to wire real APIs
│       ├── flights.py
│       ├── hotels.py
│       ├── weather.py
│       └── poi.py
├── ui/                    # Next.js web UI
│   ├── app/               # App Router pages and API routes
│   ├── components/        # Tool tab components
│   └── lib/mcp.ts         # MCP server fetch client
├── k8s/                   # Kubernetes manifests
├── Dockerfile
└── docker-compose.yml

Swapping in real APIs

Each mock_data/ file exposes a single query_* function. Replace just that function with an HTTP call to a real provider and everything else stays the same.

Mock file Suggested real API
mock_data/flights.py Amadeus Flight Offers
mock_data/hotels.py Amadeus Hotel Search
mock_data/weather.py OpenWeatherMap
mock_data/poi.py Google Places API

Example prompts

  • "Plan a 7-day trip to Tokyo from New York in October with a $4,000 budget."
  • "Find me flights from London to Barcelona for next Friday, 2 passengers."
  • "What's the weather like in Bali in July?"
  • "Show me the top attractions in Rome."
  • "I spent $850 on flights for my Tokyo trip — log it and show my remaining budget."

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured