myhotlunchbox-mcp について
myhotlunchbox-mcpは、My Hot Lunchboxを利用する保護者向けのMCPサーバーです。給食カレンダーの確認、児童や注文の管理、配達と支払いの追跡ができ、書き込みには確認が必要です。決済には登録済みカードを使います。
主な機能
- 01給食カレンダー、メニュー、注文の確認
- 02児童情報と給食注文の管理
- 03取引、定期購入、ギフトカードの確認
- 04決済とカレンダー・注文PDFの生成
- 05書き込み内容の確認プレビュー
活用シーン
- 01日付ごとの注文可能な食事と価格の確認
- 02児童の給食注文の作成や変更
- 03アカウントの支払いと定期購入の確認
- 04内容を確認して登録済みカードで決済
MCP 対応
MCPサーバーとして、My Hot Lunchboxの保護者アカウント向け読み取り・書き込みツールをクライアントに提供します。注文変更や支払いなどの書き込みには事前確認が必要です。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y myhotlunchbox-mcpMYHOTLUNCHBOX_USERNAMEEmail address you sign in to ordernow.myhotlunchbox.com withMYHOTLUNCHBOX_PASSWORDシークレットPassword for that My Hot Lunchbox accountMYHOTLUNCHBOX_BASE_URLOverride the app origin (defaults to https://ordernow.myhotlunchbox.com)MYHOTLUNCHBOX_OUTPUT_DIRDirectory the print tools write PDFs into (defaults to the working directory)MYHOTLUNCHBOX_TOKEN_CACHEシークレットSet to false to disable the on-disk token cache and re-authenticate on every process start. Defaults to enabled.MYHOTLUNCHBOX_TOKEN_FILEシークレットAbsolute path for the token cache file. Defaults to $MCP_DATA_DIR/.myhotlunchbox-mcp/token.json.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
35掲載時のツール一覧 · 1 週間前に更新
このツールにパラメーターはありません。
詳細
myhotlunchbox-mcp
My Hot Lunchbox 用の MCP サーバーです。学校のランチカレンダーの確認、生徒の管理、注文の作成や変更、保護者アカウントでの配達状況や支払いの追跡ができます。
AI(Claude Code)が開発・保守しています。ご自身の判断でご利用ください。
インストール
npx myhotlunchbox-mcp
または、Claude Code プラグインとして使用します。
/plugin marketplace add chrischall/myhotlunchbox-mcp
/plugin install myhotlunchbox-mcp
設定
[email protected]
MYHOTLUNCHBOX_PASSWORD=…
設定は以上です。このサーバーは、ordernow.myhotlunchbox.com に対してサーバー側で実際にサインイン(OAuth2 パスワードグラント)を行い、受け取った更新トークンでセッションを更新します。ブラウザー拡張機能、サインイン済みのタブ、取得した Cookie は不要です。ディスクには何も書き込みません。
MYHOTLUNCHBOX_BASE_URL を設定すると、アプリのオリジンが移動した場合に上書きできます。https:// が必須です(http:// が許可されるのは localhost のみ)。トークンキャッシュはこの URL に紐付けられるため、変更すると再度サインインします。
ホストによるインストール時の tools/list プローブが引き続き動作するよう、サーバーは認証情報なしで起動します。設定エラーは、最初のツール呼び出し時に表示されます。
ツール
ツールは 35 個あり、すべて mhlb_ がプレフィックスです。読み取りツール 20 個はすべて、実際の保護者アカウントに対してライブ検証済みです(node scripts/verify-reads.mjs)。書き込みツール 14 個は未検証です。詳細は以下をご覧ください。
読み取りに関する検証結果には日付が付いています。ツールのファイルに変更がなくても、古くなる可能性があるためです。SDK または zod のメジャーバージョンアップによって、内部のすべての読み取りパスの再配線が必要になります。1.0.0 での最終再実行は 2026-09-19 です。MCP SDK v2 への移行と、強制された zod 4.6.2 への更新後のツリーで、20/20 件が成功しました。
アカウント — mhlb_whoami、mhlb_session_reset
ヘルスチェック — mhlb_healthcheck(このコネクターが動作しているかを確認します。認証情報が解決されたか、My Hot Lunchbox が認証情報を受け入れたか、何を修正すればよいかを報告します。回答せずにエラーを投げる mhlb_whoami とは異なります)
生徒 — mhlb_list_students、mhlb_get_student_form、
mhlb_new_student_form、mhlb_create_student、mhlb_update_student、
mhlb_delete_student
カレンダー — mhlb_get_calendar、mhlb_get_day
注文 — mhlb_get_cart、mhlb_get_cart_tabs、mhlb_get_menu、
mhlb_get_order_form、mhlb_get_order、mhlb_create_order、
mhlb_update_order、mhlb_delete_order
請求 — mhlb_list_transactions、mhlb_get_transaction、
mhlb_list_subscriptions、mhlb_get_subscription_settings、
mhlb_set_subscription_enabled、mhlb_unsubscribe_order、
mhlb_list_gift_cards、mhlb_apply_gift_card、mhlb_get_coupon、
mhlb_apply_coupon、mhlb_remove_coupon。mhlb_list_gift_cards は、各コードの末尾 4 文字のみを表示します(コードは換金可能な金銭にあたります)。コード全体を表示するには、revealCodes: true を渡してください。
チェックアウト — mhlb_init_checkout、mhlb_checkout
レポート — mhlb_print_calendar、mhlb_print_orders、
mhlb_print_transaction。これらは実際の PDF を返します。各ツールはファイルを書き込み、そのパスを返します。inline: true を指定すると、バイト列をインラインで返します。保存先を指定するには、MYHOTLUNCHBOX_OUTPUT_DIR(.mcpb の「Report folder」設定)を設定してください。デフォルトでは、ホストが MCP_DATA_DIR を設定している場合はその配下の reports/、設定していない場合は ~/Downloads になります。既存のファイルが上書きされることはありません。
確認
変更を伴うツールは、何かを送信する前に必ず確認を求めます。確認プロンプトを表示できるクライアント(Claude Code)では、ツールが送信する正確なリクエストとともにプロンプトが表示されます。表示できないクライアント(claude.ai、Claude Desktop)では、最初の呼び出しではネットワーク通信は行われず、送信予定の内容を正確に示すプレビューと confirmToken が返されます。同じ引数とそのトークンを使って再度呼び出した場合にのみ処理が実行されます。トークンは一度だけ使用でき、2 回の呼び出しの間に引数を変更すると拒否されます(DRAFT_CHANGED)。
| variable | default | |
|---|---|---|
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 | random per process | 署名キーです。サーバー再起動後もトークンを有効にする必要がある場合のみ設定してください。 |
mhlb_checkout は実際の支払い方法に請求します。サーバーは orderIds に基づいて請求額を計算するため、クライアント側で金額を確定させることはできません。リクエストには照合対象となる合計金額が含まれていないためです。したがって、expectedTotal は制約ではなく記録情報です。予想した金額を指定すると、確認プレビューに表示され(トークンにも紐付けられ)、結果にも返されるため、予期しない請求があった場合に、それを発生させた呼び出しを追跡できます。このツールが明確に拒否するのは、orderIds がない状態で 0 以外の金額を支払うことです。
書き込み:リクエスト形式を取得済み、受け入れは未検証
npm run capture:writes は、ローカルプロキシ経由で変更を伴うすべてのツールを実行します。このプロキシは読み取りを実際のサービスに転送しますが、書き込みには自ら応答するため、ペイロードは実際のサーバーモデルから構築され、上流では何も実行されません。また、13 個すべてのツールが confirmToken で確認されるまで何も送信しないことも確認できます。
この方法で判明し、修正された点は次のとおりです。mhlb_delete_order と mhlb_unsubscribe_order が受け取るのは注文モデルではなく {orderId, eventDate, studentId, isRepeated, isSubscribed} であり、チェックアウトが受け取るのは {orderIds, checkoutType, couponCode, giftCardCode, schoolDonations} です。
**未検証なのは、サーバーがこれらのリクエスト本文を受け入れるかどうかです。**形式が正しくても受け入れられるとは限りません。それを示せるのは実際の書き込みだけですが、これまで一度も行われていません。承認する前に確認プレビューを調べ、実行後にも再読み込みしてください。200 は書き込みが永続化された証拠にはなりません。
mhlb_checkout に関する特有の制限が 2 つあります。
- アカウントにすでに保存されているカードでしか支払えません。新しいカードで支払うには、ブラウザー上で Stripe.js が生成する Stripe トークンが必要ですが、サーバー側のクライアントでは生成できません。
- 冪等性キーを生成し(指定された場合を除く)、結果とエラーの両方に含めて返します。チェックアウトが曖昧な形で失敗した場合は、新たに呼び出すのではなく、同じ
idempotencyKeyを使って再試行してください。これにより、再試行による二重請求を防げます。自分で指定するキーは、両方の確認呼び出しで同じものを使う必要があります。
注文は読み取り・変更・書き戻しで行います
「商品 X を追加する」呼び出しはありません。モデルを取得して編集し、全体を送り返します。
mhlb_get_menu— 指定日に学生が注文できるものmhlb_get_order_form— 入力する注文モデル(そのdataフィールド)mhlb_create_order— そのdataを送り返す(プレビューも確認します)mhlb_init_checkout→mhlb_checkout— 価格を確認してから支払います
ペイロードから省略されたフィールドは、保持されずクリアされます。
学校、ベンダー、またはメニューが作成したテキストを含む読み取り(カレンダー、メニュー、カート、注文、学生、取引、サブスクリプション、クーポン)では、{"untrusted_content":true,"note":…,"data":…} が返されます。ペイロードは data の下にあり、note は、そのテキストを指示ではなくデータとして扱うようモデルに伝えます。
シェルスキル
skills/myhotlunchbox を使うと、MCP プロセスなしで curl から同じアカウントを操作できます。スクリプト内や、このサーバーがインストールされていないマシンで役立ちます。
注記
/deliveryInfo/*と/calendar/viewMatchedVendorsは、コンパイル済みクライアントでは保護者向けに見えますが、保護者アカウントでは403を返します。これらは学校/ベンダーのダッシュボード用です。これらをラップするツールはありません。- 接続されているのは保護者ロールのみです。同じ API は学校管理者ロールとベンダーロールにも対応していますが、それらのエンドポイントは
403を返し、クライアントはセッションの不具合ではなくロールの不一致として報告します。 docs/MYHOTLUNCHBOX-API.mdには、API のマッピング方法と、検証済みの内容が正確に記録されています。docs/api-surface.txtには、359 件のエンドポイントをすべて抽出した内容があります。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。