Holiday Calendar について
Holiday Calendar は、Small Business MCP Starter Kit に含まれるリモート MCP サーバーの例です。米国の連邦祝日と営業日の計算に対応する、5 つの読み取り専用ツールを提供します。
主な機能
- 01年ごとの連邦祝日一覧
- 02次の祝日の検索
- 03営業日の判定
- 04営業日を加えた日付計算
- 05期間内の営業日数の集計
活用シーン
- 01作業日程の調整前に日付を確認
- 02請求書の支払期日の見積もり
- 032 つの日付間の営業日数を集計
MCP 対応
リモート MCP エンドポイントを通じて、祝日検索や営業日計算を行う 5 つの読み取り専用ツールを公開します。MCP コネクター構築用 Next.js スターターキットのサンプルです。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://starter.modernmustardseed.com/holidaysclaude mcp add --transport http com-modernmustardseed-holiday-calendar https://starter.modernmustardseed.com/holidays{"mcpServers":{"com-modernmustardseed-holiday-calendar":{"type":"http","url":"https://starter.modernmustardseed.com/holidays"}}}Cursor で開く{"servers":{"com-modernmustardseed-holiday-calendar":{"type":"http","url":"https://starter.modernmustardseed.com/holidays"}}}VS Code で開く{"mcpServers":{"com-modernmustardseed-holiday-calendar":{"type":"http","url":"https://starter.modernmustardseed.com/holidays"}}}{"mcpServers":{"com-modernmustardseed-holiday-calendar":{"serverUrl":"https://starter.modernmustardseed.com/holidays"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
5| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| year | integer | はい | 暦年(2021~2100 年)。 |
詳細
Modern Mustard Seed の小規模ビジネス向け MCP スターターキット
Anthropic のディレクトリ審査に初回で通るように設計された、Claude 用のリモート MCP コネクターを公開しましょう。
このキットは、Modern Mustard Seed が本番環境で運用するコネクターに採用しているパターンをまとめ、フォークして使えるクリーンな Next.js プロジェクトにしたものです。
- Next.js App Router と
mcp-handlerを使った ルートテンプレート。リダイレクトなしで、コネクターごとに 1 つの URL で Streamable HTTP を提供します。 - 読み込み時に適用されるツールの規約:すべてのツールにタイトルと
readOnlyHintまたはdestructiveHintを設定し、名前は 64 文字以下の snake_case にし、説明は誘導ではなく内容を記述します。規約に違反すると、審査担当者が確認するよりずっと前にpnpm testが失敗します。 - 「Bad Request」ではなく 具体的なエラーメッセージを返し、出力サイズを Claude の上限未満に抑えます。
- Claude の共有エグレス範囲に対応したレート制限。すべての claude.ai ユーザーは
160.79.104.0/21からアクセスするため、IP をキーにした制限はなく、HTTP 429 も返しません。 - ユーザーが指定した URL を読み取るツール向けの SSRF 対策済みフェッチ機能。リッスン中のループバックサーバーにリクエストが一切届かないことをテストで証明します。
- ライブ URL に対して実際のプロンプトを実行する 評価用ハーネス。モデルも API キーも必要ありません。
- 1 つの設定ファイルをもとにした、ドキュメント、プライバシー、利用規約、サポートページのテンプレートと
/.well-known/security.txt。 - ディレクトリ登録フォームの 10 ステップと 7 つのポリシー確認事項に対応し、すべての規則に Anthropic のドキュメントへのリンクを付けた 提出チェックリスト。
- 動作するサンプル:米国連邦祝日と営業日のカレンダー。読み取り専用ツールを 5 つ備え、独自の評価 35 件すべてに合格しています。
MIT ライセンスです。Modern Mustard Seed が開発しました。
デモ
サンプルコネクターはこのリポジトリから変更なしでデプロイされ、稼働しています。
- コネクター URL:
https://starter.modernmustardseed.com/holidays(Claude の Customize > Connectors > Add custom connector から追加できます) - 審査担当者が確認するドキュメントページ:https://starter.modernmustardseed.com/docs/holidays
- プライバシー、利用規約、サポート:https://starter.modernmustardseed.com/privacy、[/terms](https://starter.modernmustardseed.com/terms)、[/support](https://starter.modernmustardseed.com/support)
- 公式 MCP Registry の登録項目:
com.modernmustardseed/holiday-calendar
node eval/holidays.eval.mjs https://starter.modernmustardseed.com を実行して、評価を試してみましょう。
クイックスタート:10分
Node 22.6 以降、pnpm、Vercel アカウントが必要です(Next.js を実行できるホストであれば利用できます)。
1. コピーを作成します。(1分)
gh repo create my-connector --template ModernMustardSeed/small-business-mcp-starter --public --clone
cd my-connector
pnpm install
または、GitHub で Use this template を選択します。
2. 実行して動作を確認します。(2分)
pnpm dev
別のターミナルで次を実行します。
pnpm test
pnpm evals http://localhost:3000
ユニットテストで 32 pass、評価で 35 of 35 passed と表示されるはずです。http://localhost:3000/docs/holidays を開くと、レビュー担当者が読むドキュメントページを確認できます。
3. 自分用にカスタマイズします。(2分)
lib/site.ts を編集し、会社名、所在地、ウェブサイト、サポート用メールアドレス、セキュリティ用メールアドレス、ポリシーの日付を設定します。すべての公開ページと security.txt はこのファイルから読み込みます。app/icon.svg と app/apple-icon.png を独自のアイコンに置き換えます。ディレクトリ掲載にはアイコンが必要です。
4. デプロイします。(3分)
リポジトリを vercel.com/new にインポートするか、ターミナルから実行します。
vercel deploy --prod
Vercel は VERCEL_PROJECT_PRODUCTION_URL を設定し、ページはその値をリンクに使用します。MCP のパスでは Attack Challenge Mode とボット保護ルールを無効にしてください。有効にすると、Claude にチャレンジページを返します。
5. デプロイを確認します。(1分)
pnpm preflight https://your-project.vercel.app
pnpm evals https://your-project.vercel.app
npx @modelcontextprotocol/inspector --cli https://your-project.vercel.app/holidays --transport http --method tools/list
Preflight は、HTTPS、リダイレクトがないこと、403 や 429 が返らないこと、すべての公開ページが 200 を返すこと、MCP ハンドシェイク、アノテーションのルールを確認します。
6. Claude で試します。(1分)
Claude で Customize > Connectors > Add custom connector を開き、https://your-project.vercel.app/holidays を貼り付けます。「2026-11-20 付けの請求書の支払期限は、10営業日後です。日付を教えてください。」と尋ねます。Claude Code では次を実行します。
claude mcp add --transport http holidays https://your-project.vercel.app/holidays
独自のコネクターを構築する
lib/holidays/tools.tsをlib/<yours>/tools.tsにコピーします。各ツールをToolSpecとして宣言します。内容は、名前、タイトル、説明、zod 入力スキーマ、アノテーション、1分あたりの制限、任意のグローバル制限、安全にログへ記録できるフィールド、そしてok(data)またはfail(code, sentence)を返すrun関数です。app/holidays/route.tsをapp/<yours>/route.tsにコピーし、使用するツールを指定します。app/docs/holidays/page.tsxをapp/docs/<yours>/page.tsxにコピーします。「For reviewers」セクションは残してください。フォームに貼り付けて使用します。app/privacy/page.tsxを書き換え、ツールについて、受け取るデータ、読み取るデータ、保持するデータと期間、データにアクセスする第三者を、すべて正確に記載します。eval/holidays.eval.mjsをコピーします。実際のユーザーが入力するプロンプトをもとに20〜50件のケースを作成し、コード外の信頼できる情報源から期待値を設定します。エラーケースも含めます。- ツールがユーザーから渡された URL を取得する場合は、
lib/mcp/safe-fetch.tsのsafeFetchを使用します。ユーザーが指定した URL を直接fetchしないでください。 - デプロイ後、本番環境に対して
pnpm preflightとpnpm evalsを実行し、Claude で各ツールをテストしてから、docs/SUBMISSION-CHECKLIST.md の手順を進めます。
各パターンが存在する理由と、それが対応するルールについては、docs/PATTERNS.md を参照してください。
内容一覧
| パス | 説明 |
|---|---|
app/holidays/route.ts | コネクターのエンドポイントです。コネクターごとに1つのファイルを用意します。 |
lib/mcp/tool.ts | ToolSpec、registerTools、runTool:規約、制限、エラー、サイズ上限、ログ記録です。 |
lib/mcp/limits.ts | インスタンス単位および全体の制限です。IP単位ではありません。Redisと、メモリ内のフォールバック、小規模なキャッシュを使用します。 |
lib/mcp/safe-fetch.ts | SSRF対策済みのフェッチ機能です。パブリックアドレスのみを対象とし、DNS検索を保護し、リダイレクトを5回検証し、バイト数の上限と期限を設けます。 |
lib/holidays/ | サンプルコネクターです。祝日エンジンと5つのツールが含まれます。 |
lib/site.ts | 会社、サポート、セキュリティの連絡先と、ポリシーの日付です。最初に編集してください。 |
app/docs、app/privacy、app/terms、app/support | 審査担当者とユーザーが閲覧するページです。 |
app/.well-known/security.txt | RFC 9116に準拠したセキュリティ連絡先です。 |
eval/ | 依存関係のないMCPクライアントと、稼働中のURLに対するサンプルの35項目のチェックです。 |
scripts/preflight.mjs | デプロイ済みURLに対する提出前チェックです。 |
scripts/check-prose.mjs | 管理対象ファイルにエムダッシュやエンダッシュが含まれている場合に失敗します。 |
test/ | 規約、制限、SSRFガード、サンプルエンジンの単体テストです。 |
docs/ | 提出チェックリストとパターンの解説です。 |
環境
サンプルは環境変数なしで動作します。任意で次の変数を設定できます。
| 変数 | 用途 |
|---|---|
SITE_URL | Vercelを利用していない場合、またはページのリンクにカスタムドメインを使用する場合のパブリックオリジンです。 |
UPSTASH_REDIS_REST_URL、UPSTASH_REDIS_REST_TOKEN | インスタンス間で共有する全体のレート制限とキャッシュです。Vercel Marketplaceのインテグレーションでは、代わりに KV_REST_API_URL と KV_REST_API_TOKEN が設定されます。どちらも読み取られます。Redisがない場合、各インスタンスは全体の数値の10分の1を上限として、メモリ内で自身を制限します。 |
コマンド
| コマンド | 説明 |
|---|---|
pnpm dev | ポート3000でローカルサーバーを起動します。 |
pnpm test | 単体テストを実行します(Node組み込みのランナーを使用)。 |
pnpm evals <url> | 稼働中のサーバーに対してサンプルの評価を実行します。 |
pnpm preflight <url> | デプロイ済みURLに対して提出前チェックを実行します。 |
pnpm typecheck、pnpm lint、pnpm build | 通常のチェックを実行します。 |
pnpm check:prose | 管理対象ファイルにエムダッシュやエンダッシュがないことを確認します。 |
サンプルについて
Holiday Calendarは、パブリックドメインの法律である5 U.S.C. 6103に基づき、米国の連邦祝日11日を計算します。また、連邦機関が採用する振替ルールに従い、土曜日の祝日は前の金曜日に、日曜日の祝日は翌月曜日に振り替えます。対象期間は2021年から2100年までです。各年の祝日の一覧表示、次の祝日の検索、日付が営業日かどうかの確認、日付への営業日の加算、期間内の営業日数の集計を行うツールを備えています。ネットワークへの接続やデータの保存は行いません。評価では、人事管理局が公表する日程と回答を照合します。
コントリビューションとセキュリティ
Issueやプルリクエストを歓迎します。CONTRIBUTING.mdをご覧ください。脆弱性は、SECURITY.mdに記載された方法で非公開に報告してください。
このキットはAnthropicと提携しておらず、同社の承認も受けていません。「Claude」はAnthropic, PBCの商標です。ディレクトリのルールは変更されるため、チェックリストにはすべてのルールについてAnthropicのドキュメントへのリンクを記載しています。提出前に内容をご確認ください。
Modern Mustard Seedが開発
このキットはModern Mustard Seedによるものです。モンタナ州カリスペルを拠点とするAIスタジオで、小規模企業向けのウェブサイト、AI音声エージェント、カスタムソフトウェアを、企画から完成まで一貫して管理・開発しています。
ライセンス
MIT、Copyright (c) 2026 Modern Mustard Seed LLC.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。