mcpField
L
Luma Events

Luma Events

本地服务
github.com/alx1p游戏娱乐018 周前更新

关于 Luma Events

Luma Events 是用于按类别、城市、位置和距离发现 Luma 活动的 FastMCP 服务。它还支持订阅日历、新活动追踪、活动详情和 ICS 导出;基本的公开活动搜索无需 API 密钥。

主要功能

  1. 01按类别或城市搜索
  2. 02按地址和距离筛选
  3. 03在 SQLite 中保存偏好设置
  4. 04追踪首次发现的活动
  5. 05获取活动详情并导出 ICS
  6. 06可选访问已关注的日历

适用场景

  1. 01按主题和距离查找附近活动
  2. 02在旅行城市发现活动
  3. 03追踪 Luma 上新出现的活动
  4. 04通过 ICS 将活动添加到日历

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 活动 MCP 服务

一个 FastMCP 服务,用于从 Luma 发现活动——整合 Discover 信息流和已订阅的日历,并支持距离筛选和 ICS 导出。基本发现功能无需 API 密钥。

工作原理

Luma 的 Discover API 有两个行为截然不同的端点:

  • 类别搜索(例如 AI、Tech、Food)——返回数百个带有丰富标签的活动,但仅限于你的所在地区。内容丰富,但地域受限。
  • 城市搜索(例如 Paris、London、Tokyo)——为该城市精选约 20–40 个热门/特色活动。覆盖面广,但结果较少。

此 MCP 服务通过两种搜索模式使用这两个端点:

  • 本地模式(默认,不传入 city 参数)——通过 Category API 搜索你偏好的类别,并根据地址和距离筛选丰富的结果。
  • 旅行模式(传入 city)——通过 Place API 获取该城市精选的热门活动。

首次运行时,服务会返回你附近的热门活动(根据 IP 进行地理位置加权),然后逐步引导你设置类别、地址和登录,以获取更丰富的结果。

工具

工具功能
search_events本地模式:按类别搜索,并根据地址/距离筛选。旅行模式:获取指定城市的精选活动。
set_preferences保存默认类别(列表)、地址和最大距离。设置会保存在 SQLite 中,并在重启后保留。
get_event通过 API 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. 地址——询问你的位置和偏好的搜索半径,从而大幅缩小结果范围,只显示你附近的活动。
  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. 首次调用——返回结果后,服务会提示登录。Agent 会在聊天中询问你。
  2. 登录——Agent 使用 login=true 调用 search_events。Chromium 浏览器会打开 lu.ma/signin;正常登录即可。会话 Cookie 会保存在本地 SQLite 数据库中。
  3. 拒绝——Agent 使用 skip_login_days=N 调用 search_events,以延后登录(0 = 下次再问,-1 = 永不询问)。
  4. 回访用户,Cookie 已过期——浏览器会自动打开以重新进行身份验证。
  5. 验证——每 24 小时通过 Luma 的 API 验证一次已保存的 Cookie。

新活动跟踪

服务会维护一个本地 SQLite 数据库(默认路径为 ~/.luma-mcp/events.db),记录首次发现每个活动的时间。这样,search_events 就能使用以下两种筛选条件:

  • 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 无需身份验证即可完整使用。

距离筛选

通过 set_preferences(address="...") 设置家庭地址,并指定 max_distance_miles。在家庭模式下,超出半径范围的活动会被排除。默认情况下,包含没有位置数据的活动(distance_miles: null)。在旅行模式下,距离筛选会自动以城市中心为基准,范围为 25 英里。

默认使用 Nominatim(免费,基于 OpenStreetMap)进行地理编码。如需更高用量,可设置 GEOCODING_PROVIDER=google 或 mapbox,并在环境中设置相应的 GEOCODING_API_KEY。

活动时间

活动时间(start_at、end_at)会按照用户的系统时区返回。每条结果都会包含 Luma 提供的 timezone 字段,供参考。

限制

  • RSVP 仅支持通过浏览器操作。 get_event 会返回 RSVP URL;没有无头注册途径。请使用 export_event_ics 将活动添加到日历。
  • Web 端点没有文档。 Discover 和已订阅日历的信息流使用 Luma 的内部 API(api.lu.ma),该 API 可能会在没有通知的情况下发生变化。若出现问题,影响仅限于 luma_web_client.py。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。