Skip to main content
Glama
Cox's Bazar AI Itinerary MCP Server

Cox's Bazar AI Itinerary MCP Server

by code4mk

Production Ready MCP Boilerplate

Cox's Bazar AI Itinerary MCP Server

A Model Context Protocol (MCP) server that provides travel planning tools and weather information for Cox's Bazar, Bangladesh. Built with FastMCP and managed by uv.

Related MCP server: Travel Planner MCP Server

Features

  • Weather Resources: Temperature forecasts and detailed weather information

  • Itinerary Tools: AI-powered travel itinerary generation

  • Travel Prompts: Pre-configured prompts for travel planning

  • Auth Support: Optional authentication via Clerk (configurable via env)

  • Rate Limiting: Built-in rate limiting middleware

  • Docker Ready: Production Dockerfile included

  • Linting & Formatting: Ruff + pre-commit hooks (see _docs/lint-formatting.md)

Requirements

  • Python 3.13+

  • uv (package manager)

  • Node.js 20+ (only for MCP Inspector)

Getting Started

# Install dependencies
uv sync

# Copy environment variables and configure
cp .env.example .env

# (Optional) Install pre-commit git hooks
uv run pre-commit-install

CLI Commands

All commands are registered in pyproject.toml and available via uv run:

Command

Description

uv run mcp-server

Start the MCP server

uv run mcp-server-dev

Start the MCP server in dev mode (auto-reload)

uv run mcp-inspector

Launch the MCP Inspector UI (requires Node.js 20+)

uv run lint

Run pre-commit hooks (lint + format) on all files

uv run pre-commit-install

Install pre-commit hooks into the git repo

Dev Server

Start the MCP server with auto-reload via watchdog:

uv run mcp-server-dev
# or
./scripts/run-mcp-server.sh

MCP Inspector

Launch the interactive MCP Inspector UI to test tools, resources, and prompts:

uv run mcp-inspector
# or
./scripts/run-inspector.sh

Linting & Formatting

# Run lint + format via pre-commit
uv run lint

# Or run individually
./scripts/lint.sh       # ruff check . --fix
./scripts/format.sh     # ruff format .

See _docs/lint-formatting.md for full configuration details.

Testing

./scripts/test.sh

See _docs/testing.md for test conventions and fixtures.

Docker

docker build -t mcp-server .
docker run mcp-server

The server runs via uv run mcp-server inside the container. Transport and port are configurable through environment variables (TRANSPORT_NAME, SERVER_PORT, SERVER_HOST).

Project Structure

.
├── src/mcp_server/
│   ├── server.py                  # Main server entry point
│   ├── mcp_instance.py            # FastMCP instance & auth config
│   ├── cli.py                     # CLI command definitions
│   ├── config/
│   │   ├── auth_provider.py       # Auth provider factory
│   │   └── custom_routes.py       # Custom HTTP routes
│   ├── handlers/                  # MCP handler registrations (auto-discovered)
│   │   ├── tools/
│   │   │   ├── auth_additional.py
│   │   │   └── itinerary.py
│   │   ├── resources/
│   │   │   └── weather.py
│   │   └── prompts/
│   │       └── travel_prompts.py
│   ├── models/
│   │   └── itinerary_models.py    # Pydantic models & schemas
│   ├── services/
│   │   └── itenerary_service.py   # Business logic
│   ├── lib/
│   │   ├── clerk_auth_provider.py # Clerk OAuth provider
│   │   └── httpx_client.py        # Async HTTP client wrapper
│   ├── prompt_templates/
│   │   └── travel.py              # Prompt text builders
│   └── utils/
│       ├── elicitation.py
│       ├── get_weather_forecast.py
│       ├── helpers.py
│       └── http.py
├── tests/
│   ├── conftest.py
│   ├── fixtures/
│   │   ├── context.py
│   │   └── weather.py
│   ├── unit/
│   │   ├── test_auth_additional_tools.py
│   │   ├── test_auth_provider.py
│   │   ├── test_elicitation.py
│   │   ├── test_helpers.py
│   │   ├── test_itinerary_service_extra.py
│   │   ├── test_itinerary_tool_handler.py
│   │   ├── test_models.py
│   │   ├── test_server.py
│   │   ├── test_travel_prompts.py
│   │   ├── test_travel_prompts_handler.py
│   │   ├── test_weather_forecast.py
│   │   └── test_weather_resource.py
│   └── integration/
│       ├── test_itinerary_tool.py
│       └── test_weather_api.py
├── scripts/
│   ├── run-mcp-server.sh          # Dev server with auto-reload
│   ├── run-inspector.sh           # MCP Inspector launcher
│   ├── test.sh                    # Test runner
│   ├── lint.sh                    # Ruff lint --fix
│   ├── format.sh                  # Ruff format
│   └── generate-secrets.sh        # Secret key generator
├── _docs/                         # Documentation & ADRs
│   ├── adr/
│   │   ├── 001-choose-fastmcp.md
│   │   ├── 002-choose-httpx.md
│   │   └── ADR-template.md
│   ├── auth-provider-auth0.md
│   ├── httpx-client.md
│   ├── lint-formatting.md
│   ├── remote-mcp-connect.md
│   └── testing.md
├── .env.example                   # Environment variables template
├── .pre-commit-config.yaml        # Pre-commit hook config
├── Dockerfile                     # Production Docker image
├── pyproject.toml                 # Project config & dependencies
├── ruff.toml                      # Ruff linter/formatter config
├── pytest.ini                     # Pytest configuration
├── glama.json                     # Glama registry config
└── LICENSE                        # MIT License

