Issuebage について
IssueBadge MCPサーバーは、AIエージェントからバッジテンプレートの確認、証明書の発行、動的QRコードの管理を可能にします。リモートHTTPとローカルstdioに対応し、APIキー認証のほか、対応ホストではOAuthを利用できます。
主な機能
- 01バッジテンプレートの一覧表示
- 02受取人への証明書発行
- 03stdio経由でのバッジ作成
- 04QRコードの一覧と詳細確認
- 05QRコードのスキャン情報確認
- 06QRコードの削除
活用シーン
- 01受講者に修了証を送る
- 02利用可能なバッジテンプレートを確認
- 03QRコードのスキャン履歴を確認
- 04ローカルstdio環境でバッジを作成
MCP 対応
このサーバーはIssueBadgeのバッジ発行とQRコード操作をツールとしてMCPクライアントに公開します。リモートエンドポイントとローカルstdioに対応し、対応ホストではOAuth認証も利用できます。
詳細
IssueBadge MCP サーバー
あらゆる AI エージェントから、検証可能な証明書やバッジを発行できます。この Model Context Protocol サーバーを使うと、Cursor、Claude、VS Code、その他の MCP クライアントから IssueBadge のバッジテンプレートを一覧表示し、受取人の名前とメールアドレスを指定して証明書を送信できます。
実行方法は 2 通りあります。
| リモート(推奨) | ローカル(stdio) | |
|---|---|---|
| エンドポイント | https://issuebadge-mcp.issuebadge.workers.dev/mcp | npx issuebadge-mcp-server |
| 認証 | Authorization: Bearer <API key> ヘッダー | ISSUEBADGE_API_KEY 環境変数 |
| ツール | validate_key、get_all_badges、issue_badge、list_qr_codes、get_qr_code、get_qr_code_scans、delete_qr_code | 同じツール + create_badge |
| ストレージ | なし、ステートレス | なし |
IssueBadge API キーが必要です。app.issuebadge.com → Developer → API key(https://app.issuebadge.com/developer/index)
インストール
Cursor
Cursor Marketplace から IssueBadge をインストールし、プロンプトが表示されたら API キーを貼り付けます。または、Settings → MCP で手動追加します。
{
"mcpServers": {
"issuebadge": {
"type": "streamable-http",
"url": "https://issuebadge-mcp.issuebadge.workers.dev/mcp",
"headers": { "Authorization": "Bearer YOUR_ISSUEBADGE_API_KEY" }
}
}
}
Claude Code
claude mcp add --transport http issuebadge https://issuebadge-mcp.issuebadge.workers.dev/mcp \
--header "Authorization: Bearer YOUR_ISSUEBADGE_API_KEY"
このリポジトリは Claude Code プラグイン(.claude-plugin/plugin.json)でもあり、エージェントに「一覧表示 → 確認 → 発行」のワークフローを教える issuebadge スキルが含まれています。プラグインの .mcp.json は ISSUEBADGE_API_KEY 環境変数からキーを読み込むため、Claude Code を起動する前にエクスポートしてください。
Claude Desktop / 任意の stdio クライアント
{
"mcpServers": {
"issuebadge": {
"command": "npx",
"args": ["-y", "issuebadge-mcp-server"],
"env": { "ISSUEBADGE_API_KEY": "YOUR_ISSUEBADGE_API_KEY" }
}
}
}
VS Code(Copilot エージェントモード)
.vscode/mcp.json:
{
"servers": {
"issuebadge": {
"type": "http",
"url": "https://issuebadge-mcp.issuebadge.workers.dev/mcp",
"headers": { "Authorization": "Bearer YOUR_ISSUEBADGE_API_KEY" }
}
}
}
ツール
| ツール | 入力 | 戻り値 |
|---|---|---|
validate_key | – | { valid, message } |
get_all_badges | limit? | { badges: [{ id, name, description?, created_at? }] } |
issue_badge | badge_id、name、email?、phone?、idempotency_key?、metadata? | { issue_id, certificate_url, idempotency_key } |
create_badge(stdio のみ) | name、description、issuing_organization_name、idempotency_key、省略可能な badge_logo_path、custom_fields、… | IssueBadge API のレスポンス |
issue_badge は受取人に証明書をメールで送信し、公開検証 URL を返します。新しい idempotency_key を使う呼び出しごとに、新しい証明書が発行されます(省略した場合は mcp-<uuid> が生成されます)。API は再利用されたキーを拒否するため、呼び出しが失敗した後に新しいキーで再試行する前に、証明書が発行済みかどうか確認してください。
インストール後のプロンプト例:「Jane Doe([email protected])に Course Completion 証明書を発行してください。」
動的 QR コード
| ツール | 入力 | 戻り値 |
|---|---|---|
list_qr_codes | type?、limit? | { qr_codes: [...], total } |
get_qr_code | code | QR コード + PNG 画像ブロック |
get_qr_code_scans | code、limit? | { code, scan_count, scans: [{ scanned_at, referer }], total } |
delete_qr_code | code | { deleted: true, code } |
タイプ:url、vcard、paypal、wifi、email、phone、sms、maps、event、facebook、twitter、youtube、text、mecard。コードは IssueBadge ダッシュボードで作成および転送先を変更できます。画像には IssueBadge のリダイレクト先(scan_url)がエンコードされているため、転送先を変更しても印刷済みのコードは引き続き機能します。
プロンプト例:「Menu という名前の QR コードを作成して、https://example.com/menu を開くようにし、表示してください。」
ChatGPT と OAuth
リモートサーバーは、API キーを送信できないホスト(ChatGPT アプリ、Claude コネクター)向けに OAuth 2.1 にも対応しています。ベアラーなしのリクエストには 401 と WWW-Authenticate: Bearer resource_metadata=… が返され、/.well-known/oauth-protected-resource
は https://app.issuebadge.com を指します(PKCE S256、動的クライアント登録)。発行されたアクセストークンは API キーとまったく同様に転送されます。issue_badge には証明書カードを表示するウィジェット(ui://widget/certificate.html、MCP Apps / ChatGPT Apps SDK)が含まれています。CHATGPT.md を参照してください。
プライバシーとセキュリティ
- リモートサーバーはステートレスです。各リクエストの
Authorizationヘッダーから API キーを読み取り、app.issuebadge.comに転送します。保存やログへの記録は一切行いません。キーのないリクエストには401を返します。 - 接続するホストは
app.issuebadge.comのみです。証明書の作成のため、受取人の名前、メールアドレス、バッジ ID を送信します。 - プライバシーポリシー:https://issuebadge.com/h/policy · 利用規約:https://issuebadge.com/h/terms · サポート:https://issuebadge.com/h/contact
リモートサーバーをセルフホストする
git clone https://github.com/issuebadge/mcp-server && cd mcp-server
npm install
npm test
npx wrangler deploy --config worker/wrangler.toml # needs a Cloudflare account
GET /health は { ok: true } を返します。IssueBadge を別の場所で実行する場合は、stdio サーバーの ISSUEBADGE_BASE_URL に別の API ホストを指定します。
開発
npm install
npm test # vitest: client, tools, worker (mocked IssueBadge API)
npm run build # tsc → dist/ (stdio bin)
npm run dev:worker
構成:src/issuebadge.ts(API クライアント)、src/tools.ts(両ホストで共有されるツールレジストリ)、src/stdio.ts(npm bin)、src/createBadge.ts(stdio 専用ツール)、worker/index.ts(Cloudflare Worker)、.cursor-plugin/ + mcp.json(Cursor プラグイン)、.claude-plugin/ + .mcp.json(Claude Code プラグイン)、skills/issuebadge/SKILL.md、server.json(MCP Registry)。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。