Name-based group resolution — replace raw group_id with group_name on all tools #3
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Type
Feature
Lineage
Standalone incident-fix. Triggered by 2026-03-25 data exposure incident (see
claude-custom#160for full context).Repo
forgejo_admin/groupme-mcpUser Story
As platform operator,
I want all GroupMe MCP tools to accept group names instead of raw group IDs,
So that stale or wrong IDs can never cause messages to reach the wrong group.
Context
Incident (2026-03-25):
send_message(group_id="113983384")sent a contract status update to the 6-person Coaches & Staff group instead of the 2-person Stakeholders group (113996175). The caller grabbed the wrong ID from a stale docs table. Name-based resolution eliminates this class of error — the MCP resolves names against the live GroupMe API.File Targets
Files to modify or create:
src/groupme_mcp/server.py— ADD shared_resolve_group(group_name)helper. Callslist_groups(per_page=100)or paginates, fuzzy-matches name, returns group dict. Ambiguous → error with options. No match → error with available names.src/groupme_mcp/tools/messages.py— MODIFYsend_message:group_namereplacesgroup_id. Include resolved group name + member names + count in response.src/groupme_mcp/tools/members.py— MODIFYadd_member,remove_member,list_members:group_namereplacesgroup_idsrc/groupme_mcp/tools/groups.py— MODIFYget_group:group_namereplacesgroup_idFiles NOT to touch:
groupme-sdk— SDK keeps rawgroup_idinterface, MCP resolves above itAcceptance Criteria
send_message,add_member,remove_member,list_members,get_group) acceptgroup_name, not rawgroup_id_resolve_group()helper inserver.pyused by all 5 tools_resolve_group()callslist_groups(per_page=100)or paginates — must not silently miss groups (currently 10 groups, default page size is 10)send_messageresponse includes resolved group name + member names + member countTest Expectations
send_messagewith exact group name resolves correctlyadd_memberwith exact group name resolves correctly_resolve_grouphandles pagination (>10 groups scenario)cd ~/groupme-mcp && pytest tests/Constraints
uvnot pip, Forgejo PyPI for groupme-sdk dependency_resolve_group()must calllist_groups(per_page=100)or paginate — default page size of 10 will silently miss groups at current countChecklist
Related
claude-custom#160— companion ticket: PreToolUse hook (depends on this deploying first)project-groupme-westside— GroupMe project page