Hotel search MCP server for Claude, ChatGPT and AI agents

Pilot's free, remote Model Context Protocol server gives any AI assistant live hotel search. Find hotels by city, neighbourhood or landmark, compare real room rates and check availability for your dates. Paste one URL. No API key, no sign-up, no OAuth.

https://mcp.pilotplans.com/mcp

Install the MCP server

Paste https://mcp.pilotplans.com/mcp wherever a client asks for a remote or custom MCP server. Setup for each client:

Claude (claude.ai and Claude Desktop)

  1. Open Customize → Connectors → Add custom connector.
  2. Name it Pilot and paste https://mcp.pilotplans.com/mcp.
  3. Leave the advanced settings empty and add it.

ChatGPT

  1. Turn on developer mode under Settings → Security and login.
  2. Create a connector with the URL https://mcp.pilotplans.com/mcp and choose No authentication.

Claude Code

claude mcp add --transport http pilot https://mcp.pilotplans.com/mcp

Add --scope user to make the server available in every project.

Cursor

Add to Cursor in one click, or add this to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "pilot": { "url": "https://mcp.pilotplans.com/mcp" }
  }
}

VS Code (GitHub Copilot agent mode)

Install in VS Code in one click, or run:

code --add-mcp '{"name":"pilot","type":"http","url":"https://mcp.pilotplans.com/mcp"}'

For a single workspace, add this to .vscode/mcp.json:

{
  "servers": {
    "pilot": { "type": "http", "url": "https://mcp.pilotplans.com/mcp" }
  }
}

Windsurf

Add this to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "pilot": { "serverUrl": "https://mcp.pilotplans.com/mcp" }
  }
}

OpenAI Codex CLI

codex mcp add pilot --url https://mcp.pilotplans.com/mcp

Or add this to ~/.codex/config.toml:

[mcp_servers.pilot]
url = "https://mcp.pilotplans.com/mcp"

Gemini CLI

gemini mcp add --transport http pilot https://mcp.pilotplans.com/mcp

Any other MCP client

Clients that support remote servers over Streamable HTTP take the URL directly:

{
  "mcpServers": {
    "pilot": { "type": "http", "url": "https://mcp.pilotplans.com/mcp" }
  }
}

Clients that only launch local (stdio) servers can bridge with mcp-remote:

{
  "mcpServers": {
    "pilot": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://mcp.pilotplans.com/mcp"]
    }
  }
}

What to ask

Once the server is connected, ask in plain language. The assistant picks the tools.

In clients that render MCP Apps, including Claude and ChatGPT, hotel search results appear as photo cards with a map.

Tools

All three tools are read-only (readOnlyHint: true) and never change state, so clients can run them without asking for confirmation. The live tools/list response is the source of truth for schemas.

A typical run: search_hotels for the place and dates, get_hotel_details for the hotels worth a closer look, get_room_rates_for_hotel to price rooms, then the hotel's url so the user can book on Pilot.

search_hotels

Search bookable hotels by location and dates. Returns hotels with prices, star rating, guest rating and review count, photos, address, coordinates, a url to the hotel on Pilot, and an opaque id for the other two tools. Page with offset, using next_offset from the previous result.

Parameter Type Required Description
location string yes City, neighbourhood, address or place name
check_in string yes Check-in date, YYYY-MM-DD
check_out string yes Check-out date, YYYY-MM-DD
guests integer no, default 2 Number of adults
rooms integer no, default 1 Rooms required
children_ages integer[] no Ages (0–17) of children sharing the room
currency string no, default USD ISO 4217 currency for prices
guest_nationality string no, default US ISO 3166-1 alpha-2 country of the guest; affects rate eligibility
limit integer no, default 20 Hotels to return, 1–50
offset integer no, default 0 Hotels to skip, for paging
radius_meters integer no Only hotels within this radius of the location (minimum 1000)
min_star_rating number no Minimum star rating, 1–5
min_guest_rating number no Minimum guest review score, 1–10
amenity_ids integer[] no Supplier facility ids the hotel must offer
property_type_ids integer[] no Supplier property-type ids to restrict to
ai_search string no Free-text preference, e.g. “boutique hotel near the old town”

