My Next Adventure について
My Next Adventure は、MyNextAdventure で旅行を計画するリモート MCP サーバーです。旅程の作成、案の比較、旅行オプションやイベントの管理、共有に対応し、各リクエストには呼び出し元の API キーを使います。
主な機能
- 01旅行と旅程案の作成・管理
- 02目的地の追加と順序変更
- 03宿泊先と交通手段の候補追加
- 04アクティビティやイベントの管理
- 05旅行目標の一覧表示と共有リンク作成
活用シーン
- 01日程候補を比較しながら旅程を作成
- 02目的地ごとの宿泊先や交通手段を比較
- 03アクティビティを追加して確定状態を設定
- 04読み取り専用の旅行計画を共有
MCP 対応
Streamable HTTP で旅行計画用の 24 ツールを提供し、ローカル stdio にも対応します。MyNextAdventure API への認証付きプロキシとして動作し、データモデルと操作順序の MCP instructions を備えています。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.mynextadventure.cloud/mcpclaude mcp add --transport http cloud-mynextadventure-trip-planner https://mcp.mynextadventure.cloud/mcp{"mcpServers":{"cloud-mynextadventure-trip-planner":{"type":"http","url":"https://mcp.mynextadventure.cloud/mcp"}}}Cursor で開く{"servers":{"cloud-mynextadventure-trip-planner":{"type":"http","url":"https://mcp.mynextadventure.cloud/mcp"}}}VS Code で開く{"mcpServers":{"cloud-mynextadventure-trip-planner":{"type":"http","url":"https://mcp.mynextadventure.cloud/mcp"}}}{"mcpServers":{"cloud-mynextadventure-trip-planner":{"serverUrl":"https://mcp.mynextadventure.cloud/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
MyNextAdventure MCP サーバー
AI アシスタントが MyNextAdventure で旅行を計画できるリモート Model Context Protocol サーバーです。旅行の作成、旅程の作成、フライトやホテルの提案、アクティビティの追加、計画の共有ができます。
ステートレスな Cloudflare Worker として動作し、MyNextAdventure の公開 API の前段に置かれた、認証付きの薄いプロキシです。旅行データは一切保持せず、呼び出し元自身の API キーを使って、すべての呼び出しを API に転送します。
- 本番環境:
https://mcp.mynextadventure.cloud/mcp(Streamable HTTP) - 上流 API:
https://api.mynextadventure.cloud(v1 公開 API)
認証
すべてのリクエストに MyNextAdventure の API キーが必要です。アプリの Settings → API keys から作成し、次のいずれかの方法で送信してください。
Authorization: Bearer <api-key>— ほとんどの MCP クライアントが送信する形式で、mcp-remoteもこの形式を使用します。またはX-API-Key: <api-key>— カスタムヘッダーのみ設定できるクライアント向けです。
Worker はキーを X-API-Key として API に転送します。キーのないリクエストには 401 が返されます。キーで実行できる操作は、アシスタントも実行できます。キーはユーザーごとに発行されるため、アシスタントに表示されるのはそのユーザーの旅行だけです。
キーの保存場所。 サーバーはステートレスです。キーは各リクエストのヘッダーから読み取られ、そのリクエストに対する MyNextAdventure API の呼び出しに使われた後、保存されることはありません。セッションストレージはなく、リクエスト間でキーを保持する Durable Object もありません。キーがログに記録されたり、リクエスト間やユーザー間で共有されたりすることはありません。アプリの Settings → API keys から、いつでもキーを取り消せます。
ツール
24 個のツールで、会話による計画に実際に必要な操作をカバーしています。それぞれは MyNextAdventure API 操作を厳選して表示したものです。詳しくはツールの再生成をご覧ください。
| ツール | 機能 |
|---|---|
whoami | API キーがどのアカウントに属しているかを確認します(接続確認に便利です)。 |
list_trips | ユーザーの旅行を一覧表示します。ステータス(planning、ready、finished、cancelled)で絞り込めます。 |
get_trip | 1 件の旅行の全情報(バリエーション、目的地、オプション、イベント)を取得します。編集する前に必ず必要です。 |
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 | 3 種類のいずれかの既存オプションを編集します。 |
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の4つのToolAnnotationsヒントを備えているため、クライアントはどのツールを無人で実行しても安全かをすぐに判断できます。
| ヒント | 該当するもの |
|---|---|
readOnlyHint | 4つの参照ツール:whoami、list_trips、get_trip、list_goals。残りの20個は書き込みを行います。 |
destructiveHint | delete_trip_itemのみです。それ以外はすべて、レコードを追加するか、フィールドをその場で編集します。 |
idempotentHint | update_*/select_*ツール、reorder_destinations、create_trip_share_link(APIは既存のトークンを返します)、delete_trip_itemです。すべてのadd_*/create_*では2回目の呼び出しで2つ目のレコードが追加されるため、またフラグを反転させるtoggle_eventでも、これはfalseです。 |
openWorldHint | リクエストがサードパーティAPIに到達する可能性のある8つのツールです。3つの参照ツール(Kindeのプロフィール、Google Places、通貨換算)に加え、googlePlaceIdが指定されている場合にGoogle Placesで解決するadd_accommodation_option、add_transport_option、add_event、update_destination_option、update_eventです。残りのツールはMyNextAdventureのストレージのみを操作します。 |
仕様のデフォルト値は慎重な設定(destructiveHintとopenWorldHintはいずれもデフォルトでtrue)なので、マニフェストでは継承せず、ツールごとに4つすべてを指定する必要があります。test/annotations.test.tsには、ツールごとの想定分類が記載されており、各ツールが実際に使用するHTTPメソッドとreadOnlyHintを照合します。
接続
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でストリーミング可能な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 → 1回のtools/call)を行い、APIキーを$MNA_API_KEYまたは~/.config/mna/credentialsから読み込みます。--forceを指定しない限り、変更を伴うツールの呼び出しを拒否します。実データに触れずに書き込みツールを試すには、ワーカーがローカルのモックを参照するようにします。
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は手作業で編集しないでください。仕様との差異があるとテストが失敗します。
マニフェストのエントリーには、1つのAPI操作を指定するか、判別子引数(delete_trip_itemのtarget、select_destination_optionのaction)を使って、複数のボディなし操作をまとめ、ツール数を抑えます。パスパラメーターの名前は変更でき(id → tripId)、クエリパラメーターは列挙型に絞り込むことができ、説明も上書きできます。リクエストボディのスキーマを含むそれ以外のすべては、仕様から取得されます。
各エントリーにはannotations(MCPの4つのヒントすべて。詳細はツールのアノテーションを参照)も含める必要があります。TypeScriptでこれを強制するため、分類せずに新しいツールを追加することはできません。また、test/annotations.test.tsで結果を想定テーブルと照合します。
デプロイ
npm run deploy(wrangler)は本番環境専用のため、メンテナーのみ実行できます。CIがこのワーカーをデプロイすることはありません。
開発
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
ツールは、ベンダー提供の OpenAPI スナップショット spec/openapi-v1.json
(正式なライブ仕様:https://api.mynextadventure.cloud/api/v1/openapi.json)から、
scripts/generate-tools.ts を使って生成されます。スナップショットを更新した後に再生成してください。
このリポジトリは mcp.mynextadventure.cloud のデプロイ可能なソースです。開発は My Next Adventure モノレポでも行われ、リリース時にこちらへ同期されます。Issue や PR は歓迎します。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。