CAMPAIGN_SCHEMA.md で設計したキャンペーン応募フレームワークの、動作確認用MCPサーバー。 GitHub公開前に、Claude Desktop / MCP Inspector から直接ツールを叩いてロジックを検証する目的。
npm install
# D1データベースを作成(初回のみ)
npx wrangler d1 create campaign-db
# 出力されたdatabase_idをwrangler.jsoncの REPLACE_WITH_YOUR_D1_DATABASE_ID に貼り付ける
# マイグレーション適用(ローカル)
npm run db:migrate:local
# OAuth用のKV namespaceを作成(初回のみ)
npx wrangler kv namespace create OAUTH_KV
# 出力されたidをwrangler.jsoncの REPLACE_WITH_YOUR_KV_NAMESPACE_ID に貼り付ける- https://github.com/settings/developers → 「New OAuth App」
- Homepage URL: 適当でよい(例:
http://localhost:8787) - Authorization callback URL:
http://localhost:8787/callback(本番デプロイ後は本番URLの/callbackに変更)
- Homepage URL: 適当でよい(例:
- 発行された Client ID / Client Secret を控える
- ローカル開発用に
.dev.vars.exampleを.dev.varsにコピーし、値を埋める(.dev.varsはgit管理外)
cp .dev.vars.example .dev.vars
# GITHUB_CLIENT_ID / GITHUB_CLIENT_SECRET / COOKIE_ENCRYPTION_KEY を編集COOKIE_ENCRYPTION_KEY はランダムな文字列でよい(例: openssl rand -hex 32)。
wrangler.jsoncのALLOWED_GITHUB_USERNAMESに、ツールを呼べるGitHubユーザー名をカンマ区切りで設定する(ここに無いアカウントはGitHub認証は通っても実ツールを呼べない)
本番デプロイ時は .dev.vars の代わりにsecretとして登録する:
npx wrangler secret put GITHUB_CLIENT_ID
npx wrangler secret put GITHUB_CLIENT_SECRET
npx wrangler secret put COOKIE_ENCRYPTION_KEYnpm run devnpm run devでローカルにMCPサーバーを起動(デフォルトでhttp://localhost:8787/mcp)- MCP Inspector を起動し、
http://localhost:8787/mcpに接続。「Streamable HTTP」を選び、初回接続時にブラウザでGitHub認証・同意画面が挟まる - 以下の順でツールを試す:
create_campaignでテスト用キャンペーンを作成submit_entryを複数回叩き、同じ店舗・購入日・レシート番号で送るとduplicateになることを確認manualReceiptNumberを空欄にして送ると「仮受理」になることを確認(NULL同士は重複とみなされないため、何度でも仮受理される — これは想定通りの挙動)list_entriesで応募一覧を確認run_drawで抽選を実行し、draw_logsにシードが記録されることを確認
- OCR照合(非同期)は未実装。現状は手入力値のみで判定している
- レート制限(総当たり対策)は未実装
campaign_stores(fixed_list時の店舗マスタ)を参照したバリデーションは未実装