mcpField
M
My Next Adventure

My Next Adventure

远程服务
mynextadventure.cloud地图与出行05 天前更新

关于 My Next Adventure

My Next Adventure 是用于在 MyNextAdventure 中规划旅行的远程 MCP 服务,提供行程创建、方案比较、旅行选项和活动管理及分享工具;每次请求均使用调用者的 API 密钥。

主要功能

  1. 01创建和管理旅行及行程方案
  2. 02添加目的地并调整顺序
  3. 03提出住宿和交通选项
  4. 04添加和管理活动与事件
  5. 05查看旅行目标并创建分享链接

适用场景

  1. 01拟定行程并比较不同日期方案
  2. 02比较目的地的住宿和交通选择
  3. 03添加活动并标记是否已确定
  4. 04分享只读旅行计划

MCP 相关

该服务通过 Streamable HTTP 提供 24 种旅行规划工具,也支持本地 stdio。它是 MyNextAdventure API 的认证代理,并附带数据模型和操作顺序说明。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.mynextadventure.cloud/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

MyNextAdventure MCP 服务

一个远程 Model Context Protocol 服务,让 AI 助手能够在 MyNextAdventure 中规划旅行——创建行程、安排日程、推荐航班和酒店、添加活动,并分享结果。

它以无状态 Cloudflare Worker 的形式运行,是位于 MyNextAdventure 公共 API 前端的轻量级认证代理:它不存储任何行程数据,并使用调用者自己的 API 密钥将每次调用转发到 API。

  • 生产环境: https://mcp.mynextadventure.cloud/mcp(Streamable HTTP)
  • 上游 API: https://api.mynextadventure.cloud(v1 公共 API)

身份验证

每个请求都需要 MyNextAdventure API 密钥。在应用的 设置 → API 密钥 中创建密钥,然后通过以下任一方式发送:

  • Authorization: Bearer <api-key> — 大多数 MCP 客户端会使用此方式,mcp-remote 也是如此;或者
  • X-API-Key: <api-key> — 适用于只允许设置自定义请求头的客户端。

Worker 会将密钥作为 X-API-Key 转发给 API。未携带密钥的请求会收到 401 响应。密钥能执行的操作,助手都能执行:密钥按用户分配,因此助手只能查看该用户的行程。

密钥的存储位置。 服务是无状态的:每个请求都会从请求头中读取密钥,用它向 MyNextAdventure API 发起一次调用,然后立即丢弃——没有会话存储,也没有 Durable Object 在请求之间保留密钥。密钥绝不会被记录,也不会在请求或用户之间共享。你可以随时在应用的「设置 → API 密钥」中撤销密钥。

工具

24 个工具,涵盖对话式规划实际需要的操作。每个工具都是 MyNextAdventure API 操作的精选视图 — 参见重新生成工具。

工具功能
whoami查看 API 密钥所属的账户(便于检查连接)。
list_trips列出用户的行程;可按状态筛选(planning、ready、finished、cancelled)。
get_trip获取单个行程的完整信息 — 变体、目的地、选项、活动。任何编辑操作前都需要调用。
create_trip创建一个新的空行程。
update_trip重命名、设置封面照片,或推进旅程的生命周期状态。
create_trip_share_link创建或刷新公开的只读分享链接。
create_variant添加备选计划(日期设置在此处:精确日期或灵活日期)。
duplicate_variant复制一个变体及其全部内容。
update_variant重命名变体、更改日期或备注。
select_variant将某个变体标记为选定计划。
add_destination按行程顺序向变体添加一个停留点。
update_destination更改停留点的地点名称、日期或备注。
reorder_destinations调整变体中停留点的顺序。
add_accommodation_option为目的地推荐住宿地点。
add_transport_option推荐前往目的地的交通方式。
add_getting_around_option推荐当地出行方式(公共交通、租车等)。
update_destination_option编辑任意一种类型的现有选项。
select_destination_option选定某个选项 — 或者在不提供 optionId 时取消选定。
add_event在变体中添加一项活动(博物馆、音乐会、餐厅、旅行团)。
update_event编辑一项活动。
toggle_event切换活动状态,使其在已确定和“只是个想法”之间变更。
delete_trip_item永久删除变体、目的地、选项或活动。删除整个变体时还必须提供 confirm: true。
list_goals列出用户的旅行目标/愿望清单。
add_goal根据名称或 URL 添加目标。

该服务还提供描述数据模型(trip → variants → destinations → options,活动归属变体)及常见操作顺序的 MCP instructions,因此客户端不必猜测工作流。

API 支持但尚未开放的功能:协作者访问权限管理和邀请、投票、收藏集、邀请令牌、目标↔行程关联、API 密钥管理,以及删除行程。

工具注解

每个工具都会发布一个人类可读的 title(同时也是 annotations.title;在 scripts/tool-manifest.ts 中设置,这是 Claude connectors directory 的必填项),并在 tools/list 中提供全部四个 MCP ToolAnnotations 提示,让客户端一眼就能看出哪些工具可以安全地无人值守运行:

