Zulip MCP Server

The Zulip MCP Server acts as a bridge between the Zulip chat platform and AI assistants like Claude. Essentially, it gives an AI the ability to "talk" and "listen" within a Zulip workspace. Instead of a user having to copy and paste conversations or manually post status updates, this tool …

About this Protocol

The Zulip MCP Server acts as a bridge between the Zulip chat platform and AI assistants like Claude. Essentially, it gives an AI the ability to "talk" and "listen" within a Zulip workspace. Instead of a user having to copy and paste conversations or manually post status updates, this tool lets the AI handle those tasks directly, making team communication more fluid and automated. For developers and power users, this server unlocks a wide range of collaborative capabilities. It provides specific tools for listing channels, reading message history, and managing topics within streams. It can even handle interactive elements like adding emoji reactions or sending direct messages to specific team members. By subscribing to certain streams and pulling historical data, the AI can stay informed about ongoing projects and provide context-aware assistance based on actual team discussions. On a technical level, the integration is built to work seamlessly with the Model Context Protocol, allowing for easy deployment via npx or Docker. It interfaces directly with the Zulip API using a dedicated bot account, requiring only a few environment variables such as an API key and instance URL. This setup is particularly powerful for building custom AI agents that need to monitor specific threads, summarize daily activity, or act as an automated project manager that can post updates to specific topics within a workspace.

How to Use

1. Installation

To install and set up the Zulip MCP server, you must first configure a bot within your Zulip workspace:

  1. Create a Zulip Bot:
    • Log in to your Zulip instance.
    • Navigate to Settings > Personal > Bots.
    • Click "Add a new bot".
    • Select "Generic bot" type and fill in the required information.
    • Click "Create bot".
  2. Gather Credentials:
    • Bot Email address
    • Bot API key (displayed upon creation)
    • Zulip instance URL (e.g., https://example.zulipchat.com)
  3. Permissions: Ensure the bot is subscribed to the specific channels (streams) it needs to access.

For Docker users, you can build the image locally:

docker build -t mcp/zulip .

2. Configuration

Add the following configuration to your MCP settings file (e.g., claude_desktop_config.json).

Using npx

{
  "mcpServers": {
    "zulip": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-zulip"
      ],
      "env": {
        "ZULIP_EMAIL": "[email protected]",
        "ZULIP_API_KEY": "your-bot-api-key",
        "ZULIP_URL": "https://example.zulipchat.com"
      }
    }
  }
}

Using Docker

{
  "mcpServers": {
    "zulip": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "ZULIP_EMAIL",
        "-e",
        "ZULIP_API_KEY",
        "-e",
        "ZULIP_URL",
        "mcp/zulip"
      ],
      "env": {
        "ZULIP_EMAIL": "[email protected]",
        "ZULIP_API_KEY": "your-bot-api-key",
        "ZULIP_URL": "https://example.zulipchat.com"
      }
    }
  }
}

3. Available Tools

  • zulip_list_channels: List available channels (streams). Optional inputs: include_private, include_web_public, include_subscribed.
  • zulip_post_message: Post a new message to a stream. Required inputs: channel_name, topic, content.
  • zulip_send_direct_message: Send a DM to one or more users. Required inputs: recipients (array of emails/IDs), content.
  • zulip_add_reaction: Add an emoji reaction to a message. Required inputs: message_id, emoji_name.
  • zulip_get_channel_history: Get recent messages from a channel and topic. Required inputs: channel_name, topic.
  • zulip_get_topics: Get topics within a specific channel. Required input: channel_id.
  • zulip_subscribe_to_channel: Subscribe the bot to a channel. Required input: channel_name.
  • zulip_get_users: Retrieve a list of users in the Zulip organization.

4. Example Prompts

(Note: While not explicitly listed as a section in the content, the following are inferred from the available tools):

  • "List all the public channels in my Zulip workspace."
  • "Post a message to the 'Engineering' stream under the 'Sprint Planning' topic saying 'The update is complete'."
  • "Send a direct message to [email protected] saying 'Hello from Claude'."
  • "Show me the last 10 messages from the 'General' channel in the 'Announcements' topic."
  • "Add a 'thumbs_up' reaction to message ID 12345."

Use Cases

Use Case 1: Automated Daily Standup and Topic Summarization

Problem: In fast-moving engineering teams, team members often struggle to catch up on long discussion threads across multiple Zulip streams and topics, leading to "notification fatigue" or missed decisions.
Solution: An AI assistant can use the Zulip MCP to fetch recent message history across specific channels and topics to generate concise executive summaries, highlighting action items and key decisions.
Example: A user asks, "What were the main takeaways from the #backend-dev 'database-migration' topic today?" The AI uses zulip_get_channel_history, processes the messages, and provides a bulleted summary of the consensus reached by the team.

Use Case 2: Seamless Code-to-Chat Integration for Developers

Problem: Developers often need to share code snippets, error logs, or refactoring ideas with their team. Switching back and forth between a code editor (like Cursor) and the Zulip desktop app breaks cognitive flow.
Solution: Using this MCP within an AI-integrated IDE, a developer can command the AI to post code directly to a relevant Zulip stream or send it to a specific colleague for review without leaving the environment.
Example: After finishing a function, the developer tells the AI: "Post this function to the #code-review channel under the 'Auth-Module' topic and ask @SeniorDev for feedback." The AI uses zulip_get_users to identify the recipient and zulip_post_message to share the code.

Use Case 3: Intelligent Knowledge Base Retrieval

Problem: Zulip serves as a repository of tribal knowledge, but searching for specific technical answers using standard keyword searches can be difficult if the user doesn't remember the exact phrasing.
Solution: The AI can act as a semantic search layer. It can browse topics and message history to find answers to complex questions, effectively turning the chat history into a searchable wiki.
Example: A new employee asks the AI, "How do we handle environment variables for the staging server?" The AI uses zulip_get_topics and zulip_get_channel_history to find past discussions in the #dev-ops stream, then explains the process based on those historical conversations.

Use Case 4: Automated Incident Triage and Notification

Problem: When a system alert occurs, DevOps engineers need to quickly notify the right people and acknowledge the issue to prevent duplicate alerts, which often requires manual typing and tagging in Zulip.
Solution: An AI assistant can be triggered by an incident to automatically post details to an incident stream, tag the on-call engineer, and even add an initial "eyes" emoji reaction to signify the system has acknowledged the event.
Example: Upon a server failure, the AI is instructed to: "Post the error log to #production-alerts, tag the SRE team, and react to the message with a 🚨." The AI uses zulip_post_message and zulip_add_reaction to execute the workflow instantly.

Use Case 5: Team Sentiment and Engagement Check-in

Problem: Managers of remote teams may find it difficult to gauge the "pulse" of the team or ensure that important announcements are being seen and acknowledged.
Solution: The AI can scan a specific announcement topic to see who has reacted to a post and who hasn't, then send friendly direct message reminders to those who might have missed it.
Example: A manager asks, "Who hasn't acknowledged the 'New Vacation Policy' post in #general?" The AI uses zulip_get_channel_history to check for reactions on the specific message ID, compares it against the list from zulip_get_users, and offers to send a DM (zulip_send_direct_message) to the remaining staff.

Protocol Stats

Rating No rating
Reviews 0
Visits 7
Pricing Unknown
Added Dec 27, 2025