loomiomcp
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 ?b3_api_key=):
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: Universal Dev MCP
Remote (HTTP)
See DEPLOY.md for Cloud Run.
Auth
Loomio's b2 API authenticates by API key passed as a ?api_key=… query
parameter. The connector injects it server-side; it never reaches the
MCP client. Generate one in Loomio under your profile → API keys.
The optional b3 admin namespace uses a different secret (?b3_api_key=…,
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
Latest Blog Posts
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