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 集成