Provides tools to interact with Zulip, enabling AI agents to send and search messages, manage streams and topics, handle direct messages, and manage reactions and message flags.
Click on "Install 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., "@Zulip MCP ServerSearch for messages about the Q4 roadmap in the 'planning' stream"
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.
zulip-mcp
An MCP (Model Context Protocol) server for Zulip, enabling AI agents (Claude, etc.) to read and interact with Zulip streams, messages, and direct messages.
Features
Send & manage messages — stream messages, direct messages, edit, delete
Search messages — by stream, topic, sender, or keyword
Read direct messages — list all DMs or fetch a conversation with a specific user
Stream management — subscribe, unsubscribe, create streams, list topics
Reactions & flags — add/remove emoji reactions, mark messages read, update flags
Resources — read-only access to streams, subscriptions, users, presence, and DMs
Tools
Tool | Description |
| Send a message to a stream/topic |
| Send a DM to one or more users |
| Retrieve DMs (all or with a specific user) |
| Edit a message or move it to another topic |
| Delete a message |
| Fetch a single message by ID |
| Search messages by stream, topic, sender, or keyword |
| Subscribe to a stream (creates it if needed) |
| Unsubscribe from a stream |
| Create a new stream |
| List topics in a stream |
| Add an emoji reaction to a message |
| Remove an emoji reaction |
| Bulk-update message flags |
| Mark messages as read |
Resources
URI | Description |
| All streams |
| Current user's subscriptions |
| Topics in a stream |
| Messages in a stream topic |
| All users |
| Authenticated user's profile |
| Recent direct messages |
| DM conversation with a specific user |
| Specific user's profile |
| User presence/status |
Setup
1. Get Zulip API credentials
Log in to your Zulip organization
Go to Settings → Your account → API key
Copy your email and API key
2. Configure environment
cp .env.example .envEdit .env:
ZULIP_USERNAME=yourbot@your-org.zulipchat.com
ZULIP_API_KEY=your_api_key_here
ZULIP_REALM=https://your-org.zulipchat.com3. Build
npm install
npm run build4. Configure Claude Desktop (or other MCP client)
Add to your claude_desktop_config.json:
{
"mcpServers": {
"zulip": {
"command": "node",
"args": ["/path/to/zulip-mcp/dist/index.js"],
"env": {
"ZULIP_USERNAME": "yourbot@your-org.zulipchat.com",
"ZULIP_API_KEY": "your_api_key_here",
"ZULIP_REALM": "https://your-org.zulipchat.com"
}
}
}
}Or if installed globally via npm:
{
"mcpServers": {
"zulip": {
"command": "zulip-mcp",
"env": {
"ZULIP_USERNAME": "yourbot@your-org.zulipchat.com",
"ZULIP_API_KEY": "your_api_key_here",
"ZULIP_REALM": "https://your-org.zulipchat.com"
}
}
}
}Environment Variables
Variable | Required | Default | Description |
| Yes | — | Bot/user email address |
| Yes | — | Zulip API key |
| Yes | — | Zulip server URL (e.g. |
| No |
| HTTP request timeout in milliseconds |
| No |
| Max retries on transient errors |
Development
npm run dev # run with tsx (no build step)
npm run build # compile TypeScript to dist/License
MIT
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.