resy-mcp について
resy-mcpは、ClaudeからResyのレストラン検索、予約、キャンセル、お気に入り、Priority Notifyを管理するMCPサーバーです。Resyのウェブアプリが使う非公開エンドポイントを利用し、予約とキャンセルには確認が必要です。Resyの規約やアカウント上の制限が適用されます。
主な機能
- 01日付と人数を指定したレストラン・空席検索
- 02店舗情報と予約可能な時間枠の表示
- 03予約とキャンセル
- 04過去・今後の予約とお気に入りの一覧
- 05Priority Notify登録の管理
活用シーン
- 01日付と人数に合う席の検索
- 02特定の時間枠を確認してから予約
- 03既存予約の確認、キャンセル、整理
- 04店舗のお気に入りとPriority Notifyの管理
MCP 対応
MCPクライアントにResyのプロフィール、店舗、予約、お気に入り、Priority Notifyのツールを提供します。認証にはトークン、メールアドレスとパスワード、またはContextMint Bridgeのブラウザーセッションを使用でき、予約とキャンセルには実行前の確認が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y resy-mcpRESY_EMAILYour Resy account email. Optional — leave unset to use the ContextMint Bridge browser extension instead.RESY_PASSWORDシークレットYour Resy account password. Optional — leave unset to use the ContextMint Bridge browser extension instead.RESY_AUTH_TOKENシークレットPre-obtained x-resy-auth-token. Overrides email/password and the ContextMint Bridge path. Power users / CI only.RESY_DISABLE_FETCHPROXYSet to '1' to disable the fetchproxy fallback (forces RESY_EMAIL+PASSWORD or RESY_AUTH_TOKEN).RESY_API_KEYシークレットPin the api key, beating both the key captured from the live site and the compiled-in default. Rotation does not require it: the key is captured and cached automatically.RESY_TOKEN_CACHEシークレットSet to false to disable the on-disk token cache and re-authenticate on every process start. Defaults to enabled.RESY_TOKEN_FILEシークレットAbsolute path for the token cache file. Defaults to $MCP_DATA_DIR/.resy-mcp/token.json.RESY_API_KEY_FILEシークレットAbsolute path for the api-key cache file. Defaults to $MCP_DATA_DIR/.resy-mcp/api-key.json. Holds the bare key captured from the live site, which takes precedence over the compiled-in default.RESY_CAPTURE_TIMEOUTSeconds to wait for the signed-in page to make an API call the bridge can read the auth token from. Defaults to 30. Capture resolves on the next matching request, so an idle tab needs a longer window than a busy one.RESY_WS_PORTPort for the fetchproxy bridge. The whole fleet shares 37149 (the ContextMint Bridge extension dials it), so override only for local development, test isolation, or a hosted bridged registration — this is the variable to name in the registration's bridgePortEnv.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
15掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| view | enum | いいえ | 応答形式:"compact"(既定)は、応答内の別の場所にすでに含まれているフィールドを省略します。"full" はこのサーバーが認識するすべてのフィールドを返します。compact は応答から画像/アバター URL を除去し、"full" は Resy のペイロードをそのまま返します。フィールド投影は行いません。このサーバーには、どの Resy フィールドが重要かを検証した記録がなく、投影規則を作り出すと呼び出し元が必要とするフィールドを削除するおそれがあるためです。compact | full |
詳細
resy-mcp
Claude 向けの MCP サーバーとして Resy の予約を管理します。自然言語でレストランを検索し、テーブルを予約し、予約、お気に入り、Priority Notify を管理できます。
⚠️ Resy は公式 API を公開していません。このサーバーは、Resy のウェブアプリが呼び出すものと同じ非公開エンドポイントを、公開ウェブアプリの
api_keyと、3 種類のユーザーレベルの認証方法(トークンの上書き、メールアドレスとパスワード、または fetchproxy のブラウザーブリッジ)を使って利用します。ご自身の判断でご利用ください。
ツール
| ツール | 目的 |
|---|---|
resy_get_profile | 現在のユーザープロフィール(名前、メールアドレス、予約件数) |
resy_search_venues | 日付と人数を指定して、空き状況のある店舗を検索 |
resy_find_slots | 店舗で予約可能な時間枠を一覧表示 |
resy_get_venue | 店舗の詳細情報 |
resy_book | 予約を行う(複合処理:検索 → 詳細 → 予約) |
resy_list_reservations | 今後の予約/過去の予約 |
resy_cancel | resy_token を指定してキャンセル |
resy_list_favorites | お気に入りの店舗 |
resy_add_favorite / resy_remove_favorite | お気に入りを管理 |
resy_list_notify | Priority Notify の登録 |
resy_add_notify / resy_remove_notify | Priority Notify を管理 |
利用規約への同意
この MCP サーバーを利用することで、以下の内容を確認し、同意したものとみなされます。
1. このサーバーはご自身の Resy アカウントにアクセスします。 認証には、ご自身の認証情報(メールアドレス/パスワード)または ContextMint Bridge 拡張機能を通じた、ご自身のブラウザーでのサインイン済みセッションを使用します。他人の予約にアクセスすることはなく、またアクセスできません。
2. Resy の利用規約は、resy.com を直接利用する場合と同様に、このサーバーの利用にも適用されます。 Resy の利用規約では、ボットや自動予約の使用が禁止され、レート制限が適用され、CAPTCHA が導入されています。また、自動予約ボットを使用するとアカウントが停止される可能性があると明記されています。予約は譲渡できず、転売もできません。
このサーバーのツールを呼び出すたびに、上記の規約に同意したことになります。規約はメンテナーが 2026-05-23 に確認しました。
3. 個人利用のみとし、商用利用は禁止です。 このプロジェクトは Resy または American Express と提携、承認、後援、協力関係にあるものではありません。コマンドラインから 1 人のユーザーが自身の予約を管理するのを支援することだけを目的とした、個人用の自動化ツールです。具体的には、大量予約、枠が公開された瞬間のトークンの取得、テーブルの転売、Resy との競合を目的とした利用は禁止です。予約ツールは、いずれにしても予約するつもりだったテーブルを、より速く予約するためのものです。
4. 安定性は保証されません。 このサーバーは、Resy のモバイルアプリやウェブアプリと同じ公開ウェブアプリの api_key を使用して、同じ api.resy.com エンドポイントを呼び出します。Resy はいつでもエンドポイントの形式を変更したり、キーをローテーションしたり、新たなボット検出を追加したりする可能性があります。動作しなくなることがあります。
5. このサーバーを Resy アカウントと併用した結果については、すべてご自身が責任を負います。 レート制限、枠のロックによる拒否、アカウントへの警告、停止、または禁止が含まれます。Resy が利用に異議を唱えた場合は、このサーバーの使用を中止してください。
このセクションは、メンテナーが誠意をもってまとめた規約の概要です。法的助言ではなく、Resy の実際の利用規約を変更したり、優先したりするものではありません。
インストール
npm install
npm run build
設定
認証方法を3つから選択します。クライアントは次の優先順位で試します。
-
RESY_AUTH_TOKEN— 事前に取得したx-resy-auth-tokenです。ほかのすべての設定より優先されます。CI や、すでにトークンをお持ちの上級ユーザーに便利です。 -
RESY_EMAIL+RESY_PASSWORD— 従来の方法です。/3/auth/passwordに POST し、返されたトークンをキャッシュします。 -
fetchproxy のフォールバック — 環境変数が設定されていない場合、サーバーは fetchproxy のブラウザーブリッジを使い、ログイン済みの resy.com タブ経由で
/3/auth/refreshを呼び出します。ContextMint Bridge 拡張機能をリリースページから一度インストールしてください(Chrome 版を解凍し、chrome://extensionsでパッケージ化されていない拡張機能として読み込みます。Safari 版はまだ利用できません。公開ダウンロードがない ContextMint アプリに同梱される予定です。今のところは Chrome をお使いください)。resy.com にサインインすれば準備完了です。環境変数に認証情報を設定する必要はありません。ContextMint Bridge は、fetchproxy のブラウザー拡張機能が新しい名前になったもので、メンテナーは同じです。fetchproxy の README にもリンクがあります。ソースは nullnet-app/contextmint-bridge で公開されています。ご自身でビルドするか、リリース ZIP を隣に公開されている
.sha256ファイルと照合してください(shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256)。
.env.example を .env にコピーし、使用する方法に応じて値を入力します。
# Path 2: password login (classic)
[email protected]
RESY_PASSWORD=changeme
# Path 1: direct token (overrides everything)
RESY_AUTH_TOKEN=...
# Opt-out of the fetchproxy fallback (forces 1 or 2)
RESY_DISABLE_FETCHPROXY=1
MCPB/Claude Desktop へのインストールでは、パッケージ化されたマニフェストにより、3つの任意項目すべての入力を求められます。ContextMint Bridge 経由で接続する場合は、空欄のままにしてください。
環境変数
すべての変数は任意です。
| 変数 | デフォルト | |
|---|---|---|
RESY_AUTH_TOKEN | 未設定 | 認証方法1:事前に取得した x-resy-auth-token をそのまま使用します。ほかのすべての設定より優先されます。 |
RESY_EMAIL / RESY_PASSWORD | 未設定 | 認証方法2:パスワードログインです。ブラウザーのないホストでのみ必要です。 |
RESY_DISABLE_FETCHPROXY | 未設定 | 1 にすると、ContextMint Bridge 経由の接続(方法3)を無効にします。 |
RESY_TOKEN_CACHE | オン | false にすると、ディスク上のトークンキャッシュを無効にします。ブリッジ経由で取得したトークンは、最大24時間キャッシュされます。 |
RESY_TOKEN_FILE | $MCP_DATA_DIR/.resy-mcp/token.json | トークンキャッシュのパスです。 |
RESY_API_KEY | キャプチャ済み | Web アプリの API キーを固定します。タブからキャプチャしたキーや組み込みのデフォルト値より優先されます。キーのローテーション時は、この設定がなくても処理されます。 |
RESY_API_KEY_FILE | $MCP_DATA_DIR/.resy-mcp/api-key.json | API キーのキャッシュパスです(キーのみを保存します)。 |
RESY_CAPTURE_TIMEOUT | 30 | ブリッジがトークンを読み取れる API 呼び出しをタブが行うまで待機する秒数です。 |
RESY_WS_PORT | 37149 | ブリッジの集約ポートです。同じマシン上のすべての fetchproxy MCP がこのポートを共有するため、変更する場合はすべてを変更してください。ローカル開発、テスト、またはホスト型登録のブリッジポートに使用します。 |
確認
resy_book と resy_cancel は、変更を加える前に確認を求めます。確認プロンプトを表示できるクライアント(Claude Code)では、MCP_CONFIRM_ELICITATION=off にしない限り、プロンプトが表示されます。確認プロンプトを表示できないクライアントでは、最初の呼び出しでプレビューと confirmToken が返され、そのトークンを指定して再度呼び出した場合にのみ処理が実行されます。
| 変数 | デフォルト | |
|---|---|---|
MCP_CONFIRM_MODE | ask-user | 確認プロンプトを表示できないクライアント(claude.ai、Claude Desktop)で書き込みを行う際の動作です。ask-user:2段階で実行します。最初の呼び出しでは何も行わず、プレビューとトークンを返します。モデルは、トークンを指定して再度呼び出す前に、チャットでユーザーの承認を得る必要があります。auto:同じく2段階で実行しますが、モデルはプレビューを確認した後、自らトークンを使用できます。refuse:そのようなクライアントでは書き込みを拒否します。プロンプトを表示できるクライアント(Claude Code)では、MCP_CONFIRM_ELICITATION=off にしない限り、常に実際のプロンプトが表示されます。認識されない値は refuse として扱われます。 |
MCP_CONFIRM_ELICITATION | on | off にすると確認プロンプトは表示されず、すべてのクライアントで MCP_CONFIRM_MODE に従って処理されます。プロンプトに対応しているとされるものの、実際にはプロンプトが表示されないクライアント(書き込みが停止する opencode 2.0.x)では、この値を設定してください。それ以外の値では on のままとなり、stderr に警告が表示されます。 |
MCP_CONFIRM_TTL_SECONDS | 600 | トークンの有効期間です。 |
MCP_CONFIRM_SECRET | プロセスごとにランダム | 署名キーです。サーバーの再起動後もトークンを有効にする必要がある場合にのみ設定してください。mcp-host では、ホストが子プロセスごとに安定したキー(MCP_HOST_CONFIRM_SECRET)を提供し、使用済みトークンは MCP_DATA_DIR に記録されるため、アイドル状態からの再起動後も承認が有効です。 |
さらに、resy_book はプレビューに表示された枠と完全に一致する枠のみを予約します。プロンプトを表示できないクライアントでは、プレビュー自体に confirmToken が含まれ、枠の日時、座席タイプ、条件に紐付けられます。承認後、モデルはプレビューの日時を desired_time として指定し、トークンを付けて再度呼び出します。プロンプトを表示できるクライアントでは、確認を求められる前に、呼び出しで枠を指定する必要があります(desired_time + slot_type + terms_token)。その間に枠または条件が変更された場合、予約は行われず、新しいプレビューが返されます。
実行(ローカル stdio)
node dist/bundle.js
テスト
npm test # tsc typecheck + unit tests (mocked fetch)
npm run smoke # live endpoint probe — requires real .env
注記
- api key は resy.com の JS バンドルに埋め込まれている公開キーです。サインイン済みのタブから取得してキャッシュされるため、キーがローテーションされても自動的に反映されます。特定のキーを固定する
RESY_API_KEYは、キーを上書きしたい場合にのみ必要です。 - Favorites と Priority Notify のエンドポイントパスはリバースエンジニアリングによるものです。実際のエンドポイントが異なる場合は、
npm run smokeを実行して調整してください。
このプロジェクトは AI(Claude Opus 4.7)によって開発・保守されています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。