npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@ainative/luma-mcp

v1.0.2

Published

AI-powered CRM and event management MCP with a native Luma connector — create, publish, and manage events, sync guest lists into your CRM pipeline, right from Claude or any MCP-compatible agent.

Readme

luma-mcp — AI-Powered CRM Event MCP with a Luma Connector

A Model Context Protocol (MCP) server that gives any AI agent (Claude, Cursor, or your own agent-CRM stack) direct create/publish/manage control over Luma events and guest lists through the official Luma public API — no browser automation, no scraping. Built by AINative Studio as part of its AI-powered CRM tooling: connect an agent to your Luma calendar and let it create, update, publish, duplicate, and track events as part of an automated growth or event-ops workflow.

Keywords: MCP server, Luma MCP, Luma API integration, AI CRM connector, event management MCP, Model Context Protocol, agent event automation, Claude MCP tools, Luma events API, guest list automation.

Why use this

  • Full event lifecycle — create, read, update, publish, unpublish, duplicate, and delete events, plus attendance stats and guest export, all from one MCP surface.
  • AI-powered CRM benefit — plug this into an agent workflow (growth calendar publishing, event-ops assistants, CRM automation) and let the agent manage your Luma calendar directly instead of a human doing it by hand in the Luma dashboard.
  • Talks to the real Luma public API (https://api.lu.ma/public/v1), the same endpoints and payload shapes proven correct in AINative's own Next.js website client — not a reverse-engineered or unofficial integration.

Install

Published on npm as @ainative/luma-mcp — no local clone required:

{
  "mcpServers": {
    "luma": {
      "command": "npx",
      "args": ["-y", "@ainative/luma-mcp"],
      "env": { "LUMA_API_KEY": "your_luma_api_key_here" }
    }
  }
}

Or run from this repo directly:

cd packages/mcps/luma-mcp
npm install
{
  "mcpServers": {
    "luma": {
      "command": "node",
      "args": ["/absolute/path/to/packages/mcps/luma-mcp/index.js"],
      "env": { "LUMA_API_KEY": "your_luma_api_key_here" }
    }
  }
}

Required env var

| Var | Description | |---|---| | LUMA_API_KEY | Your Luma API key (from Luma calendar settings → API). Server exits at startup if unset. |

Tools

| Tool | Luma endpoint | Description | |---|---|---| | luma_create_event | POST /event/create | Create a new event. | | luma_get_event | GET /event/get | Get event details by ID or slug. | | luma_update_event | PATCH /event/update | Partially update an existing event (only send changed fields). | | luma_publish_event | POST /event/publish | Publish an event — makes it publicly visible. | | luma_unpublish_event | POST /event/unpublish | Unpublish an event — hides it without deleting. | | luma_duplicate_event | POST /event/duplicate | Duplicate an event with a new start/end time. | | luma_delete_event | DELETE /event/delete | Permanently delete an event. Irreversible. | | luma_get_event_attendance | GET /event/get-attendance | Attendance stats: total guests, checked in, approved, pending, declined. | | luma_list_guests | GET /event/get-guests | List guests for an event (first page, up to 100). | | luma_export_guests | GET /event/get-guests (paginated) | Export the full guest list across all pages. | | luma_list_events | GET /calendar/list-events (paginated) | List calendar events (upcoming and/or past), across all pages. | | luma_get_guest_count | GET /event/get-guests (aggregated) | Total guest count for one event, or summed across every event on the calendar. | | luma_search_guests | GET /event/get-guests (client-side filter) | Filter an event's guests by name/email, approval status, or check-in state. |

Guest-CRUD tools (luma_add_guest, luma_update_guest, luma_delete_guest) are not yet implemented — tracked separately as lower priority (core#7874).

Known gotchas

These are proven, previously-hit issues (see AINative-website-nextjs/LUMA_INVESTIGATION_SUMMARY.md) that this server's implementation already accounts for:

  • Base path is /public/v1, not /v1. https://api.lu.ma/v1/... 404s.
  • Rate limits are per-calendar: GET 500 req/5min, POST 100 req/5min. Exceeding returns HTTP 429.
  • A separate, undocumented "import limit" can return HTTP 400 with { code: "over-luma-point-limit" }. This is an account-level bulk-import quota, independent of the rate limits above — not something this server can detect or avoid, only surface (the error message passes through as-is).
  • Guest payloads must be arrays. /event/add-guests requires a guests array, not flat top-level fields — relevant once the guest-CRUD tools are added.

Development

node --check index.js               # syntax check (no test framework in this package)
node test-smoke.js                  # smoke test: stubs the MCP SDK + axios, exercises every tool
LUMA_API_KEY=<key> node test-live-e2e.js   # live E2E: real MCP protocol + real Luma API (read-only, needs a real key)

This package has no unit test suite (consistent with the other Node MCP servers under packages/mcps/). Correctness was verified by mirroring the exact request shapes from AINative-website-nextjs/services/luma/endpoints/events.ts (the proven-correct source of truth) and test-smoke.js, a committed smoke harness that stubs the MCP SDK and axios via Module._load, loads the real index.js, and asserts the full 13-tool list plus request method/path/params for every read tool.

test-live-e2e.js is the real thing: it spawns the actual server process and speaks real MCP protocol to it (initialize → tools/list → tools/call), then makes genuine read-only calls (luma_list_events, luma_get_event) against the live Luma API. Run it whenever verifying a deploy — it needs a real LUMA_API_KEY and network access, so it isn't run in CI. Confirmed passing (8/8) against production, 2026-09-25 — all 13 tools registered and callable, real event data returned.

Refs #3088, #7874, #7878, #7883