Back to the catalog

io.github.ykastelnik/realevents

Create and manage events in seconds from your AI assistant. No account needed.

Open source Open in the app JSON README (API)

About

Create and manage events in seconds from your AI assistant. No account needed.

Details

Kind
MCP servers
Topic
No topic detected
Publisher
ykastelnik
Origin
official
Category
ferramentas
Transport
local
Version
1.4.0
Stars
1
Open pull requests
9
Last push
2026-08-24T14:39:42Z
Repository state
ativo
Language
TypeScript
License
MIT
Added
2026-08-29 04:01:42
Updated
2026-08-29 04:01:42
Origin id
io.github.ykastelnik/realevents

README

# RealEvents MCP Server

Create and manage events on [RealEvents](https://realevents.co) from any MCP-compatible AI assistant.

[![CI](https://github.com/ykastelnik/realevents-mcp/actions/workflows/test.yml/badge.svg)](https://github.com/ykastelnik/realevents-mcp/actions/workflows/test.yml)
[![CodeQL](https://github.com/ykastelnik/realevents-mcp/actions/workflows/codeql.yml/badge.svg)](https://github.com/ykastelnik/realevents-mcp/actions/workflows/codeql.yml)
[![npm version](https://img.shields.io/npm/v/realevents-mcp.svg)](https://www.npmjs.com/package/realevents-mcp)
[![npm downloads](https://img.shields.io/npm/dm/realevents-mcp.svg)](https://www.npmjs.com/package/realevents-mcp)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

Documentation and install snippets: https://realevents.co/mcp

## Install

```json
{
  "mcpServers": {
    "realevents": {
      "command": "npx",
      "args": ["-y", "realevents-mcp"]
    }
  }
}
```

For Claude Desktop on macOS, the config file is at `~/Library/Application Support/Claude/claude_desktop_config.json`. For other clients, see their MCP documentation.

## Tools

Public, no token needed:

| Tool | Description |
|------|-------------|
| `list_public_events` | Browse upcoming public events. Filter by format, date range or search term. |
| `get_event` | Get an event's public details by slug. Follows old links after a slug change. |
| `register_for_event` | RSVP for an attendee: going, maybe or not going, with plus-ones and a note. |
| `create_event` | Create a new event page. Returns the public link and the manage link. |

Organizer tools, all requiring the manage token:

| Tool | Description |
|------|-------------|
| `get_manage_event` | Full event details plus the guest list. |
| `list_registrations` | The guest list on its own, optionally filtered to confirmed / maybe / declined. |
| `get_event_stats` | Page views, head-count, remaining capacity, view-to-attendance rate. |
| `update_event` | Change any event detail or setting. |
| `duplicate_event` | Copy the event into a new draft one week later. |
| `cancel_event` | Mark the event cancelled. The page stays online. |
| `set_cover` | Set the cover image from a public image URL. |
| `list_comments` | Read the guest conversation: questions, replies and reactions. |
| `post_comment` | Post to the thread as the organizer. Visible to every guest who RSVPed. |

Comments only work on events where the organizer has switched them on
(`update_event` with `allow_comments: true`). Until then both comment tools return
a message saying exactly that.

### Cover images

`set_cover` takes a **public image URL**, not a file. MCP tool arguments are JSON
text, so an assistant cannot hand a local image to the server; if the picture is on
the user's computer, the manage page's upload does the job better anyway (drag and
drop, preview, crop). Around 1200px wide or more looks best - `set_cover` says so
when the image is smaller rather than silently accepting a thumbnail.

### Timezones

`create_event` takes a `timezone` (an IANA name such as `Europe/Paris`) alongside
`start_datetime`. **Set it.** The start time is interpreted in that zone, and the
zone defaults to UTC, so creating an event for `19:00` without one produces a page
that reads 19:00 UTC: the wrong hour for everyone outside it.

Prefer a local time with no trailing `Z`:

```
start_datetime: "2026-06-15T19:00:00"
timezone:       "Europe/Paris"
```

### Attendance is counted in people

An event's attendance figure is a head-count: confirmed guests plus everyone they
bring. A guest arriving with three others takes four of the available places, so a
party can be refused on an event that still shows free rows. When that happens the
error states how many places are left, so the call can be retried with a smaller
party rather than reported as a failure.

Plus-ones only attach to a `confirmed` answer, and are capped by the event's own
`plus_ones_limit` (0 disables them). When the organizer collects names rather than
a headcount, every declared guest needs one. `get_event` reports both settings.

## Manage token

Events created with `create_event` return a `manage_token`. Save it: it is the only
way to manage the event later.

To set a default token so you don't have to pass it on every call:

```json
{
  "mcpServers": {
    "realevents": {
      "command": "npx",
      "args": ["-y", "realevents-mcp"],
      "env": {
        "REALEVENTS_MANAGE_TOKEN": "your-token"
      }
    }
  }
}
```

## Security

Signed 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.

## Links

- [realevents.co](https://realevents.co)
- [Documentation](https://realevents.co/mcp)
- [GitHub repository](https://github.com/ykastelnik/realevents-mcp)
- [MCP Registry listing](https://registry.modelcontextprotocol.io/v0/servers?search=realevents)

## For maintainers: publishing checklist

Before publishing a new version:

1. Bump `version` in `package.json`
2. Verify `mcpName: "io.github.ykastelnik/realevents"` is still present
3. Bump `version` and `packages[0].version` in `server.json` to match
4. Tag `vX.Y.Z` and push: the `publish.yml` workflow handles the npm publish
5. Locally: `./mcp-publisher publish` to sync the MCP Registry listing

## License

MIT

More