Skip to content

Mukoko Events MCP server

Mukoko Events (the platform also branded Nhimbe — same thing) exposes a task-based Model Context Protocol server so any MCP client — Claude, ChatGPT, IDE agents, custom tooling — can find events, look one up, and (signed in) create or manage its own.

The endpoint is https://events.mukoko.com/mcp (Streamable HTTP transport, JSON-RPC 2.0 over POST, stateless — no SSE stream and no session handshake).

Single endpoint. The MCP is served only at events.mukoko.com/mcp. The app is dual-domain (nhimbe.com and events.mukoko.com both serve it), but there is deliberately no nhimbe.com/mcp — use exactly the events.mukoko.com URL.

The server owns no data. Every tool calls the public Nhimbe app API; the server holds no secrets and no database. It is declared on the MCP registry as com.mukoko/nhimbe-events.

The tools are tasks a person (or their agent) actually wants done, not a thin CRUD mirror. Each result carries three layers: inline HTML (a carousel for several events, a card for one), a plain-text fallback, and machine-readable structuredContent — typed event fields (id, name, url, startDate, category, city, isOnline, …) so an agent consumes structured data instead of scraping the card.

Tool Auth What it does
events_near_me anonymous Upcoming events near a city
events_matching_interests anonymous Events matching one or more interests / categories, optionally scoped to a city
get_event anonymous Look up a single event by id, slug, or short code
create_event WorkOS user Create an event as the signed-in host
update_event WorkOS user Edit or manage an event you host (e.g. cancel it)
  • Reads are anonymous — the three discovery tools need no sign-in.
  • Writes are gated on a WorkOS bearer token. create_event and update_event require the MCP client to present Authorization: Bearer <WorkOS access token>. The server forwards it to the app (POST /api/events, PATCH /api/events/:id), which verifies the token and enforces entity-centric host authorization — the app is the single trust boundary. Without a token the write tools return a clear “sign in” error rather than failing silently.

The OAuth metadata for the write path is advertised at the Nhimbe origin: https://events.mukoko.com/.well-known/oauth-protected-resource and .../oauth-authorization-server (WorkOS is the authorization server). The human-readable agent guide lives at events.mukoko.com/auth.md.

The MCP ships as a Claude Code plugin — the server plus two skills (mukoko-events-discovery, read-only; mukoko-events-hosting, authenticated) that teach Claude when and how to call the tools. Install it from the Mukoko marketplace:

Terminal window
/plugin marketplace add nyuchi/mukoko-events-mcp
/plugin install mukoko-events@mukoko
/reload-plugins

Then just ask, e.g. “what events are on in Harare this weekend?” — the discovery skill triggers and calls the MCP.

Add the server as a custom connector so the write tools (create_event, update_event) can act as you:

  1. Open Settings → Connectors → Add custom connector.
  2. Enter the MCP server URL https://events.mukoko.com/mcp and click Connect.
  3. Claude runs OAuth discovery against the Nhimbe origin’s /.well-known/* metadata, self-registers, and opens the hosted WorkOS AuthKit sign-in. Complete sign-in (email code, password, passkey, MFA or social — whatever is configured on your account).
  4. Once authorized, the connector is available in new chats. The token is reused (and refreshed) on every call — you sign in only once.

The read tools work without sign-in; authorizing simply unlocks hosting. See the agent guide at events.mukoko.com/auth.md for the full OAuth 2.1 + PKCE flow.

Add the same server to ChatGPT as a custom MCP connector (Settings → Connectors → add a custom connector; some workspaces must enable Developer mode first):

  • Name: Mukoko Events
  • MCP server URL: https://events.mukoko.com/mcp
  • Authentication: No authentication for the read tools; OAuth for the write tools, pointing OAuth discovery at the Nhimbe origin’s /.well-known/* metadata above.

Any client that speaks Streamable HTTP can connect directly:

{
"mcpServers": {
"mukoko-events": {
"type": "http",
"url": "https://events.mukoko.com/mcp"
}
}
}

Or probe it by hand:

Terminal window
curl -s https://events.mukoko.com/mcp \
-X POST \
-H 'content-type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
  • Transport. Streamable HTTP, stateless — POST /mcp for JSON-RPC; GET returns 405 (no server-initiated stream).
  • Protocol support. The server is dual-era: the stable legacy revisions (2025-06-18, 2025-03-26, 2024-11-05, with the initialize handshake) plus beta support for the stateless 2026-07-28 revision (server/discover, per-request metadata).
  • Own repository. The server lives in nyuchi/mukoko-events-mcp (split out of the Nhimbe app repo); the admin dashboard lives in nyuchi/mukoko-events-admin. Neither is part of the app request path.