
My Next Adventure
cloud.mynextadventurePublished by mynextadventure.cloudOfficial publisherv1.0.1Updated Oct 24, 2026
Create trips, compare variants side by side, and add accommodation, transport and event options.
Overview
Remote MCP server that lets an assistant build and edit MyNextAdventure trips: variants, destinations, flights, hotels and activities.
- What you can do
- Check the connected account and list trips or travel goals
- Read a full trip with its variants, destinations, options and events
- Create and update trips, variants and destinations, and reorder stops
- Propose accommodation, transport and getting-around options, then select or edit them
- Add, edit, toggle or delete activities, and create public read-only share links
- When to use it
- Useful when you plan trips in MyNextAdventure and want an assistant to draft itineraries, compare plan variants, gather hotel and flight options, and keep activities organised through the conversation.
- Requirements
- A remote Streamable HTTP endpoint; no local install needed. Requires a MyNextAdventure account and an API key created in the app under Settings, sent as an Authorization Bearer header or an X-API-Key header. A local stdio mode exists for subprocess clients, using the MNA_API_KEY variable.
Installation
In SourceWeft
- Open My Next Adventure in the dashboard and add it to a workspace.
- Connect the required credentials. They are stored privately and never shown on public pages.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/cloud.mynextadventure%2Ftrip-planner/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config. The client completes OAuth sign-in on first connect.
{
"mcpServers": {
"my-next-adventure": {
"type": "http",
"url": "https://mcp.mynextadventure.cloud/mcp"
}
}
}README
MyNextAdventure MCP server
A remote Model Context Protocol server that lets an AI assistant plan trips in MyNextAdventure — create a trip, lay out the itinerary, propose flights and hotels, add things to do, and share the result.
It runs as a stateless Cloudflare Worker and is a thin, authenticated proxy in front of the MyNextAdventure public API: it holds no trip data of its own, and forwards every call to the API under the caller's own API key.
- Production:
https://mcp.mynextadventure.cloud/mcp(Streamable HTTP) - Upstream API:
https://api.mynextadventure.cloud(v1 public API)
Authentication
Every request needs a MyNextAdventure API key. Create one in the app under Settings → API keys, then send it as either:
Authorization: Bearer <api-key>— what most MCP clients send, and whatmcp-remotedoes, orX-API-Key: <api-key>— for clients that only let you set custom headers.
The worker forwards it to the API as X-API-Key. Requests without a key get a 401.
Whatever the key can do, the assistant can do: keys are per-user, so the assistant only ever
sees that user's trips.
Where your key lives. The server is stateless: your key is read from the headers of each request, used to make that one call to the MyNextAdventure API, and never stored — there is no session storage and no Durable Object holding it between requests. It is never logged and is not shared between requests or users. Revoke a key any time in the app under Settings → API keys.
Tools
24 tools, covering the operations conversational planning actually needs. Each one is a curated view over a MyNextAdventure API operation — see Regenerating the tools.
The server also ships MCP instructions describing the data model
(trip → variants → destinations → options, with events on the variant) and the usual
order of operations, so a client does not have to guess the workflow.
Not exposed yet, though the API supports them: collaborator access management and invites, voting, collections, invite tokens, goal↔trip linking, API key management, and trip deletion.
Tool annotations
Every tool publishes a human-readable title (also as annotations.title; set in
scripts/tool-manifest.ts, required by the Claude connectors directory) and all four MCP
ToolAnnotations
hints on tools/list, so clients can tell at a glance what is safe to run unattended:
The spec's defaults are the pessimistic ones (destructiveHint and openWorldHint both
default to true), so the manifest requires all four to be stated per tool rather than
inherited. test/annotations.test.ts holds the expected classification tool by tool and
cross-checks readOnlyHint against the HTTP verb each tool actually issues.
Connecting
Claude Desktop
Settings → Developer → Edit Config, then add:
Restart Claude Desktop; the tools appear under the connector.
claude.ai / Claude Code
Add a custom connector pointing at https://mcp.mynextadventure.cloud/mcp and set the
Authorization: Bearer <api-key> header. From Claude Code:
ChatGPT
Settings → Connectors → Add custom connector, MCP server URL
https://mcp.mynextadventure.cloud/mcp, authentication "custom header" with
X-API-Key: <api-key> (or Authorization: Bearer <api-key>).
Any other MCP client
Streamable HTTP at /mcp. GET / returns a small JSON health document with the endpoint
and tool count.
Local stdio
The same tools over stdio, for clients that launch a subprocess, with the key in
MNA_API_KEY. Glama's build check runs this behind mcp-proxy.
Development
scripts/smoke.ts performs a real handshake (initialize → tools/list → one tools/call),
reading the API key from $MNA_API_KEY or ~/.config/mna/credentials. It refuses to call
mutating tools unless --force is passed. To exercise write tools without touching real
data, point the worker at a local mock:
Regenerating the tools
Tool schemas are generated, not hand-written:
To add or change a tool, edit scripts/tool-manifest.ts and run npm run generate:tools.
Never edit src/generated/tools.ts by hand — a test fails if it drifts from the spec.
A manifest entry names one API operation, or groups several body-less operations behind a
discriminator argument (delete_trip_item's target, select_destination_option's
action) to keep the tool count down. Path params can be renamed (id → tripId), query
params can be narrowed to enums, and descriptions can be overridden — everything else,
including the request-body schemas, comes from the spec.
Each entry must also carry annotations (all four MCP hints; see
Tool annotations). TypeScript enforces this, so a new tool cannot be
added without classifying it, and test/annotations.test.ts checks the result against an
expected table.
Deployment
npm run deploy (wrangler) — production only, so it is gated on a maintainer; CI never
deploys this worker.
Development
Tools are generated from the vendored OpenAPI snapshot in spec/openapi-v1.json
(canonical live spec: https://api.mynextadventure.cloud/api/v1/openapi.json) via
scripts/generate-tools.ts. Regenerate after refreshing the snapshot.
This repo is the deployable source for mcp.mynextadventure.cloud. Development also
happens in the My Next Adventure monorepo and is synced here on release. Issues and
PRs welcome.
License
MIT
Source: README.md at commit 343f2ef
Tools
0Version history
2- v1.0.1LatestOct 5, 2026
- v1.0.0Sep 16, 2026
Score
85% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts