mcpField
L
Luma Events

Luma Events

ローカル
github.com/alx1pゲーム・エンタメ018 週間前に更新

Luma Events について

Luma Eventsは、カテゴリ、都市、場所、距離を条件にLumaのイベントを探すFastMCPサーバーです。フォロー中のカレンダー、新着追跡、イベント詳細、ICS出力にも対応し、公開イベントの基本検索にはAPIキーが不要です。

主な機能

  1. 01カテゴリまたは都市で検索
  2. 02住所と距離による絞り込み
  3. 03SQLiteでの設定保存
  4. 04初めて見つかったイベントの追跡
  5. 05イベント詳細の取得とICS出力
  6. 06フォロー中のカレンダーへの任意アクセス

活用シーン

  1. 01テーマと距離を指定して近隣イベントを検索
  2. 02旅行先の都市でイベントを探す
  3. 03Lumaに新たに追加されたイベントを追跡
  4. 04ICSでイベントをカレンダーに追加

MCP 対応

イベント検索、設定管理、イベント詳細、ICS出力をMCPツールとして公開します。ログイン後は、フォロー中のカレンダーのイベントもMCPクライアントから取得できます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"alx1p-luma": {
"command": "uvx",
"args": [
"luma-mcp"
]
}
}
}
起動コマンドuvx luma-mcp

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiluma-mcp0.1.0

ツール

4

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
addressanyいいえ距離検索の中心地点となる住所。
categoriesanyいいえデフォルトに設定するカテゴリ slug のリスト。次の値から選択してください: tech, ai, food, arts, climate, fitness, wellness, crypto。
skip_addressbooleanいいえtrue に設定すると、住所の入力プロンプトを永久に拒否します。
skip_categoriesbooleanいいえtrue に設定すると、カテゴリの入力プロンプトを永久に拒否します。
max_distance_milesanyいいえデフォルトの検索半径(マイル)。

詳細

Luma Events MCP サーバー

Luma からイベントを検索する FastMCP サーバーです。Discover フィードと登録済みカレンダーを組み合わせ、距離による絞り込みと ICS エクスポートに対応しています。基本的な検索に API キーは不要です。

仕組み

Luma の Discover API には、動作が大きく異なる 2 つのエンドポイントがあります。

  • カテゴリ検索(例:AI、Tech、Food)— 詳細なタグ情報付きで数百件のイベントを返しますが、対象はホーム地域のみです。幅広い情報を得られますが、地域が限定されます。
  • 都市検索(例:Paris、London、Tokyo)— その都市の厳選されたおすすめイベントを約20~40件返します。広い地域をカバーしますが、件数は少なめです。

この MCP では、2 つの検索モードで両方を利用します。

  • ホームモード(デフォルト、city パラメーターなし)— カテゴリ API で設定したカテゴリを検索します。住所と距離で絞り込まれた、詳しく充実した結果を取得できます。
  • 旅行モード(city を指定)— Place API で、その都市の厳選されたおすすめイベントを取得します。

初回起動時には、近くの人気イベント(IP アドレスをもとに位置情報を推定)を返した後、カテゴリ、住所、ログインを設定し、段階的に検索結果を充実させる手順を案内します。

ツール

ツール機能
search_eventsホームモード:カテゴリで検索し、住所と距離で絞り込みます。旅行モード:特定の都市の厳選イベントを検索します。
set_preferencesデフォルトのカテゴリ(リスト)、住所、最大距離を保存します。設定は SQLite に保存され、再起動後も保持されます。
get_eventAPI ID または lu.ma の URL で、単一イベントの詳細を取得します。
export_event_ics任意のイベントの ICS 文字列を生成します。Apple Calendar、Google Calendar、Outlook などに貼り付けて利用できます。

セットアップ

前提条件
  • Python 3.10+
  • uv(推奨)または pip
インストール
git clone <this-repo>
cd "Luma Cal MCP"
uv venv .venv --python 3.12
source .venv/bin/activate
uv pip install -e .
登録済みカレンダー(任意)

Luma でフォローしているカレンダーのイベントにアクセスするには、認証用のオプション依存関係をインストールします。

uv pip install -e ".[auth]"
playwright install chromium
初回起動

初回利用時は、未加工の Discover フィードから近くの人気イベントが数百件返されます(IP アドレスをもとに位置情報を推定)。その後、検索結果を絞り込むため、サーバーが一度に 1 つずつ設定を案内します。

  1. 住所 — 位置情報と希望する検索範囲を尋ねます。設定すると、近くのイベントに絞り込まれ、検索結果が大幅に減ります。
  2. カテゴリ — 検索対象を絞るため、関心のあるトピックを尋ねます(tech、ai、food、arts、climate、fitness、wellness、crypto から選択)。
  3. ログイン — 登録済みカレンダーを利用するため、ログインするかどうかを尋ねます。

