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 への認証付きプロキシとして動作し、データモデルと操作順序の MCP instructions を備えています。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイント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 サーバー

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 操作を厳選して表示したものです。詳しくはツールの再生成をご覧ください。

ツール機能
whoamiAPI キーがどのアカウントに属しているかを確認します(接続確認に便利です)。
list_tripsユーザーの旅行を一覧表示します。ステータス(planning、ready、finished、cancelled)で絞り込めます。
get_trip1 件の旅行の全情報(バリエーション、目的地、オプション、イベント)を取得します。編集する前に必ず必要です。
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_option3 種類のいずれかの既存オプションを編集します。
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ヒントを備えているため、クライアントはどのツールを無人で実行しても安全かをすぐに判断できます。

ヒント該当するもの
readOnlyHint4つの参照ツール:whoami、list_trips、get_trip、list_goals。残りの20個は書き込みを行います。
destructiveHintdelete_trip_itemのみです。それ以外はすべて、レコードを追加するか、フィールドをその場で編集します。
idempotentHintupdate_*/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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。