Documentation

Document

Description

_docs/lint-formatting.md

Ruff & pre-commit configuration

_docs/testing.md

Test setup, fixtures, and conventions

_docs/httpx-client.md

Async HTTP client usage

_docs/auth-provider-auth0.md

Auth provider integration

_docs/remote-mcp-connect.md

Remote MCP connection guide

_docs/adr/

Architecture Decision Records

License

MIT

Available Tools

2 tools
cox_ai_itineraryA

Full workflow: fetch daily temperatures + generate AI itinerary. Uses the registered MCP prompt 'generate_itinerary' for consistency.

Args: days: Number of days for the trip start_date: Start date (e.g., "2025-01-15", "15 Jan 2025", "today")

Returns: Formatted prompt for AI to generate detailed itinerary

Inputs: days (required), start_date (required). Returns: result

get_activity_suggestionsB

Suggest activities based on temperature and time of day.

Args: temperature: Temperature in Celsius time_of_day: "morning", "afternoon", or "evening"

Returns: List of suggested activities

Inputs: temperature (required), time_of_day.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.2/5.0

    Scored across 2 tools

    Disambiguation5/5

    The two tools have clearly distinct purposes: 'cox_ai_itinerary' generates a full multi-day itinerary based on dates and duration, while 'get_activity_suggestions' provides activity recommendations based on specific weather and time conditions. There is no overlap in functionality or ambiguity between them.

    Naming Consistency3/5

    The naming is mixed: 'cox_ai_itinerary' uses a descriptive noun phrase with underscores, while 'get_activity_suggestions' follows a verb_noun pattern. Although both are readable, they lack a consistent convention, which could confuse agents expecting a uniform style.

    Tool Count2/5

    With only two tools, the server feels thin for an itinerary planning domain. It lacks essential operations like updating itineraries, fetching historical data, or managing user preferences, which are typical for such a purpose. This minimal set limits functionality and may require agents to work around gaps.

    Completeness2/5

    The tool surface is significantly incomplete for itinerary planning. While it covers itinerary generation and activity suggestions, it misses core CRUD operations (e.g., no way to retrieve, modify, or delete itineraries) and lacks integration with user inputs or preferences. This will likely cause agent failures in real-world scenarios.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A comprehensive travel planning copilot that provides geographic data, weather forecasts, transportation details, currency exchange rates, and contextual content to create personalized travel experiences. Enables users to plan itineraries, check real-time conditions, and gather inspirational content for destinations.
      2 npm
      Apache 2.0
    • A
      license
      A
      quality
      D
      maintenance
      Enables comprehensive travel planning by providing tools for flight and accommodation searches, real-time currency exchange, and weather forecasting. It also allows users to calculate estimated trip budgets based on destination, duration, and traveler preferences.
      5
      14 npm
      16
      MIT