lu について
luは、lu.maのイベント、チケット、クーポン、RSVP、参加者向けメールを管理するMCPサーバーです。書き込みを下書きと確認に分け、自由記述欄の監査ログとプロンプトインジェクション対策も備えています。
主な機能
- 01イベントの作成と更新
- 02チケット種別と価格の設定
- 03イベント・カレンダー単位のクーポン発行
- 04ゲストとRSVPの一覧表示
- 05書き込みの下書きと確認
- 06監査ログとテキストの無害化
活用シーン
- 01有料ワークショップと参加者メールの準備
- 02複数イベントのプログラムでRSVPを管理
- 03イベントテンプレートから定例会の日時を変更
MCP 対応
lu.maのイベント管理機能をMCPツールとして公開します。読み取りはAPIを直接呼び出し、書き込みは下書きの後に明示的な確認を行うまでLumaに反映されません。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
luma-mcp
lu.ma イベント用 MCP サーバーです。イベントの作成、チケット価格の設定、クーポンコードの発行、RSVP の一覧表示、参加者へのメール送信ができます。すべての書き込みは下書き+確認を経由するため、明示的に承認するまで Luma に投稿されることはありません。Luma の公式公開 API を使用しています。
できること
- lu.ma イベントの作成・更新(名前、日付、タイムゾーン、定員、ミーティング URL、公開範囲、カバー画像)
- チケット種別と価格の設定
- クーポンコードの発行(カレンダー単位またはイベント単位、割合割引または固定額割引、利用上限)
- イベントのゲスト/RSVP の一覧表示
- 参加者への Markdown メール送信(事前準備、当日、フォローアップ)
- すべての API 呼び出しの監査ログ(JSONL、キー/トークンの秘匿化)
- ユーザーが入力した自由記述フィールドに対するプロンプトインジェクション除去
ツール(v0.1.0)
読み取り(API を直接呼び出します):
luma_health— 認証チェック+下書きストアのサイズluma_get_event— ID でイベントを 1 件取得luma_list_events— ページネーション対応のカレンダー一覧luma_list_event_guests— ステータスで絞り込んだ RSVPluma_list_coupons— カレンダー単位またはイベント単位
書き込み(下書き+確認のペア):
luma_create_event_draft/luma_create_event_confirmluma_update_event_draft/luma_update_event_confirmluma_create_ticket_type_draft/luma_create_ticket_type_confirmluma_create_coupon_draft/luma_create_coupon_confirmluma_send_event_email_draft/luma_send_event_email_confirm
その他:
luma_cancel_draft— 未確認の下書きをキャンセル(冪等)
合計 14 個のツールです。
アーキテクチャ
luma-mcp/
├── pyproject.toml
├── README.md
├── SETUP.md
├── LICENSE
├── .env.example
├── luma_mcp/
│ ├── __init__.py
│ ├── server.py FastMCP entry point + .env loader
│ ├── client.py HTTP wrapper around api.lu.ma/public/v1
│ ├── drafts.py Thread-safe draft store with TTL
│ ├── audit.py JSONL audit log with redaction
│ ├── scrubber.py Prompt-injection neutralizer
│ ├── _shared/ Day-1 shared utilities
│ │ ├── normalize.py Timezone alias + datetime helpers
│ │ └── types.py Permissive typed shapes for API responses
│ └── tools/
│ ├── health.py luma_health, luma_cancel_draft
│ ├── events.py create / update / get / list events
│ ├── tickets.py create ticket types
│ ├── coupons.py create / list coupons
│ ├── guests.py list event guests
│ └── emails.py send email to attendees
└── tests/integration/
└── test_full_pipeline.py 10-step bare-runnable verification
安全性のパターン
- すべての書き込みで下書き+確認を行います。 下書きツールは
draft_idを返します。一致する確認ツールが呼び出されるまで、Luma に反映されることはありません。下書きの有効期限は 1 時間で、確認できるのは 1 回だけです。 - 監査ログ。 すべての API 呼び出しを、
ts、tool、action、args(秘匿化済み)、status、latency_msとともに JSONL 形式で記録します。パス:~/.claude/luma-mcp/audit.log。 - トークンの秘匿化。 長いキーのヒューリスティックに一致する文字列や、
api_key、token、cookie、secretなどのキーに対応する値は、ログ記録前にマスクされます。 - プロンプトインジェクション除去。 ユーザーが入力した自由記述フィールド(イベント名、説明、メールの件名、メール本文)に
unicodedata.normalize("NFKC")を適用し、ゼロ幅文字を除去します。また、ロールを偽装するプレフィックスや偽のフェンスをバッククォートで囲みます(オペレーターからの視認性を保ちつつ、後続の読み取りにおけるモデルへの影響を無効化します)。 - ツールの処理経路では LLM を使用しません。 すべてのルーティング判断はルールベースです。
ユースケース
- ワークショップ+有料イベント — 通常価格を設定し、コミュニティ限定の 100%割引クーポンを発行して、ゲストリストを取得し、事前準備メールを一斉送信します。
- 複数イベントのプログラム — 1 つの cohorte の告知を行い、Luma でサブイベントを作成し、各セッションの RSVP を取得します。
- 定期ミートアップ — update_event_draft でイベントテンプレートを複製し、日付を変更して公開します。
インストール
Claude Codeを開き、次を貼り付けます。
/plugin marketplace add adelaidasofia/luma-mcp
/plugin install luma-mcp@luma-mcp
サーバーの認証には、次の2つが必要です。
- 使用するカレンダーの Luma Plus サブスクリプション(公開APIの利用にはPlusが必要です)。
https://lu.ma/settings/apiで生成した APIキー を~/.claude/luma-mcp/.envにLUMA_API_KEY=...として保存します。
両方の手順を完了したら、Claude Codeを再起動します。ツールは mcp__luma__* の下に表示されます。
旧インストール方法
手動で .mcp.json に登録する方法については、SETUP.md を参照してください。上記のプラグインインストールを使用すると、この方法は不要になります。
動作確認
cd ~/.claude/luma-mcp && python3 tests/integration/test_full_pipeline.py
# expected: PASSED — luma-mcp v0.1.0 integration test (10 steps green)
その後、Claude Codeのセッションで mcp__luma__luma_health() を実行すると、{ok: true, user: {...}} が返されます。
レート制限
Lumaの公開APIでは、カレンダーごとに1分あたり200件までリクエストできます。クライアントは429エラーを自動で再試行せず、エラーを表示して、オペレーターがリクエストのペースを調整できるようにします。
関連するMCP
同じ作者による、同じアーキテクチャパターン(FastMCP、書き込み時の下書き+確認、該当する場合はVaultへの自動エクスポート)を採用したプロジェクトです。
- slack-mcp — 複数ワークスペースに対応するSlack
- imessage-mcp — macOS向けiMessage
- whatsapp-mcp — whatsmeow経由のWhatsApp
- apollo-mcp — Apollo.io CRM+シーケンス
- google-workspace-mcp — Gmail/Calendar/Drive/Docs/Sheets
- substack-mcp — Substackでの執筆+分析
- parse-mcp — markitdown/Docling/LlamaParseルーター
テレメトリ
このプラグインは、特定のマシンでClaude Codeのセッションに初めて読み込まれたときに、匿名のインストール通知を1回だけ myceliumai.co に送信します。
送信される情報:
- プラグイン名(例:
slack-mcp) - プラグインのバージョン(例:
0.1.0)
送信されない情報:
- ユーザー識別子、氏名、メールアドレス、トークン、APIキーは送信されません
- ファイルパス、メッセージ内容、作業に関する情報は送信されません
- 重複排除処理後にIPアドレスは保存されません
目的: メンテナーが実際にインストールされているプラグインを把握し、利用されているプラグインに注力できるようにします。
オプトアウト: Claude Codeを起動する前に、環境変数 MYCELIUM_NO_PING=1 を設定してください。フックはネットワーク呼び出しを完全にスキップします。通知済みのインストールでは ~/.mycelium/onboarded-<plugin> に識別用ファイルが作成されます。状態をリセットするには、このファイルを削除してください。
ライセンス
MITです。LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。