提示为 true 的情况
readOnlyHint4 个查询工具:whoami、list_trips、get_trip、list_goals。其他 20 个会写入数据。
destructiveHint仅 delete_trip_item。其他所有工具都会添加记录或就地编辑字段。
idempotentHintupdate_* / select_* 工具、reorder_destinations、create_trip_share_link(API 会返回现有令牌)以及 delete_trip_item。所有 add_* / create_* 工具均为 false——第二次调用会添加第二条记录;toggle_event 也为 false,因为它会切换标志。
openWorldHint请求可能会访问第三方 API 的 8 个工具:3 个读取工具(Kinde 用户资料、Google Places、货币转换),以及 add_accommodation_option、add_transport_option、add_event、update_destination_option 和 update_event;如果提供了 googlePlaceId,这些工具会通过 Google Places 解析它。其余工具只会访问 MyNextAdventure 存储。

规范中的默认值较为保守(destructiveHint 和 openWorldHint 默认都为 true),因此清单要求为每个工具声明全部四项,而不是继承默认值。test/annotations.test.ts 按工具记录了预期分类,并将 readOnlyHint 与每个工具实际发出的 HTTP 动词交叉核对。

连接

Claude Desktop

依次选择“设置” → “开发者” → “编辑配置”,然后添加:

{
  "mcpServers": {
    "mynextadventure": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp.mynextadventure.cloud/mcp",
        "--header",
        "Authorization: Bearer ${MNA_API_KEY}"
      ],
      "env": { "MNA_API_KEY": "your-api-key" }
    }
  }
}

重启 Claude Desktop;这些工具会显示在连接器下方。

claude.ai / Claude Code

添加一个指向 https://mcp.mynextadventure.cloud/mcp 的自定义连接器,并设置 Authorization: Bearer <api-key> 标头。从 Claude Code 连接:

claude mcp add --transport http mynextadventure https://mcp.mynextadventure.cloud/mcp \
  --header "Authorization: Bearer <api-key>"
ChatGPT

依次选择“设置” → “连接器” → “添加自定义连接器”,MCP 服务 URL 设为 https://mcp.mynextadventure.cloud/mcp,身份验证选择“自定义标头”,并设置 X-API-Key: <api-key>(或 Authorization: Bearer <api-key>)。

其他 MCP 客户端

通过 /mcp 使用 Streamable HTTP。GET / 会返回一份简短的 JSON 健康状态文档,其中包含端点和工具数量。

本地 stdio

通过 stdio 使用相同的工具,供会启动子进程的客户端使用;密钥保存在 MNA_API_KEY 中。Glama 的构建检查会通过 mcp-proxy 在此模式下运行。

npm ci
MNA_API_KEY=<api-key> npm run start:stdio

开发

npm install
npm run dev              # wrangler dev on http://localhost:8787
npm test                 # vitest: request building, schemas, generator freshness
npm run type-check       # tsc --noEmit
npm run generate:tools   # regenerate src/generated/tools.ts from the OpenAPI spec
npx tsx scripts/smoke.ts # drive the MCP protocol against localhost:8787

scripts/smoke.ts 会执行真实握手(initialize → tools/list → 一次 tools/call), 并从 $MNA_API_KEY 或 ~/.config/mna/credentials 读取 API 密钥。除非传入 --force,否则它不会调用会修改数据的工具。若要测试写入工具而不触碰真实 数据,可将 worker 指向本地 mock:

npx wrangler dev --var MNA_API_BASE_URL:http://localhost:8899
重新生成工具

工具架构是生成的,不是手动编写的:

spec/openapi-v1.json          (the API's OpenAPI snapshot)
        +
scripts/tool-manifest.ts      (which operations become tools; names, descriptions, annotations)
        ↓  scripts/generator.ts
src/generated/tools.ts        (committed; zod input schemas, annotations + request builders)

要添加或更改工具,请编辑 scripts/tool-manifest.ts 并运行 npm run generate:tools。 切勿手动编辑 src/generated/tools.ts——如果它与规范不一致,测试会失败。

清单条目对应一个 API 操作,或者将多个没有请求体的操作通过判别参数分组(例如 delete_trip_item 的 target、select_destination_option 的 action),以减少工具数量。路径参数可以重命名(id → tripId),查询参数可以限制为枚举值,也可以覆盖描述——其他所有内容,包括请求体架构,均来自规范。

每个条目还必须带有 annotations(全部四项 MCP 提示;参见 工具注解)。TypeScript 会强制执行此要求,因此添加新工具时必须先对其分类;test/annotations.test.ts 还会根据预期表检查分类结果。

部署

npm run deploy(wrangler)——仅用于生产环境,因此需要维护者授权;CI 从不部署此 worker。

开发

npm ci
npm run type-check
npm test        # includes a drift test: src/generated/tools.ts must match the generator output
npm run dev     # wrangler dev

工具由 scripts/generate-tools.ts 根据 vendored OpenAPI 快照 spec/openapi-v1.json 生成 (规范的在线版本:https://api.mynextadventure.cloud/api/v1/openapi.json)。更新快照后请重新生成。

本仓库是 mcp.mynextadventure.cloud 的可部署源代码。开发工作也在 My Next Adventure monorepo 中进行,并在发布时同步到此处。 欢迎提交 Issue 和 PR。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。