Luma Events

io.github.alx1p由 GitHub 帳號 alx1p 發布v0.1.0更新於 Oct 24, 2026

Discover events from Luma — search by category, city, distance, and keywords with calendar export

發布方自己的服務:Events.Aero

已驗證STDIO僅桌面位置與生活效率與工作流

概覽

AI 產生的概覽

讓助理依類別、城市、距離與關鍵字搜尋 Luma 活動,取得活動詳情,並匯出 ICS 行事曆檔案。

可以做什麼
這是一個本機 FastMCP 伺服器,以兩種模式查詢 Luma 的 Discover 動態:home 模式依偏好類別搜尋並以地址與距離篩選,travel 模式回傳指定城市的精選熱門活動。工具包含 search_events、set_preferences、get_event 與 export_event_ics。它也會在本機 SQLite 資料庫記錄活動首次出現時間,以便篩選新發現的活動。
適用情境
適合讓助理尋找在地或旅行相關活動、保存類別與地點偏好,並產生可直接匯入行事曆的 ICS 項目。選擇性登入後可取得你在 Luma 上追蹤的行事曆活動。
執行需求
本機 Python 3.10+ 環境,使用 uv 或 pip;訂閱行事曆需要選用 auth 相依套件與 Playwright Chromium。基本探索功能不需要 API 金鑰。地理編碼預設使用免費的 Nominatim;更高用量可設定 GEOCODING_PROVIDER 與 GEOCODING_API_KEY。僅限桌面端,stdio 傳輸。
安裝前請注意
選擇性登入會開啟 Chromium 視窗前往 Luma 登入頁,並將工作階段 cookie 存入本機 SQLite 資料庫,每 24 小時向 Luma API 驗證一次。偏好設定與活動首次出現紀錄保存在本機。伺服器使用 Luma 未公開的內部 API,可能隨時變更。RSVP 僅限瀏覽器操作,伺服器無法代為報名。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Luma Events,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Luma Events MCP Server

A FastMCP server that discovers events from Luma — combining the Discover feed and subscribed calendars — with distance filtering and ICS export. No API key required for basic discovery.

How it works

Luma's Discover API has two endpoints that behave very differently:

  • Category search (e.g. AI, Tech, Food) — returns hundreds of events with rich tagging, but only for your home region. Great depth, geographically locked.
  • City search (e.g. Paris, London, Tokyo) — returns a curated set of ~20–40 top/featured events for that city. Broad coverage, smaller set.

This MCP uses both via two search modes:

  • Home mode (default, no city param) — searches your preferred categories via the Category API. Deep, rich results filtered by address and distance.
  • Travel mode (pass a city) — fetches the curated top events for that city via the Place API.

On first run, the server returns popular events near you (geo-biased by IP), then walks you through setting up categories, address, and login for progressively richer results.

Tools

ToolWhat it does
search_eventsHome mode: search by category with address/distance filtering. Travel mode: curated events for a specific city.
set_preferencesSave default categories (list), address, and max distance. Persists in SQLite across restarts.
get_eventFetch full details for a single event by API id or lu.ma URL.
export_event_icsGenerate an ICS string for any event — paste into Apple Calendar, Google Calendar, Outlook, etc.

Setup

Prerequisites

  • Python 3.10+
  • uv (recommended) or pip

Install

bash
git clone <this-repo>cd "Luma Cal MCP"uv venv .venv --python 3.12source .venv/bin/activateuv pip install -e .

Subscribed calendars (optional)

To access events from calendars you follow on Luma, install the optional auth dependencies:

bash
uv pip install -e ".[auth]"playwright install chromium

First run

On first use, the raw Discover feed returns hundreds of popular events near you (geo-biased by IP). The server then walks you through setup one prompt at a time to narrow results:

  1. Address — asks for your location and preferred search radius, which dramatically reduces the result set to events near you.
  2. Categories — asks which topics interest you (from: tech, ai, food, arts, climate, fitness, wellness, crypto) for focused discovery.
  3. Login — asks whether to log in for subscribed calendars.

Each prompt appears after returning results, so you see events immediately. After you configure a preference, the search reruns automatically and the next prompt appears. You can respond "not now" (prompt reappears next time) or "never" (permanently dismissed).

Configure

Use set_preferences to save defaults that persist across restarts:

set_preferences(address="3180 18th St, San Francisco", max_distance_miles=15)set_preferences(categories=["ai", "tech"])

Run

bash
# stdio transport (for Cursor, Claude Desktop, etc.)fastmcp run src/luma_mcp/server.py
# or directlypython -m luma_mcp.server

Authentication

Subscribed calendars require a Luma session cookie. The server handles this automatically via an inline login flow.

How it works:

  1. First call — after results, the server prompts for login. The agent asks you in chat.
  2. Login — the agent calls search_events with login=true. A Chromium browser opens to lu.ma/signin; log in normally. The session cookie is stored in the local SQLite DB.
  3. Decline — the agent calls search_events with skip_login_days=N to defer (0 = ask next time, -1 = never).
  4. Returning user, cookie expired — the browser opens automatically for re-authentication.
  5. Validation — the stored cookie is validated against Luma's API every 24 hours.

New Event Tracking

The server maintains a local SQLite database (~/.luma-mcp/events.db by default) that records the first time each event is seen. This enables two filters on search_events:

  • added_within_days — only return events first seen within the last N days.
  • new_only — only return events that have never been seen before.

Every result also includes first_seen_at (ISO timestamp) and is_new (boolean).

Cursor MCP Configuration

Add to your Cursor MCP settings (.cursor/mcp.json):

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"      }    }  }}

Data Sources

SourceAuthCoverage
Discover (api.lu.ma)None requiredPublic events by city and category — same feed as luma.com/discover
Subscribed calendars (api.lu.ma)Browser login (auto-managed)Events from calendars you follow on Luma

Without logging in, the server still works — Discover is fully available with no authentication.

Distance Filtering

Set a home address via set_preferences(address="...") with max_distance_miles. In home mode, events beyond the radius are excluded. Events without location data are included by default (with distance_miles: null). In travel mode, distance filtering uses the city center at 25 miles automatically.

Geocoding uses Nominatim (free, OpenStreetMap) by default. For higher volume, set GEOCODING_PROVIDER=google or mapbox with the corresponding GEOCODING_API_KEY in your environment.

Event Times

Event times (start_at, end_at) are returned in the user's system timezone. The timezone field from Luma is included in every result for reference.

Limitations

  • RSVP is browser-only. get_event returns the RSVP URL; there's no headless registration path. Use export_event_ics to add events to your calendar.
  • Web endpoints are undocumented. The Discover and subscribed-calendars feeds use Luma's internal API (api.lu.ma), which can change without notice. Breakage is isolated to luma_web_client.py.

來源:README.md,提交 c15bef8

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v0.1.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Events 整合