rc-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| RC_URL | Yes | Server base URL, e.g. https://chat.example.com. http(s) only; trailing / is removed. | |
| RC_USER_ID | Yes | Your user id. It is shown with the token when you create a PAT. | |
| RC_AUTH_TOKEN | Yes | Personal access token, created with "Ignore Two Factor Authentication". | |
| RC_MCP_CONFIG | No | Path to the config file. The default path is used only if the file exists; a path set here must exist. Default: $XDG_CONFIG_HOME/rc-mcp/config.json, else ~/.config/rc-mcp/config.json | |
| RC_MCP_DATA_DIR | No | Where the index and saved files live. Must be an absolute path; a leading ~ is expanded. A relative path is a configuration error. Default: $XDG_DATA_HOME/rc-mcp, else ~/.local/share/rc-mcp | |
| RC_E2EE_PASSWORD | No | E2EE password or passphrase. Without it, encrypted rooms are listed but not decrypted. | |
| RC_MCP_EPHEMERAL | No | 1, true, yes or on: keep the index in memory only, and have get_file return files inline instead of saving them. | false |
| RC_MCP_LOG_LEVEL | No | debug, info, warn, error or silent. Logs are JSON lines on stderr. | info |
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": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_roomsA | List the rooms (channels, private groups, direct messages) this account belongs to, with type, whether the room is end-to-end encrypted, the E2EE key status (ok | suggested | missing | undecryptable | not-encrypted | e2ee-unavailable), last activity and how much of it is indexed locally. Use it to find room ids/names for the other tools. |
| get_messagesA | Read messages of one room, decrypted, oldest-first within the returned page (newest page by default). Each message has id, ts, author, text, thread_id/reply_count, attachments and a permalink. Page backwards with |
| get_threadA | Read a whole thread: the root message and all replies in chronological order, decrypted. Accepts the root message id, any reply id, or a pasted Rocket.Chat thread/message URL. Threads are where most how-tos and decisions are discussed. |
| get_messageA | Fetch a single message by id or by a pasted Rocket.Chat permalink (…?msg=), decrypted. Messages that quote other messages list them in |
| searchA | Full-text search over the locally indexed, decrypted messages of all rooms (including end-to-end encrypted ones). All words must match; accents are ignored; append * for prefix search (deploy*). Filter by rooms, authors (usernames), date range or thread. Results include a «highlighted» snippet, thread info and permalink. When specific unencrypted rooms are given, the Rocket.Chat server search is also queried and merged ( |
| syncA | Fetch new, edited and deleted messages into the local index of decrypted messages, for one room or for all rooms. Older history is backfilled in chunks of up to max_messages (default 2000) per room per call: if |
| get_fileA | Download an attachment and decrypt it locally if it was uploaded to an encrypted room (integrity checked against the uploader's SHA-256). Text-like files (markdown, code, json, csv, txt…) up to max_inline_bytes are returned as text; images up to 4 MiB as images; other files are saved to the private data directory and the path is returned (in ephemeral mode they are returned inline as a binary resource instead, never written to disk). Identify the file by file_id (from a message's attachments) or by message_id. |
| get_userA | Look up a Rocket.Chat user by username or id: display name, status, status text, bio, roles and timezone offset when visible to this account. |
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 8 tools
Each tool targets a distinct resource or action: user lookup, single-message fetch, room timeline, thread, global search, room listing, attachment download, and index sync. The singular/plural pair get_message/get_messages is clearly differentiated by descriptions, and no tools appear to do the same thing.
Six tools follow a clear verb_noun pattern (get_user, get_message, get_file, get_messages, get_thread, list_rooms), while search and sync use bare verbs without nouns. This is a minor deviation from an otherwise predictable convention.
Eight tools is well-scoped for a read-focused Rocket.Chat client. Each tool earns its place by covering a distinct retrieval granularity (user, room, message, thread, search, file) plus index synchronization.
The read surface is comprehensive: users, rooms, messages, threads, full-text search, attachments, and index sync are all covered. The main gap is the absence of any write/send operations, and there is no tool for room member lists or bulk user listing, but core read workflows have no dead ends.