各プロンプトは結果を返した後に表示されるため、すぐにイベントを確認できます。設定を保存すると検索が自動的に再実行され、次のプロンプトが表示されます。「今はしない」と回答すると(次回再び表示)、「今後表示しない」と回答すると(永久に非表示)設定できます。

設定

set_preferences を使って、再起動後も保持されるデフォルト設定を保存します。

set_preferences(address="3180 18th St, San Francisco", max_distance_miles=15)
set_preferences(categories=["ai", "tech"])
実行
# stdio transport (for Cursor, Claude Desktop, etc.)
fastmcp run src/luma_mcp/server.py

# or directly
python -m luma_mcp.server

認証

登録済みカレンダーを利用するには、Luma のセッション Cookie が必要です。サーバーはインラインのログインフローでこれを自動的に処理します。

仕組み:

  1. 初回呼び出し — 結果を返した後、サーバーがログインを促します。エージェントがチャットで確認します。
  2. ログイン — エージェントが login=true を指定して search_events を呼び出します。Chromium ブラウザーが lu.ma/signin を開くので、通常どおりログインします。セッション Cookie はローカルの SQLite データベースに保存されます。
  3. ログインを見送る — エージェントが skip_login_days=N を指定して search_events を呼び出し、ログインを延期します(0 = 次回確認、-1 = 今後確認しない)。
  4. 再訪ユーザーで Cookie の期限が切れている場合 — 再認証のため、ブラウザーが自動的に開きます。
  5. 検証 — 保存された Cookie は24時間ごとに Luma の API で検証されます。

新規イベントの追跡

サーバーはローカルの SQLite データベース(デフォルトでは ~/.luma-mcp/events.db)を管理し、各イベントを最初に確認した日時を記録します。これにより、search_events で次の 2 つのフィルターを利用できます。

  • added_within_days — 過去 N 日以内に初めて確認されたイベントのみを返します。
  • new_only — これまで一度も確認されていないイベントのみを返します。

すべての結果には、first_seen_at(ISO 形式のタイムスタンプ)と is_new(ブール値)も含まれます。

Cursor MCP の設定

Cursor MCP の設定(.cursor/mcp.json)に追加します。

{
  "mcpServers": {
    "luma-events": {
      "command": "uv",
      "args": [
        "run",
        "--directory", "/path/to/Luma Cal MCP",
        "fastmcp", "run", "src/luma_mcp/server.py"
      ],
      "env": {
        "PYTHONPATH": "/path/to/Luma Cal MCP/src"
      }
    }
  }
}

データソース

ソース認証対象範囲
Discover(api.lu.ma)不要都市とカテゴリ別の公開イベント — luma.com/discover と同じフィード
購読中のカレンダー(api.lu.ma)ブラウザーでのログイン(自動管理)Luma でフォローしているカレンダーのイベント

ログインしなくてもサーバーは動作し、Discover は認証なしで利用できます。

距離によるフィルタリング

max_distance_miles とともに set_preferences(address="...") を設定して、自宅の住所を指定します。自宅モードでは、設定した半径を超えるイベントは除外されます。位置情報のないイベントは、デフォルトで含まれます(distance_miles: null)。旅行モードでは、距離のフィルタリングに都市の中心から自動的に 25 マイルの範囲が使われます。

デフォルトでは、ジオコーディングに Nominatim(無料の OpenStreetMap)を使用します。より多くのリクエストを処理するには、環境に対応する GEOCODING_API_KEY を設定したうえで、GEOCODING_PROVIDER=google または mapbox を設定します。

イベントの日時

イベントの日時(start_at、end_at)は、ユーザーのシステムのタイムゾーンで返されます。参照用に、Luma の timezone フィールドがすべての結果に含まれます。

制限事項

  • RSVP はブラウザーでのみ行えます。 get_event は RSVP の URL を返しますが、ヘッドレスで登録する方法はありません。イベントをカレンダーに追加するには、export_event_ics を使用してください。
  • ウェブエンドポイントは文書化されていません。 Discover と購読中のカレンダーのフィードでは、Luma の内部 API(api.lu.ma)を使用しているため、予告なく変更される可能性があります。問題の影響は luma_web_client.py に限定されます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。