A multi-provider MCP server that integrates with Google Chat and other communication platforms, providing tools for messaging, search, space management, and user information retrieval.
Multi-Chat MCP Server has mixed definition quality. Tool names follow strong verb-noun conventions (send_message_tool, update_chat_message_tool, search_messages_tool), but descriptions vary significantly in depth and clarity. Most tools have reasonably detailed descriptions (100-400 chars), but parameter documentation is inconsistent. Input schemas are generally well-structured with type information and descriptions, but several tools have optional parameters that lack constraints or usage guidance. Output schemas are not explicitly documented. Error handling guidance is minimal, tools do not provide recovery steps for common failures. The server uses fastmcp framework but shows no evidence of tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite several tools being clearly destructive (update_chat_message_tool, manage_space_members_tool). Overall, the definitions support basic LLM invocation but lack production-grade polish and recovery guidance.
List all Google Chat spaces the bot has access to. Uses the Google Chat API spaces.list method to retrieve all available spaces (e.g., rooms, direct messages) that the authenticated user has access to. A space is a container for messages and may represent a persistent conversation or a one-off meeting. Each space has a unique identifier (name) that follows the pattern 'spaces/{id}'. This tool requires OAuth authentication. On first run, it will open a browser window for you to log in with your Google account. Make sure you have credentials.json downloaded from Google Cloud Console in the current directory.
Get information about participants in a conversation or space. Identifies all unique users who have sent messages in a specific Google Chat space within the specified time range. This is useful for analyzing conversation participants, creating user lists for notifications, or gathering metrics about space activity. This tool works by retrieving messages from the space and extracting unique sender information, then fetches detailed profile information for each unique sender.
Get information about the currently authenticated user. Uses the Google People API (people.get method) to retrieve profile information about the currently authenticated user. This is useful for personalizing interactions, displaying user information, or determining user permissions.
Get information about a specific user by their user ID. Uses the Google People API to retrieve detailed profile information about a specific user identified by their ID. This helps to show user details when displaying messages or mentions, enabling personalized interactions in the Chat interface.
Output schemas not documented. Tools return complex objects (messages, user info, conversation summaries) but do not specify field names, types, or what the LLM should expect. This forces LLMs to infer structure and risks misinterpreting nested fields.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Destructive tools like update_chat_message_tool and manage_space_members_tool have no annotations to signal irreversibility. LLMs cannot distinguish safe vs. risky calls without annotations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 44 | - | v1 |
Manage space membership - add or remove members. This tool requires OAuth authentication. It adds or removes members from a space.
Reply to a message thread in a Google Chat space. Uses the Google Chat API spaces.messages.create method with thread information to send a reply to an existing thread in a space. In Google Chat, threads group related messages together, making conversations easier to follow. This tool requires OAuth authentication. It will send a text message as a reply to an existing thread in the specified space.
Search for messages across all spaces or specified spaces. This tool performs advanced search for messages in Google Chat spaces using various search strategies. It's the primary tool for finding specific content in conversations by supporting multiple search modes including regex pattern matching, semantic search, and exact substring matching.
Send a text message to a Google Chat space. Uses the Google Chat API spaces.messages.create method to send a new text message to a specified space. This is the most basic form of message sending, allowing you to post simple text communications to a space. This tool requires OAuth authentication. It will send a text-only message to the specified space.
Generate a summary of a conversation in a Google Chat space. Creates a comprehensive overview of a conversation in a Google Chat space, including space details, participant information, and recent messages. This is particularly useful for quickly understanding the context and content of a conversation. This tool combines several Google Chat API methods (spaces.get, spaces.messages.list) and participant analysis to provide a complete conversation snapshot.
Update an existing message in a Google Chat space. This tool requires OAuth authentication. It can update the text content of an existing message.
Minimal error handling and recovery guidance. Tool descriptions do not explain what to do if a call fails (e.g., 'space not found, try get_chat_spaces_tool'). Error responses will lack actionable guidance for LLM recovery.
update_chat_message_tool and manage_space_members_tool have weak descriptions (<60 chars). 'Update an existing message in a Google Chat space' and 'Manage space membership - add or remove members' do not explain WHEN to use these tools, what they modify, or what side effects occur. Descriptions should be 100-400 chars and explain prerequisites, return values, and side effects.
Parameter constraints underspecified. search_messages_tool accepts 'search_mode' (regex/semantic/exact/hybrid) but does not constrain it to an enum. Parameter 'max_results' has no bounds (min/max). 'days_window' defaults to 3 but no min/max specified. Without explicit constraints, LLMs guess invalid values.
Pagination not fully specified. search_messages_tool returns 'max_results' and has an 'offset' param, but tool description does not state whether there is a total_count in the response, or how to detect if more results exist. Without clear pagination semantics, LLMs cannot reliably paginate through large result sets.
Tool naming inconsistency: 'get_my_user_info_tool' vs 'get_user_info_by_id_tool', the first does not accept parameters, the second requires 'user_id'. Naming should make this distinction clearer (e.g., 'get_current_user_info' vs 'get_user_info_by_id').