bluebubbles-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| BLUEBUBBLES_URL | Yes | The URL of your BlueBubbles server (e.g., https://your-bluebubbles-server) | |
| BLUEBUBBLES_PASSWORD | Yes | The password for your BlueBubbles server |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_server_infoA | Get BlueBubbles server info and health status. |
| pingA | Ping the BlueBubbles server to check connectivity. |
| list_chatsA | List iMessage conversations, sorted by most recent activity. Args: limit: Max number of chats to return (default 25). offset: Pagination offset. |
| get_chatA | Get details for a specific chat, including participants. Args: chat_guid: The chat GUID (e.g. 'iMessage;-;+15551234567' or 'iMessage;+;chat123'). |
| get_chat_messagesA | Get messages from a specific chat. Args: chat_guid: The chat GUID. limit: Max messages to return (default 25). offset: Pagination offset. sort: 'ASC' or 'DESC' (default DESC = newest first). after: Only messages after this epoch-ms timestamp. before: Only messages before this epoch-ms timestamp. |
| get_recent_messagesA | Get recent messages across all chats within a time window. Args: minutes: How far back to look (default 60 minutes). limit: Max messages to return (default 50). |
| get_unread_chatsA | Get all chats with unread messages, including their latest messages. Args: message_limit: Number of recent messages to include per unread chat (default 5). |
| mark_chat_readA | Mark a chat as read (sends read receipt visible to the other person). Args: chat_guid: The chat GUID. |
| mark_chat_unreadC | Mark a chat as unread. Args: chat_guid: The chat GUID. |
| start_typingB | Show a typing indicator in a chat (visible to the other person). Args: chat_guid: The chat GUID. |
| stop_typingC | Stop the typing indicator in a chat. Args: chat_guid: The chat GUID. |
| delete_chatA | Delete an entire chat conversation. This is irreversible. Args: chat_guid: The chat GUID to delete. |
| send_messageA | Send a text message to an existing chat. Args: chat_guid: The chat GUID to send to. message: The message text. reply_to_guid: Optional message GUID to reply to (creates a thread). |
| send_message_to_addressA | Send a message to a phone number or email, creating a new chat if needed. Args: address: Phone number (e.g. '+15551234567') or email address. message: The message text. service: 'iMessage' or 'SMS' (default iMessage). |
| send_reactionA | Send a tapback reaction to a message. Args: chat_guid: The chat GUID containing the message. message_guid: The GUID of the message to react to. reaction: One of: love, like, dislike, laugh, emphasize, question. Prefix with '-' to remove (e.g. '-love'). |
| edit_messageB | Edit a previously sent message. Args: message_guid: GUID of the message to edit. new_text: The new message text. |
| unsend_messageB | Unsend (retract) a previously sent message. Args: message_guid: GUID of the message to unsend. |
| search_messagesA | Search messages by text content and/or filter by chat and time range. Args: query: Text to search for in message bodies. chat_guid: Limit search to a specific chat. limit: Max results (default 25). offset: Pagination offset. after: Only messages after this epoch-ms timestamp. before: Only messages before this epoch-ms timestamp. |
| get_messageA | Get a single message by its GUID, including chat and attachment info. Args: message_guid: The message GUID. |
| get_contactsA | Get all contacts from the server. |
| lookup_contactA | Look up contacts by phone numbers or email addresses. Args: addresses: List of phone numbers or emails to look up. |
| check_imessageA | Check if a phone number or email is registered for iMessage. Args: address: Phone number or email to check. |
| check_facetimeA | Check if a phone number or email is registered for FaceTime. Args: address: Phone number or email to check. |
| rename_groupA | Rename a group chat. Args: chat_guid: The group chat GUID. name: New display name for the group. |
| add_participantA | Add a participant to a group chat. Args: chat_guid: The group chat GUID. address: Phone number or email of the person to add. |
| remove_participantA | Remove a participant from a group chat. Args: chat_guid: The group chat GUID. address: Phone number or email of the person to remove. |
| leave_chatB | Leave a group chat. Args: chat_guid: The group chat GUID to leave. |
| list_scheduled_messagesA | List all scheduled (future) messages. |
| schedule_messageA | Schedule a message to be sent at a future time. Args: chat_guid: The chat GUID to send to. message: The message text. scheduled_for: When to send, as epoch milliseconds. |
| delete_scheduled_messageA | Delete a scheduled message. Args: schedule_id: The ID of the scheduled message to cancel. |
| get_attachment_infoC | Get metadata for an attachment (filename, mime type, size, etc.). Args: attachment_guid: The attachment GUID. |
| download_attachmentA | Download an attachment and return it as base64-encoded data. Args: attachment_guid: The attachment GUID. |
| send_attachmentA | Send a file attachment to a chat. Args: chat_guid: The chat GUID to send to. data_base64: The file contents as a base64-encoded string. filename: The filename (e.g. 'photo.jpg'). mime_type: MIME type (e.g. 'image/jpeg'). Defaults to 'application/octet-stream'. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 33 tools
Each tool has a clear, distinct purpose. Sending tools are differentiated by target (existing chat vs. new address), type (text, attachment, reaction), and timing (immediate vs. scheduled). No overlapping functionality.
Tool names consistently follow a verb_noun pattern (e.g., send_message, get_chat, delete_chat). Minor variations like 'check_facetime' and 'mark_chat_unread' are still consistent in structure.
33 tools is above average but appropriate for a comprehensive iMessage server covering messaging, attachments, reactions, scheduling, participants, contacts, and typing indicators. Each tool serves a unique function.
The tool set covers the full lifecycle of messaging: send, receive, edit, unsend, schedule, react, manage participants, handle attachments, search, and check user availability. No obvious gaps for core iMessage operations.