MCP Server & Claude Desktop Integration
Using the Gathering Organiser MCP connector with Claude Desktop or Claude.ai to manage gatherings conversationally.
- What Is the MCP Connector?
- Setting Up Claude Desktop
- Setting Up Claude.ai (Cowork Mode)
- Available MCP Tools
- Example Workflows
What Is the MCP Connector?
The Gathering Organiser MCP Server lets you manage gatherings through conversational AI. Instead of clicking through the admin panel, you can ask Claude to check registrations, update checklists, draft communications, and more; all through natural language.
How it works
MCP stands for Model Context Protocol. It's an open standard that lets AI assistants (like Claude) interact with external tools and services. The Gathering Organiser MCP Server wraps the Riverland Faeries REST API into 25 tools that Claude can call on your behalf.
The flow looks like this:
- You ask Claude something like "How many people have registered for Beltane?"
- Claude calls the
registration_statstool via the MCP server - The MCP server queries the Riverland Faeries API
- The results come back to Claude, who presents them in a readable format
What you can do with it
The MCP server covers seven areas of gathering management:
- Gathering management: create, update, and review gatherings
- Registrations: list registrations, update statuses, export data, check stats
- Budget and finance: generate budget calculations and bilingual financial reports
- Carpooling and logistics: view carpool matches, update match statuses, check pickup runs
- Communications: draft emails using bilingual templates (English/Dutch)
- Checklists: check planning progress, update checklist items, view overdue tasks
- Wiki pages: read and update gathering wiki content
Two ways to connect
The MCP server supports two transport modes:
| Mode | Best for | Authentication |
|---|---|---|
| stdio | Local development; running the server on your own machine | Static API token |
| HTTP | Production use; connecting to the hosted server at mcp-gatherings.junovy.com |
Keycloak OAuth 2.0 (signs in with your Junovy Account) |
For most organisers, the HTTP mode is the simplest option; you just point Claude at the hosted server and sign in with your Junovy Account. The stdio mode is for developers who want to run the MCP server locally.
Who can use it
You need to be a member of the organiser team for a gathering to manage it via the MCP server. The same permissions that apply in the admin panel apply when using Claude; if you can't do something in the UI, you can't do it via MCP either.
Setting Up Claude Desktop
Claude Desktop is Anthropic's desktop application for macOS and Windows. You can connect it to the Gathering Organiser MCP Server so that Claude can manage gatherings directly from your conversations.
Option 1: HTTP mode (recommended)
This connects Claude Desktop to the hosted MCP server. No local setup required.
- Open Claude Desktop
- Go to Settings (click your profile icon, then Settings)
- Click Developer in the sidebar, then Edit Config
- This opens the configuration file. Add the following to the
mcpServerssection:
{
"mcpServers": {
"gathering-organiser": {
"url": "https://mcp-gatherings.junovy.com/mcp",
"transport": "streamable-http"
}
}
}
- Save the file and restart Claude Desktop
- When you first use a gathering tool, you'll be prompted to sign in with your Junovy Account via Keycloak
Option 2: stdio mode (local development)
This runs the MCP server on your own machine. Useful for developers working on the Riverland Faeries codebase.
Prerequisites:
- Node.js 22+ (via Volta)
- pnpm 10+
- The
tenant-riverland-faeriesrepository cloned locally
Steps:
- Build the MCP server:
cd tenant-riverland-faeries/apps/mcp
pnpm install
pnpm build
- Open your Claude Desktop config file and add:
{
"mcpServers": {
"gathering-organiser": {
"command": "node",
"args": ["/path/to/tenant-riverland-faeries/apps/mcp/dist/index.js"],
"env": {
"GATHERING_API_URL": "http://localhost:3000",
"GATHERING_API_TOKEN": "your-api-token"
}
}
}
}
Replace /path/to/ with the actual path to your local repository, and your-api-token with a valid API token.
- Save and restart Claude Desktop
Config file locations
| Platform | Path |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
Verifying the connection
After restarting Claude Desktop, you should see a hammer icon (🔨) in the input area. Click it to see the list of available gathering tools. If the tools appear, the connection is working.
Try asking Claude: "List all gatherings" to confirm everything is set up correctly.
Troubleshooting
- Tools don't appear: check that the config JSON is valid (no trailing commas, correct brackets) and restart Claude Desktop
- Authentication errors (HTTP mode): make sure you can sign in to
riverland.faeries.euwith your Junovy Account; the MCP server uses the same Keycloak authentication - Connection refused (stdio mode): verify the path in
argspoints to the builtdist/index.jsfile, and that the API URL and token are correct - Server not responding: check that the Riverland Faeries API is running (locally for stdio, or that
mcp-gatherings.junovy.comis reachable for HTTP)
Setting Up Claude.ai (Cowork Mode)
If you use Claude through the web at claude.ai or the Claude desktop app's Cowork mode, you can add the Gathering Organiser MCP Server as a remote connector. This works with the hosted HTTP server, so no local installation is needed.
Adding the connector
- Open Claude.ai or the Claude desktop app
- Navigate to Settings > Connectors (or Integrations, depending on your version)
- Click Add Connector or Add MCP Server
- Enter the following details:
| Field | Value |
|---|---|
| Name | Gathering Organiser |
| URL | https://mcp-gatherings.junovy.com/mcp |
| Transport | Streamable HTTP |
- Click Save or Connect
- You'll be redirected to sign in with your Junovy Account via Keycloak
- After signing in, the connector is active and Claude can use the gathering tools
Using the connector
Once connected, you can ask Claude about your gatherings in any conversation. For example:
- "Show me all published gatherings"
- "How many registrations does Beltane 2026 have?"
- "What's the checklist progress for the upcoming gathering?"
Claude will use the appropriate MCP tool to fetch or update the information.
Managing the connector
- To disconnect, go back to Settings > Connectors and remove the Gathering Organiser entry
- If your session expires, Claude will prompt you to re-authenticate
- The connector uses OAuth 2.0 with PKCE, so your credentials are never stored by the MCP server; authentication is handled entirely through Keycloak
Tips
- The connector respects the same permissions as the admin panel; you can only manage gatherings you're an organiser for
- If you're using Cowork mode in the Claude desktop app, the connector works the same way as on claude.ai
- You can have the connector active alongside other MCP connectors without any conflicts
Available MCP Tools
The Gathering Organiser MCP Server exposes 25 tools across seven categories. This page lists all of them with a brief description of what each one does.
Gathering management
| Tool | Description |
|---|---|
gathering_list |
List all gatherings, optionally filtered by status or type |
gathering_get |
Get full details of a specific gathering |
gathering_create |
Create a new gathering |
gathering_update |
Update an existing gathering (title, dates, status, capacity, etc.) |
gathering_get_summary |
Get an overview including registration counts, checklist progress, and logistics status |
Registration and participants
| Tool | Description |
|---|---|
registration_list |
List registrations for a gathering, optionally filtered by status |
registration_get |
Get full details of a single registration including form responses |
registration_update_status |
Approve, waitlist, decline, or cancel a registration |
registration_stats |
Get registration statistics: totals by status, capacity usage, dietary breakdown |
registration_export |
Export registrations as CSV, JSON, markdown, or dietary summary |
Budget and finance
| Tool | Description |
|---|---|
budget_create |
Generate a budget calculation with sliding-scale pricing tiers |
budget_generate_report |
Produce a formatted bilingual (English/Dutch) budget report for sharing |
Carpooling and logistics
| Tool | Description |
|---|---|
carpool_list |
List all carpool matches for a gathering |
carpool_match |
Update a carpool match status (confirm, cancel, send introduction) |
carpool_stats |
Get carpool statistics: matches, confirmed/pending/cancelled, unmatched passengers |
pickup_list |
List all pickup runs with drivers, times, locations, and passengers |
Communication and templates
| Tool | Description |
|---|---|
comms_draft |
Draft an email using a bilingual template with gathering-specific data |
comms_list_templates |
List all available email templates |
comms_get_template |
Get details of a specific template including required parameters |
Available email templates: save-the-date, invitation, practical-update, thank-you, financial-summary.
Planning checklists
| Tool | Description |
|---|---|
checklist_get |
Get checklist items, optionally filtered by planning phase |
checklist_update_item |
Update a checklist item (complete, assign, add notes, set due date) |
checklist_progress |
Get overall and per-phase completion rates with overdue items |
Wiki pages
| Tool | Description |
|---|---|
wiki_get |
List all wiki pages or get a specific page's content |
wiki_update_section |
Update a wiki page's title, content, published status, or order |
wiki_publish |
Publish a wiki page to make it publicly visible |
Read-only vs. write tools
Most tools are read-only (they fetch data without changing anything). The tools that can make changes are: gathering_create, gathering_update, registration_update_status, carpool_match, checklist_update_item, wiki_update_section, wiki_publish, budget_create, budget_generate_report, and comms_draft.
When Claude uses a write tool, it will typically confirm the action with you first before proceeding.
Example Workflows
Here are some practical examples of how you can use the MCP connector with Claude to manage your gatherings. These show the kinds of questions you can ask and what Claude will do behind the scenes.
Checking registration status
You: "How are registrations looking for Beltane 2026?"
Claude uses registration_stats to pull the numbers, then presents a summary like:
- 28 approved, 5 pending, 3 waitlisted
- Capacity: 28 / 35 optimal, 28 / 45 maximum
- Dietary breakdown: 12 omnivore, 8 vegetarian, 5 vegan, 3 gluten-free
Reviewing and approving registrations
You: "Show me the pending registrations and approve the ones that look good."
Claude uses registration_list with a status filter, shows you each pending registration with their form responses, and then uses registration_update_status to approve the ones you confirm.
Checking planning progress
You: "What's left to do before the gathering?"
Claude uses checklist_progress to get completion rates and highlights overdue items. It might respond with something like: "Overall 72% complete. The 'one week before' phase has 3 overdue items: book firewood delivery, confirm kitchen rota, and print emergency contacts."
Coordinating carpools
You: "Are there any unmatched passengers for the gathering?"
Claude uses carpool_stats to check, then carpool_list to see the details. It can identify who still needs a ride and suggest potential matches based on location.
Drafting a save-the-date email
You: "Draft a save-the-date email for Beltane 2026."
Claude uses comms_draft with the save-the-date template. It pulls the gathering details and produces a bilingual (English/Dutch) email you can review and send.
Updating a wiki page
You: "Update the 'What to Bring' wiki page to mention that we'll have a sauna this time."
Claude uses wiki_get to fetch the current page content, then wiki_update_section to add the new information. You can review the updated content before it goes live.
Getting a gathering summary
You: "Give me a full overview of where we are with Beltane planning."
Claude uses gathering_get_summary to pull together registration counts, checklist progress, carpool status, and wiki page status into a single overview.
Generating a budget report
You: "Create a budget report for 35 participants over 5 days."
Claude uses budget_generate_report to calculate costs with sliding-scale tiers and produces a formatted bilingual report you can share with participants.
Tips for getting the best results
- Be specific about which gathering you mean if you have more than one active
- You can chain requests: "Check the registrations, then draft a practical update email with the current numbers"
- Claude will ask for confirmation before making changes (approving registrations, updating wiki pages, etc.)
- If you're not sure what tools are available, just ask Claude: "What can you help me with for gathering planning?"