loomiomcp
This server acts as a Model Context Protocol (MCP) interface for Loomio, enabling programmatic reading and writing of discussions, polls, and comments, managing group memberships, and analyzing user activity.
Discussions
Fetch a single discussion by ID or key, list discussions in a group (with status filter and pagination), create new discussions with title, description, privacy, and notification settings, and post comments on existing threads.
Polls
Fetch a single poll by ID or key, list polls in a group (with status filter and pagination), and create polls of various types (proposal, poll, count, score, ranked_choice, meeting, dot_vote) with options, closing time, anonymity, and recipient notifications.
Memberships & Groups
List group members with email addresses and roles (requires admin), invite users by email, and optionally remove members not in a provided list (destructive — use with care). Discover all groups visible to the API key by probing a range of group IDs (workaround for Loomio's lack of a native list-groups endpoint).
Events & Activity
Fetch the full event stream for a discussion (comments, reactions, poll votes, outcomes, etc.). Aggregate a single user's activity across multiple groups with counts by event kind, group, and month — ideal for participation analysis.
Admin (instance operators only)
Deactivate or reactivate user accounts instance-wide (requires a separate
LOOMIO_B3_API_KEY).
Operational Modes
Set
LOOMIO_MCP_READONLY=1to restrict the server to read-only tools, disabling all write operations at startup.
loomiomcp
Model Context Protocol server for Loomio. Lets Claude (Desktop, Code, or web Projects via Custom Connector) read and write Loomio discussions, polls, comments, and group memberships — and analyse member activity — in plain English. Targets Loomio's b2 API — the canonical surface documented at /help/api2 and the namespace where the controllers actually live in the open-source repo.
Tools (b2, per-user API key):
get_discussion(id_or_key)— fetch one discussionlist_discussions(group_id, status?, limit?, offset?)— list a group's discussionscreate_discussion(title, group_id, …)— start a new oneget_poll(id_or_key)— fetch one polllist_polls(group_id, status?, limit?, offset?)— list a group's pollscreate_poll(title, poll_type, …)— start a new polllist_memberships(group_id, limit?, offset?)— list a group's members with email addresses. Requires the connector's user to be a group admin (coordinator); Loomio only returns the member list to admins. On a 403 the connector probes to explain why — bot lacks the admin role vs. invalid key vs. not-a-member — and points atget_user_activity/list_eventsfor names/ids (email stays admin-only).list_groups({start_id?, end_id?, stop_after_consecutive_misses?})— enumerate visible groups by probingb2/pollsacross an id range. Loomio has no api-key-authed list-groups endpoint; this is the workaround. Default scans are ~50–200 outbound calls; a single invocation is capped at 500 idslist_events(discussion_id, limit?, offset?, kinds?)— the event stream for one discussion (comments, reactions, stances, outcomes, …) withactor_id,kind, timestamps, and embeddedusers/comments/polls. With nolimit/offsetit paginates up to a bounded cap and reportsscope.complete; with either pagination knob it returns that one page.get_user_activity(user_id, group_ids, since?, until?)— aggregate one user's participation across groups (counts by kind / group / month, first/last activity). The primary tool for any user-centric question; fans out server-side with a bounded budget and reports completeness viascope.complete. If bothsinceanduntilare supplied,untilmust be later thansince.manage_memberships({group_id, emails, remove_absent})— add and (withremove_absent: true) remove members. See SECURITY.md before usingremove_absent.create_comment(discussion_id, body, body_format?)— reply on a discussion
Opt-in admin tools (b3, server-instance secret):
Set LOOMIO_B3_API_KEY to enable. Only useful for Loomio instance operators.
deactivate_user(id)— disable a user account instance-widereactivate_user(id)— re-enable a previously deactivated user
Quick start (stdio, local)
LOOMIO_API_KEY=… npx loomiomcpAdd it to your Claude Desktop / Claude Code config the same way you would any stdio MCP server.
Related MCP server: capsulemcp
Remote (HTTP)
See DEPLOY.md for Cloud Run.
Auth
Loomio authenticates by API key sent in an HTTP bearer header:
Authorization: Bearer <API_KEY>The connector injects it server-side; it never reaches the MCP client. Generate one in Loomio under your profile → API keys.
Keys passed in the query string (?api_key=…) are rejected — Loomio
removed that scheme in July 2026 because URLs are retained in browser
history, proxy logs, and monitoring systems. A request carrying its key
that way is treated as unauthenticated and 403s.
The optional b3 admin namespace uses the same bearer header with a
different secret (validated against ENV['B3_API_KEY'] on the Loomio
server, >16 chars). Only relevant if you operate a Loomio instance.
Read-only mode
Set LOOMIO_MCP_READONLY=1 to register only the 8 read tools
(get_* / list_* / get_user_activity). All write tools
(create_*, manage_*) are skipped at server-init time. This is the
mode the Cloud Run deployment runs in.
Docs map
File | When to read |
"I want to use this locally with Claude Desktop / Code today" | |
"I want to run this as a remote HTTP/OAuth endpoint" | |
"I want example prompts and use cases" | |
"I want to understand the load-bearing choices" | |
"I'm hitting a weird Loomio behaviour, or want the line-by-line endpoint reference" | |
"I'm doing a security review or rotating secrets" | |
"I want observability / usage analytics queries" | |
"I want to add a tool or send a PR" | |
"What changed?" |
License
Apache-2.0
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityBmaintenanceConnects Claude AI to any development project (Django, Next.js, Laravel, etc.) with 15+ universal tools for shell, file, git, logs, Docker, tests, and more.Last updated1
- AlicenseAqualityAmaintenanceCapsule CRM tools for Claude. Local install via npx, org-wide via Custom Connectors. Read-only mode supported.Last updated891992Apache 2.0
- Alicense-qualityDmaintenanceConnects Claude.ai to your local Obsidian vault for full CRUD access, search, and daily note creation via the Model Context Protocol.Last updated4513MIT
- Alicense-qualityBmaintenanceConnects Claude Desktop to your Obsidian vault, enabling reading, writing, searching, and organizing notes locally.Last updated1MIT
Related MCP Connectors
Connect Claude to Fathom meeting recordings, transcripts, and summaries
WHOOP recovery, strain, sleep and workouts in Claude via official WHOOP OAuth. Free, open source.
Persistent context for Claude. Your AI always knows your projects and next actions across sessions.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/soil-dev/loomiomcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server