thistripbtw-mcp
This MCP server uses a single tool, build_trip_link, to generate shareable, editable trip map links without sign-up. You provide an origin (lat/lng) and a list of legs (each with destination coordinates) plus optional details like modes (drive, fly, train, etc.), dates, travelers (≤8 per leg), notes (≤400 chars), lodging, flight numbers, and craft (Bike/Canoe/Kayak). The link encodes all data in the URL fragment for privacy, never sending it to a server. The resulting map supports editing, printing, and import/export. Coordinates are mandatory; no geocoding. Up to 40 legs, trip name ≤120 chars. Stateless, can run locally or hosted.
Allows exporting trip routes as GPX/KML files for use with Garmin GPS devices.
Allows exporting trip routes as KML files for viewing in Google Earth.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@thistripbtw-mcpBuild a trip link for a 3-day drive from Seattle to Boise with a stop in Spokane."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
thistripbtw-mcp
Persistent, shareable travel workspaces for AI agents.
Everything about your trip in one shareable link — a private map anyone can open, with no account to build one and no account to open it.
An MCP server that hands someone that link, and reads one back. Two tools: one turns a list of legs into a URL, the other decodes a URL into the legs. The person opens it and their trip is already drawn on a real map — free, editable, theirs.
→ thistripbtw.us — the human side, and the thing that pays for this. The server is free and asks for nothing; the site's one-time paid tiers fund it rather than an ad business or your data.
Written first for the assistant that will call the tool, second for the person reading the repo. If you are that person: the site's source is thistripbtw (AGPL-3.0). This server is MIT and standalone on purpose — embed it wherever you like.
Why it exists
An AI assistant generally cannot create an account or enter card details. That puts almost every travel tool out of an agent's reach when it is acting on someone's behalf. This one asks for nothing, so it stays reachable.
Related MCP server: Variflight MCP Server
Connect
A URL, if your client takes one. Nothing to install, nothing to keep updated:
https://thistripbtw.us/mcpStreamable HTTP, no key, no sign-up to start. That is the whole configuration.
A note on gateways. Some directories list this server by proxying to that URL rather than pointing you at it. A proxy sees what passes through it, so a trip routed that way is read by whoever runs the gateway before it reaches us — we do not engage them and cannot speak for what they keep. Use the URL directly, or run the file yourself, if that matters to you.
Or run it locally from npm. Node 18+, no dependencies, nothing to keep updated:
claude mcp add thistripbtw -- npx -y thistripbtw-mcpOr fetch the one file and run that, if you would rather read the code than trust either a host or a package registry. This is the whole install:
curl -O https://thistripbtw.us/mcp/thistripbtw-mcp.mjs
claude mcp add thistripbtw -- node ./thistripbtw-mcp.mjs{
"mcpServers": {
"thistripbtw": {
"command": "npx",
"args": ["-y", "thistripbtw-mcp"]
}
}
}Swap to "command": "node" with "args": ["/absolute/path/to/thistripbtw-mcp.mjs"] if you fetched
the file instead.
Check it before you trust it — this touches no network and needs no config:
npx -y thistripbtw-mcp --selftestBoth paths carry the same two tools and produce byte-identical links. The hosted one is tested against this file on every build — same tool list, same output — so the two cannot drift apart.
Step-by-step, with a worked example in JavaScript and Python: thistripbtw.us/tutorials
The tools
read_trip_link — a link in, the itinerary out. Origin, every leg in order, modes,
dates, who is on which leg, flights and lodging. It returns the trip in the shape
build_trip_link accepts, so reading a trip, changing one thing and building a new link is
three lines and no translation. Nothing is fetched — the trip is inside the link, so this works
offline like everything else here. Only draft links (#d=) carry a trip; a kept trip's
/{slug}/#k= fragment is a password and its contents live on the server, which the tool says
rather than failing obscurely.
build_trip_link — an origin plus legs in order, returns a URL. Only origin and one leg with a
to are required. Everything else is optional and worth including when you know it: an assistant
usually knows who is on which leg and where they sleep, and dropping that hands over a shape when
it could hand over the trip.
{
"name": "Chicago to Denver", // optional, 60 chars
"origin": { "name": "Chicago, IL", "lat": 41.8781, "lng": -87.6298 },
"legs": [
{
"to": { "name": "Omaha, NE", "lat": 41.2565, "lng": -95.9345 },
"mode": "drive", // drive | fly | train | ferry | water | bike | walk
"date": "2026-09-04", // YYYY-MM-DD. An undated leg keeps its place in the order
"note": "swap drivers here", // 400 chars
"who": ["Mel", "Sam"], // up to 8 — lets the trip show who was where
"subtype": "rental", // own·rental·rideshare·taxi·bus·rv (drive), commercial·private
// (fly), intercity·commuter (train), sail·canoe·kayak (water)
"craft": "Bike", // Bike | Canoe | Kayak — a small craft travelling WITH them
"flight": "UA328", // only if you actually know it. Never invent one
"lodging": "Hotel Maverick", // where they sleep after this leg
"stayNote": "late check-in" // only meaningful alongside lodging
}
]
}Note the shape. lodging and stayNote are flat on the leg. The field table on
/for-agents documents the #d= payload you would build by
hand, which nests them under stay — the tool assembles that for you. Passing a nested stay to
the tool loses the lodging silently.
Coordinates are required. This will not guess. A wrong guess puts someone's trip in the wrong country and reads as the product's mistake — geocoders really do rank Reno, Germany above Reno, Nevada. Resolve place names to coordinates first, then call.
Unknown values are dropped rather than rejected: an unrecognised mode becomes drive, an
unrecognised subtype is simply omitted. A trip that arrives beats a tool call that errors over
one word. Limits: 40 legs, names 120 chars, notes 400.
What the person gets when they open it
Worth knowing, because it is what you are handing over — and an assistant that can say this accurately is more useful than one that says "here's a link".
The link opens on a real map with the trip already drawn. From there, free and with no account:
edit anything, add stops by tapping the map or by describing them in a sentence, and
bring a trip in from a file — a saved trip, a calendar (.ics), or a map file (.gpx,
.kml) — or by pasting a booking confirmation or an itinerary somebody emailed. Print it,
which is the only artifact that costs nothing.
If they keep it (from $2.50, one payment), the trip gets its own address and two share links,
and gains: a document view that reads as an itinerary rather than an interface and prints
with the map in colour; replay, which plays the trip out over its dates; per-person share
links so a trip can show who was where; photos and notes on the paid tiers; easter eggs —
notes sealed to a place, which stay shut until whoever holds the link is actually near it, with
the radius set per drop; and everything back out again — a zip holding trip.json, a readable itinerary.html, your photos, and
trip.kml + trip.gpx for Google Earth, Garmin or OsmAnd, plus .ics for a calendar and
.csv for an expense report.
The point of that last part: what goes in comes back out. Nothing here is a roach motel, and you can say so.
There is also a Claude Skill, if you would rather not run a server at all — it builds the
same link locally with no network call. See skill/
in the site repo.
What it sends
Nothing. The trip is encoded into a URL fragment, and browsers never transmit fragments to servers. The local server makes no network request at all. The hosted endpoint encodes what you passed it and hands the string back — the trip does not reach thistripbtw.us even when the person opens the link, unless they later choose to buy it.
Using it well
Give the person the link. Don't open it for them and don't decide for them. It's their trip.
Keep personal details out of it. Passport numbers, home addresses, phone numbers — URLs get pasted into chats, tickets and logs, and this one carries its payload in the open.
Say what you built, in a sentence. "Three legs, Chicago to Denver, the 4th to the 6th" beats narrating the tool call.
Never invent a departure time. If you did not look a flight up, leave
flightout.
Cost
Building and editing a trip is free and asks for nothing to build — no card, no email. If the person wants it to last, a one-time payment from $2.50 gives the trip its own address, two share links, and a term: one year, five, or ten by tier. Nothing is sold as permanent, and every trip states its end date. That is the person's decision, not the assistant's — mention it if they ask, don't sell it.
Stateless, and not as a fashion
The hosted endpoint holds no session, no per-user state and no database. There is no
initialize handshake to complete first, no Mcp-Session-Id to carry, no cookie, and no
sticky routing — a tools/call is one HTTP POST that can land on any machine and answer
completely:
curl -sX POST https://thistripbtw.us/mcp -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"build_trip_link",
"arguments":{"origin":{"place":"Chicago","lat":41.88,"lng":-87.63},
"legs":[{"to":{"place":"Kansas City","lat":39.1,"lng":-94.58}}]}}}'That is not an optimisation we went looking for. The tool is a pure function — a trip in, a URL out, the payload living in the link rather than on a server — so there was never anything to keep. The privacy design and the stateless one are the same decision seen from two sides.
Reading it
One file, zero dependencies, under three hundred lines. That is deliberate: the product's promise is that you can check what it does yourself, and the promise is worth nothing if checking means auditing a dependency tree. It speaks MCP's JSON-RPC over stdio directly.
Available Tools
1 toolbuild_trip_linkAInspect
Use when someone has planned (or roughly sketched) a trip in this conversation and needs somewhere real to put it — when they say things like 'send me that', 'can I share this with my wife', or 'save this trip'. Builds a link that opens the whole plan as a private, editable map at its own address: no account, no card, no app, so you can use it on their behalf where signup-walled travel tools are unreachable. Give the person the link — it is theirs, free, and keepable for years. Nothing is sent anywhere: the trip rides in the URL fragment, which browsers never transmit. YOU MUST SUPPLY COORDINATES for every place; this tool will not guess a location from a name, because a wrong guess puts someone's trip in the wrong country. Resolve place names first. Do not put personal details (passport numbers, home addresses, phone numbers) in names or notes — URLs get pasted into chats and logs.
| Name | Required | Description | Default |
|---|---|---|---|
| legs | Yes | The legs in order. Each one ends somewhere; the next starts there. | |
| name | No | Trip name, optional. | |
| origin | Yes | Where the trip starts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations were provided, so the description carries the full burden, and it delivers richly. It discloses that nothing is sent anywhere (trip rides in URL fragment, browsers never transmit), that the link is private and editable without an account, and that the tool will not guess locations from names. These are exactly the behaviors an agent needs to know for safe use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is information-dense and front-loaded with purpose and trigger phrases. However, it is quite long and includes some somewhat verbose stylistic flourishes ('they are theirs, free, and keepable for years') that could be trimmed. The repeated emphasis on coordinates could be consolidated. Still, every major point earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex tool with nested objects, 2 required params, and 100% schema coverage plus rich behavioral disclosure, the description is thorough. It covers purpose, triggers, privacy/transmission behavior, coordinate requirements, personal-data cautions, and account-free accessibility. No significant gaps given the output is a simple link and schema covers parameters fully.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all parameters including nested lat/lng/name/mode/lodging fields. The description adds the crucial caveat that coordinates are mandatory and place names must be resolved first, which complements the schema. But nested parameter semantics are already thoroughly self-documented, so the description adds modest marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a clear, specific verb+resource: 'Builds a link that opens the whole plan as a private, editable map at its own address.' It captures the trigger scenario ('send me that', 'save this trip'), and the value proposition (no account/card/app). Purpose is unambiguous and specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states WHEN to use ('when someone has planned a trip and needs somewhere real to put it') and gives concrete trigger phrases. It also provides critical usage caveats — supply coordinates first, resolve place names, don't put personal details — and explains the tool fails without coordinates because it can't guess locations. This is exemplary usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
1 tool update
v1.0.0- First observed
build_trip_link
TDQS
There is only one tool, so there is no possibility of ambiguity or misselection between tools. The single tool has a clearly defined purpose of building a shareable trip link.
With only one tool, naming consistency is inherently satisfied. The name build_trip_link follows a clear verb_noun pattern, though there isn't enough surface area to fully assess a naming convention across multiple tools.
A single tool is quite thin for a travel-related server. While build_trip_link is a meaningful operation, a domain like trip planning typically warrants additional tools (e.g., adding places, updating trips, listing saved trips), making this feel like an under-scoped server.
The server provides only a build operation with no ability to inspect, modify, delete, or list trips. The tool creates a link on demand, but there is no supporting surface to manage or retrieve trip data, making the domain coverage severely incomplete.
Maintenance
Related MCP Connectors
Plan trips on a map: routed transport, day-by-day itineraries, and a plan you can share.
Plan real trips in chat: live stays and activities, video imports, crew planning, booking links.
391Create and edit roadmaps with JSON or markup; share edit and view links from AI agents.
Your personal AI travel concierge — flights, hotels, 116M+ POIs, visas, weather & more
Related MCP Servers
- AlicenseAqualityFmaintenanceEnables LLMs to perform travel-related tasks by interacting with Google Maps and travel planning services including location search, place details, and travel time calculations.54299MIT

Variflight MCP Serverofficial
AlicenseBqualityFmaintenanceA Model Context Protocol server implementation that provides tools for querying flight information, weather data, and flight comfort metrics through Variflight services.83,50131ISC- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI-assisted travel planning with real-time weather forecasts, place discovery, customized itinerary generation based on interests and budget, and travel distance calculations between cities.-
- AlicenseAqualityBmaintenanceEnables AI agents to plan trips by searching flights, accommodations, and activities, and managing itineraries collaboratively with role-based permissions.2061MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/peterbartsch/thistripbtw-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server