DasBalvinderDas

Travel Planner MCP Server

Community DasBalvinderDas
Updated

travel-planner-mcp-server

Travel Planner MCP Server

A multi-agent travel planning system built with Google Agent Development Kit (ADK) that exposes its tools via the Model Context Protocol (MCP).

The system uses a root agent with two sub-agents — a weather agent and a travel plan agent — to create weather-aware 3-day travel itineraries. The tools are also exposed through an MCP server, making them accessible to any MCP-compliant client.

Architecture

┌─────────────────────────────────────────────────┐
│                  Root Agent                      │
│            (travel_planner)                      │
│                                                  │
│  Orchestrates the travel planning workflow:      │
│  gather info → check weather → create plan       │
│                                                  │
│  ┌─────────────────┐  ┌──────────────────────┐  │
│  │  Weather Agent   │  │  Travel Plan Agent   │  │
│  │                  │  │                      │  │
│  │  get_weather()   │  │  create_travel_plan()│  │
│  │  (Open-Meteo API)│  │  (itinerary builder) │  │
│  └─────────────────┘  └──────────────────────┘  │
└─────────────────────────────────────────────────┘

                    ▼ exposed via ▼

┌─────────────────────────────────────────────────┐
│              MCP Server (stdio)                  │
│                                                  │
│  Wraps ADK FunctionTools and exposes them as     │
│  MCP tools accessible to any MCP client          │
│                                                  │
│  Tools: get_weather, create_travel_plan          │
└─────────────────────────────────────────────────┘

Project Structure

travel-planner-mcp-server/
├── travel_planner/              # ADK multi-agent package
│   ├── __init__.py
│   ├── agent.py                 # Root agent (orchestrator with sub-agents)
│   ├── sub_agents/
│   │   ├── __init__.py
│   │   ├── weather_agent.py     # Weather specialist sub-agent
│   │   └── travel_plan_agent.py # Travel planning specialist sub-agent
│   └── tools/
│       ├── __init__.py
│       ├── weather_tools.py     # Open-Meteo API weather tool
│       └── travel_tools.py      # Travel plan generation tool
├── mcp_server.py                # MCP server exposing ADK tools
├── adk_client_agent/            # Example ADK agent consuming the MCP server
│   └── mcp_travel_client/
│       ├── __init__.py
│       └── agent.py
├── pyproject.toml
├── requirements.txt
├── .env.example
└── README.md

Prerequisites

  • Python 3.10+
  • A Google API key (for Gemini model access)

Setup

  1. Clone the repository:

    git clone <repo-url>
    cd travel-planner-mcp-server
    
  2. Install dependencies:

    pip install -r requirements.txt
    
  3. Configure environment:

    cp .env.example .env
    # Edit .env and add your Google API key
    

Usage

Option 1: Run the ADK Multi-Agent System Directly

This uses the root agent with its sub-agents through the ADK web UI:

adk web
# Select "travel_planner" in the browser UI

The root agent will:

  1. Ask for your destination and travel date
  2. Delegate to the weather agent to fetch the forecast
  3. Delegate to the travel plan agent to create the itinerary
  4. Present a comprehensive 3-day travel plan

Option 2: Run the MCP Server

This exposes the tools via MCP protocol for any MCP client to consume:

python mcp_server.py

The MCP server exposes two tools:

  • get_weather — Fetches 3-day weather forecast for a location using Open-Meteo API
  • create_travel_plan — Generates a structured 3-day travel itinerary template

Option 3: Run the MCP Client Agent

This demonstrates an ADK agent consuming the MCP server:

cd adk_client_agent
adk web
# Select "mcp_travel_client" in the browser UI

Option 4: Connect from Any MCP Client

Add to your MCP client configuration (e.g., Claude Desktop, Cursor, etc.):

{
  "mcpServers": {
    "travel-planner": {
      "command": "python3",
      "args": ["/path/to/mcp_server.py"]
    }
  }
}

Tools

get_weather

Fetches a 3-day weather forecast using the Open-Meteo API (free, no API key required).

Parameters:| Parameter | Type | Description ||-----------|------|-------------|| location | string | City or place name (e.g., "Paris", "Tokyo") || date | string | Start date in YYYY-MM-DD format |

Returns: Temperature (C/F), conditions, precipitation, wind speed, and UV index for 3 days.

create_travel_plan

Generates a structured 3-day travel itinerary template.

Parameters:| Parameter | Type | Description ||-----------|------|-------------|| location | string | Destination city or place || start_date | string | Trip start date (YYYY-MM-DD) || weather_summary | string | Weather conditions summary || interests | string | Travel interests (default: "general sightseeing") |

Returns: Day-by-day itinerary structure with time slots, meals, and tips.

How It Works

This project demonstrates Pattern 2 from the ADK documentation: Building an MCP server with ADK tools.

  1. ADK FunctionTool wraps the Python tool functions
  2. adk_to_mcp_tool_type() converts ADK tool schemas to MCP format
  3. The MCP server advertises tools via list_tools and executes them via call_tool
  4. Any MCP client can discover and invoke the tools through the standard protocol

License

MIT

MCP Server · Populars

MCP Server · New