{
  "markdown": "# RealEvents MCP Server\n\nCreate and manage events on [RealEvents](https://realevents.co) from any MCP-compatible AI assistant.\n\n[![CI](https://github.com/ykastelnik/realevents-mcp/actions/workflows/test.yml/badge.svg)](https://github.com/ykastelnik/realevents-mcp/actions/workflows/test.yml)\n[![CodeQL](https://github.com/ykastelnik/realevents-mcp/actions/workflows/codeql.yml/badge.svg)](https://github.com/ykastelnik/realevents-mcp/actions/workflows/codeql.yml)\n[![npm version](https://img.shields.io/npm/v/realevents-mcp.svg)](https://www.npmjs.com/package/realevents-mcp)\n[![npm downloads](https://img.shields.io/npm/dm/realevents-mcp.svg)](https://www.npmjs.com/package/realevents-mcp)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nDocumentation and install snippets: https://realevents.co/mcp\n\n## Install\n\n```json\n{\n  \"mcpServers\": {\n    \"realevents\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"realevents-mcp\"]\n    }\n  }\n}\n```\n\nFor Claude Desktop on macOS, the config file is at `~/Library/Application Support/Claude/claude_desktop_config.json`. For other clients, see their MCP documentation.\n\n## Tools\n\nPublic, no token needed:\n\n| Tool | Description |\n|------|-------------|\n| `list_public_events` | Browse upcoming public events. Filter by format, date range or search term. |\n| `get_event` | Get an event's public details by slug. Follows old links after a slug change. |\n| `register_for_event` | RSVP for an attendee: going, maybe or not going, with plus-ones and a note. |\n| `create_event` | Create a new event page. Returns the public link and the manage link. |\n\nOrganizer tools, all requiring the manage token:\n\n| Tool | Description |\n|------|-------------|\n| `get_manage_event` | Full event details plus the guest list. |\n| `list_registrations` | The guest list on its own, optionally filtered to confirmed / maybe / declined. |\n| `get_event_stats` | Page views, head-count, remaining capacity, view-to-attendance rate. |\n| `update_event` | Change any event detail or setting. |\n| `duplicate_event` | Copy the event into a new draft one week later. |\n| `cancel_event` | Mark the event cancelled. The page stays online. |\n| `set_cover` | Set the cover image from a public image URL. |\n| `list_comments` | Read the guest conversation: questions, replies and reactions. |\n| `post_comment` | Post to the thread as the organizer. Visible to every guest who RSVPed. |\n\nComments only work on events where the organizer has switched them on\n(`update_event` with `allow_comments: true`). Until then both comment tools return\na message saying exactly that.\n\n### Cover images\n\n`set_cover` takes a **public image URL**, not a file. MCP tool arguments are JSON\ntext, so an assistant cannot hand a local image to the server; if the picture is on\nthe user's computer, the manage page's upload does the job better anyway (drag and\ndrop, preview, crop). Around 1200px wide or more looks best - `set_cover` says so\nwhen the image is smaller rather than silently accepting a thumbnail.\n\n### Timezones\n\n`create_event` takes a `timezone` (an IANA name such as `Europe/Paris`) alongside\n`start_datetime`. **Set it.** The start time is interpreted in that zone, and the\nzone defaults to UTC, so creating an event for `19:00` without one produces a page\nthat reads 19:00 UTC: the wrong hour for everyone outside it.\n\nPrefer a local time with no trailing `Z`:\n\n```\nstart_datetime: \"2026-06-15T19:00:00\"\ntimezone:       \"Europe/Paris\"\n```\n\n### Attendance is counted in people\n\nAn event's attendance figure is a head-count: confirmed guests plus everyone they\nbring. A guest arriving with three others takes four of the available places, so a\nparty can be refused on an event that still shows free rows. When that happens the\nerror states how many places are left, so the call can be retried with a smaller\nparty rather than reported as a failure.\n\nPlus-ones only attach to a `confirmed` answer, and are capped by the event's own\n`plus_ones_limit` (0 disables them). When the organizer collects names rather than\na headcount, every declared guest needs one. `get_event` reports both settings.\n\n## Manage token\n\nEvents created with `create_event` return a `manage_token`. Save it: it is the only\nway to manage the event later.\n\nTo set a default token so you don't have to pass it on every call:\n\n```json\n{\n  \"mcpServers\": {\n    \"realevents\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"realevents-mcp\"],\n      \"env\": {\n        \"REALEVENTS_MANAGE_TOKEN\": \"your-token\"\n      }\n    }\n  }\n}\n```\n\n## Security\n\nSigned with [npm Provenance](https://docs.npmjs.com/generating-provenance-statements), built from this repository via GitHub Actions. Every published version is traceable back to the exact commit and workflow run that built it.\n\n## Links\n\n- [realevents.co](https://realevents.co)\n- [Documentation](https://realevents.co/mcp)\n- [GitHub repository](https://github.com/ykastelnik/realevents-mcp)\n- [MCP Registry listing](https://registry.modelcontextprotocol.io/v0/servers?search=realevents)\n\n## For maintainers: publishing checklist\n\nBefore publishing a new version:\n\n1. Bump `version` in `package.json`\n2. Verify `mcpName: \"io.github.ykastelnik/realevents\"` is still present\n3. Bump `version` and `packages[0].version` in `server.json` to match\n4. Tag `vX.Y.Z` and push: the `publish.yml` workflow handles the npm publish\n5. Locally: `./mcp-publisher publish` to sync the MCP Registry listing\n\n## License\n\nMIT\n",
  "bytes": 5475,
  "sha": "6912b8061aabaccb39afd4df9a9ffeb47e47b9d30394edb3dcca410ea963c16e",
  "repo_slug": "ykastelnik/realevents-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_ykastelnik_realevents_6abd829d/readme"
}