Claude (claude.ai and Claude Desktop)
- Open Customize → Connectors → Add custom connector.
-
Name it
Pilotand pastehttps://mcp.pilotplans.com/mcp. - Leave the advanced settings empty and add it.
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
Paste https://mcp.pilotplans.com/mcp wherever a client
asks for a remote or custom MCP server. Setup for each client:
Pilot and paste
https://mcp.pilotplans.com/mcp.
https://mcp.pilotplans.com/mcp and choose
No authentication.
claude mcp add --transport http pilot https://mcp.pilotplans.com/mcp
Add --scope user to make the server available in every
project.
Add to Cursor
in one click, or add this to ~/.cursor/mcp.json:
{
"mcpServers": {
"pilot": { "url": "https://mcp.pilotplans.com/mcp" }
}
}
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" }
}
}
Add this to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"pilot": { "serverUrl": "https://mcp.pilotplans.com/mcp" }
}
}
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 mcp add --transport http pilot https://mcp.pilotplans.com/mcp
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"]
}
}
}
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.
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_detailsStatic 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_hotelBookable 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 |
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."}],
)
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)
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.
url to that hotel on
pilotplans.com with the dates and guests filled in. Send the user
there to book.
Yes. The server is free to use and needs no account, API key or payment details.
No. The server is public and unauthenticated. Add
https://mcp.pilotplans.com/mcp to your client and
choose no authentication if it asks.
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.
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.
From Pilot's hotel suppliers, fetched live when a tool runs. Content includes descriptions, amenities, photos, star ratings and guest review scores.
/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.
/llms.txt and
/llms-full.txt: LLM-oriented overview and full text
/index.md: this page as Markdown, also returned at / for
Accept: text/markdown
/.well-known/mcp/server-card.json: MCP Server Card (also at /mcp/server-card)
/.well-known/ai-catalog.json: AI Catalog (ARD) manifest
/.well-known/api-catalog: RFC 9727 API catalog
/.well-known/agent-skills/index.json: Agent Skills index, with a skill for installing and using this
server
/auth.md: authentication notes for agents (none required)