groupme-mcp
Provides tools for interacting with the GroupMe API v3, allowing AI assistants to manage groups and members, read and send messages, interact with bots, and handle likes and direct messages.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@groupme-mcp Show me the latest messages from my Family group"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
groupme-mcp
A Model Context Protocol (MCP) server that wraps the GroupMe API v3, letting AI assistants read and send GroupMe messages, manage groups, interact with bots, and more.
Tools
Category | Tools |
Groups |
|
Members |
|
Messages |
|
Direct Messages |
|
Chats |
|
Likes |
|
Bots |
|
Users |
|
Blocks |
|
Related MCP server: MCP OpenClaw
Skill
Install the companion skill to give Claude built-in knowledge of GroupMe workflows — group name resolution, message pagination, the async add_members flow, and more — without needing to prompt it each time.
The skill folder lives at skill/groupme-mcp/.
Install in Claude.ai: Settings → Capabilities → Skills → Upload skill → select the skill/groupme-mcp/ folder (zipped).
Install in Claude Code: place the skill/groupme-mcp/ folder in your Claude Code skills directory.
Requirements
Python 3.12+
A GroupMe access token — get one at dev.groupme.com or use the OAuth helper
Usage
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"groupme": {
"command": "uvx",
"args": ["groupme-mcp"],
"env": {
"GROUPME_TOKEN": "<your-token>"
}
}
}
}Local development
git clone https://github.com/KalebJS/groupme-mcp
cd groupme-mcp
export GROUPME_TOKEN=<your-token>
uv run mcp dev main.py # opens MCP Inspector in browserGetting a Token
oauth/get_token.py runs a local OAuth flow using only the Python stdlib — no extra dependencies.
Create an application at dev.groupme.com/applications.
Set the callback URL to
http://localhost:8080/callback.Run the helper:
python oauth/get_token.py --client-id YOUR_CLIENT_IDThe script opens your browser, waits for the GroupMe redirect, and prints the token along with the export command to set it.
Development
# Install dev dependencies
uv sync --group dev
# Install pre-commit hooks
uv run --group dev pre-commit install
# Run tests
uv run --group dev pytest tests/ -v
# Lint
uv run --group dev pre-commit run --all-filesLicense
MIT
Available Tools
29 toolsadd_membersA
Add one or more members to a group. Async operation - poll with get_member_results.
Args:
group_id: The ID of the group.
members: List of member objects. Each must have "nickname" and at least one of:
"user_id", "phone_number", "email". Optionally include "guid" for tracking.
Inputs: members (required), group_id (required).
check_blockB
Check if a block exists between two users.
Args:
user_id: The ID of the first user.
other_user_id: The ID of the second user.
Inputs: user_id (required), other_user_id (required).
create_blockB
Block a user.
Args:
user_id: The ID of the user doing the blocking.
other_user_id: The ID of the user to block.
Inputs: user_id (required), other_user_id (required).
create_botC
Create a new bot in a group.
Args:
name: The bot's display name.
group_id: The ID of the group the bot belongs to.
avatar_url: Optional avatar image URL for the bot.
callback_url: Optional URL to receive message callbacks.
dm_notification: Whether the bot should receive DM notifications.
Inputs: name (required), group_id (required), avatar_url, callback_url, +1 more.
create_groupC
Create a new group.
Args:
name: Name of the group.
description: Optional description.
image_url: Optional avatar image URL.
share: Whether to enable a share URL for the group.
Inputs: name (required), share, image_url, description.
delete_blockC
Unblock a user.
Args:
user_id: The ID of the user doing the unblocking.
other_user_id: The ID of the user to unblock.
Inputs: user_id (required), other_user_id (required).
destroy_botC
Delete a bot.
Args:
bot_id: The ID of the bot to delete.
Inputs: bot_id (required).
destroy_groupA
Permanently delete a group. Only the group creator can do this.
Args:
group_id: The ID of the group to delete.
Inputs: group_id (required).
get_groupC
Get details for a specific group.
Args:
group_id: The ID of the group.
Inputs: group_id (required).
get_meB
Get the authenticated user's profile information.
Inputs: no named parameters.
get_member_resultsA
Poll the result of an add_members request.
Args:
group_id: The ID of the group.
results_id: The GUID returned from add_members.
Inputs: group_id (required), results_id (required).
join_groupC
Join a group using its share token.
Args:
group_id: The ID of the group.
share_token: The share token from the group's share URL.
Inputs: group_id (required), share_token (required).
like_messageC
Like a message.
Args:
conversation_id: The group ID or direct message conversation ID.
message_id: The ID of the message to like.
Inputs: message_id (required), conversation_id (required).
list_blocksB
List all users blocked by a given user.
Args:
user_id: The ID of the user whose block list to retrieve.
Inputs: user_id (required).
list_botsB
List all bots created by the authenticated user.
Inputs: no named parameters.
list_chatsA
List the authenticated user's direct message conversations, sorted by most recent.
Args:
page: Page number for pagination.
per_page: Number of chats per page.
Inputs: page, per_page.
list_direct_messagesB
List direct messages with another user.
Args:
other_user_id: The ID of the other user in the conversation.
before_id: Return messages created before this message ID.
since_id: Return messages created after this message ID.
Inputs: other_user_id (required), since_id, before_id.
list_former_groupsA
List groups the authenticated user has previously left.
Inputs: no named parameters.
list_groupsB
List the authenticated user's active groups.
Args:
page: Page number for pagination.
per_page: Number of groups per page (max 500).
omit: Comma-separated list of fields to omit (e.g. "memberships").
Inputs: omit, page, per_page.
list_messagesB
Retrieve messages from a group.
Args:
group_id: The ID of the group.
before_id: Return messages created before this message ID.
since_id: Return messages created after this message ID (may skip messages).
after_id: Return messages created immediately after this message ID.
limit: Number of messages to return (max 100, default 20).
Inputs: group_id (required), limit, after_id, since_id, +1 more.
post_as_botC
Post a message as a bot.
Args:
bot_id: The ID of the bot.
text: Message text.
picture_url: Optional image URL to attach.
Inputs: text (required), bot_id (required), picture_url.
rejoin_groupB
Rejoin a group you previously left.
Args:
group_id: The ID of the group to rejoin.
Inputs: group_id (required).
remove_memberB
Remove a member from a group.
Args:
group_id: The ID of the group.
membership_id: The membership ID of the member to remove.
Inputs: group_id (required), membership_id (required).
send_direct_messageA
Send a direct message to another user.
Args:
recipient_id: The user ID of the recipient.
text: Message text (max 1000 characters).
source_guid: Unique ID to prevent duplicate sends. Auto-generated if blank.
attachments: Optional list of attachment objects.
Inputs: text (required), recipient_id (required), attachments, source_guid.
send_messageB
Send a message to a group.
Args:
group_id: The ID of the group.
text: Message text (max 1000 characters).
source_guid: Unique ID to prevent duplicate sends. Auto-generated if blank.
attachments: Optional list of attachment objects (image, location, emoji, etc.).
Inputs: text (required), group_id (required), attachments, source_guid.
unlike_messageB
Unlike a previously liked message.
Args:
conversation_id: The group ID or direct message conversation ID.
message_id: The ID of the message to unlike.
Inputs: message_id (required), conversation_id (required).
update_groupB
Update a group's settings.
Args:
group_id: The ID of the group.
name: New name (leave blank to keep current).
description: New description (leave blank to keep current).
image_url: New avatar image URL (leave blank to keep current).
share: Enable or disable the share URL.
office_mode: Enable or disable office mode.
Inputs: group_id (required), name, share, image_url, +2 more.
update_membershipA
Update your nickname in a group.
Args:
group_id: The ID of the group.
nickname: Your new nickname (1-50 characters).
Inputs: group_id (required), nickname (required).
update_userB
Update the authenticated user's profile.
Args:
avatar_url: New avatar image URL.
name: New display name.
email: New email address.
zip_code: New zip code.
Inputs: name, email, zip_code, avatar_url.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 29 tools
Most tools have distinct purposes targeting specific resources and actions, with clear boundaries. However, some potential confusion exists between list_chats and list_direct_messages, as both relate to direct messaging but serve slightly different purposes. Overall, descriptions help clarify distinctions.
The naming follows a consistent verb_noun pattern throughout, such as create_group, list_messages, and update_user. Minor deviations include get_me (instead of get_my_profile) and destroy_bot/destroy_group (using 'destroy' instead of 'delete'), but these are minimal and don't disrupt readability.
With 29 tools, the count is borderline high for a messaging/group management server, potentially overwhelming for agents. While it covers many features, it might benefit from consolidation or categorization to reduce complexity, as some tools like check_block and create_block could be merged into a single block management tool.
The tool set provides comprehensive coverage for the GroupMe domain, including full CRUD operations for groups, messages, bots, and blocks, along with user management and direct messaging. No obvious gaps exist; agents can handle all core workflows from group creation to messaging and member management.
Maintenance
Related MCP Connectors
An MCP server that integrates with Discord to provide AI-powered features.
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
MCP server for OpenAI API (chat completions, image generation, embeddings) via AceDataCloud
MCP server for AI dialogue using various LLM models via AceDataCloud
Related MCP Servers
- AlicenseBqualityDmaintenanceA Discord MCP server that enables AI assistants to interact with Discord platforms, providing functionalities like sending messages, managing channels, creating forum posts, and handling webhooks.21860 npm1MIT
- AlicenseBqualityDmaintenanceAn MCP server that integrates with the OpenClaw API to enable AI assistants to send messages across multiple platforms, execute system commands, and manage calendar events and emails.51MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI agents to communicate with humans through Discord. Agents can send messages, create threads, wait for replies, and manage conversations across any MCP client.7 npmISC
- AlicenseNot gradedqualityDmaintenanceAn MCP server for sending and receiving Telegram messages via a bot, enabling AI assistants to interact directly through Telegram by sending messages, reading recent messages, and sending photos.334 npmMIT