get_hotel_details

Static details for one hotel: description, amenities, photos and address.

Parameter Type Required Description
hotel_id string yes Hotel id from search_hotels

get_room_rates_for_hotel

Bookable room offers for one hotel, each with price, board type (for example room only or breakfast included) and refundability.

Parameter Type Required Description
hotel_id string yes Hotel id from search_hotels
check_in string no Override check-in, YYYY-MM-DD
check_out string no Override check-out, YYYY-MM-DD
guests integer no Number of guests

Use it from your own agent

Claude API

The Messages API connects to remote MCP servers for you. Pass the server in mcp_servers and reference it from an mcp_toolset:

curl https://api.anthropic.com/v1/messages \
  -H "x-api-key: $ANTHROPIC_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "anthropic-beta: mcp-client-2025-11-20" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-opus-5",
    "max_tokens": 16000,
    "mcp_servers": [
      { "type": "url", "url": "https://mcp.pilotplans.com/mcp", "name": "pilot" }
    ],
    "tools": [{ "type": "mcp_toolset", "mcp_server_name": "pilot" }],
    "messages": [
      { "role": "user", "content": "Find 4-star hotels in Lisbon for three nights next month under $250 a night." }
    ]
  }'
import anthropic

client = anthropic.Anthropic()
response = client.beta.messages.create(
    model="claude-opus-5",
    max_tokens=16000,
    betas=["mcp-client-2025-11-20"],
    mcp_servers=[{"type": "url", "url": "https://mcp.pilotplans.com/mcp", "name": "pilot"}],
    tools=[{"type": "mcp_toolset", "mcp_server_name": "pilot"}],
    messages=[{"role": "user", "content": "Find 4-star hotels in Lisbon for three nights next month under $250 a night."}],
)

OpenAI Responses API

from openai import OpenAI

client = OpenAI()
response = client.responses.create(
    model="gpt-5",
    tools=[{
        "type": "mcp",
        "server_label": "pilot",
        "server_url": "https://mcp.pilotplans.com/mcp",
        "require_approval": "never",
    }],
    input="Find 4-star hotels in Lisbon for three nights next month under $250 a night.",
)
print(response.output_text)

Raw JSON-RPC

The server is stateless and issues no session id, so you can call it directly to test. It answers with a single text/event-stream message.

curl -s https://mcp.pilotplans.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
curl -s https://mcp.pilotplans.com/mcp \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_hotels","arguments":{"location":"Lisbon","check_in":"2027-03-12","check_out":"2027-03-15","limit":5}}}'

Use future dates. MCP SDK clients send initialize first, which also works.

Access and booking

Free and open
No API key, account, OAuth flow or rate agreement. Connect and call in one step.
Read-only
The tools search and price hotels. They cannot hold, reserve or pay for a room, so nothing a client does here commits a user to a purchase.
Booking on Pilot
Every hotel result carries a url to that hotel on pilotplans.com with the dates and guests filled in. Send the user there to book.
Live data
Rates and availability come from Pilot's hotel suppliers when the tool is called and can change until a room is booked.

FAQ

Is the Pilot MCP server free?

Yes. The server is free to use and needs no account, API key or payment details.

Do I need an API key or OAuth to connect?

No. The server is public and unauthenticated. Add https://mcp.pilotplans.com/mcp to your client and choose no authentication if it asks.

Can it book hotels?

Not directly. The tools find hotels and compare live room rates, and each result links to the hotel on Pilot, where the user completes the booking.

Which AI assistants and clients does it work with?

Any MCP client that supports remote servers over Streamable HTTP, including Claude, Claude Code, ChatGPT, Cursor, VS Code with GitHub Copilot, Windsurf, OpenAI Codex CLI and Gemini CLI. Clients limited to local stdio servers can connect through mcp-remote.

Where do the prices and hotel data come from?

From Pilot's hotel suppliers, fetched live when a tool runs. Content includes descriptions, amenities, photos, star ratings and guest review scores.

Why does opening /mcp in a browser show an error?

/mcp is a JSON-RPC endpoint for MCP clients. It expects a POST, so a browser visit returns 406 Not Acceptable. This page is the human-readable guide.

For agents and crawlers