zulip-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ZULIP_SITE | Yes | Server URL, such as https://chat.example.com | |
| ZULIP_EMAIL | Yes | The bot's email | |
| ZULIP_STREAM | Yes | The one stream this server uses | |
| ZULIP_API_KEY | Yes | The bot's API key | |
| ZULIP_POST_RULES | No | Set to 1 to apply post rules to handoff posts. Default 0 | 0 |
| ZULIP_INSECURE_TLS | No | Set to 1 to skip certificate checks, for self-signed servers. Default 0 | 0 |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| zulip_statusB | One line: a topic's message count, last sender and age, plus recent mentions of this bot. Topic defaults to path's repo and branch, then the server's folder. |
| zulip_readC | Last 5 messages of a topic at 300 chars each. full=True gives 15, untruncated. Posts with Did:, Gate:, Next: and Blocked: lines are never truncated. The newest one among the last 50 comes first when it is older than the messages shown. |
| zulip_sendA | Post a message. Pass topic, or path set to the repository being worked on, whose repo and branch name the topic. An identical repeat within 120 s is not posted again. handoff=True marks an end-of-work post, which must meet the server's post rules if on. |
| zulip_searchA | Full-text search across every topic in the stream. 10 hits at 200 chars each. |
| zulip_mentionsA | The 10 most recent messages in the stream that mention this bot, at 300 chars each. |
| zulip_topicsC | The stream's most recently active topics, newest first. limit is capped at 100. |
| zulip_reactA | Add an emoji reaction, by name such as "thumbs_up", to a message id. |
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 7 tools
Most tools have distinct roles: read, send, search, topics, mentions, react, and status. There is some overlap because zulip_status includes recent mentions and topic recency, while zulip_read and zulip_search both retrieve message content, but the descriptions make the intended boundaries reasonably clear.
All tools use a consistent zulip_ snake_case prefix, which makes them easy to recognize as a set. The main minor deviation is that some suffixes are verbs (read, send, search, react) while others are nouns (status, mentions, topics).
Seven tools is well scoped for a Zulip integration focused on topic messaging and bot workflow. Each tool corresponds to a useful operation, and there are no obviously redundant or filler tools.
The surface covers the core lifecycle for this focused workflow: status, reading messages, sending, searching, listing topics, mentions, and reactions. Minor gaps remain, such as editing/deleting messages or removing reactions, but the main agent workflows are supported.