# Zulip MCP

> Zulip MCP connects any AI agent directly to your Zulip workspace. It lets your client read entire message histories, send direct messages or channel updates, manage user presence status, and track which streams you belong to. Automate everything from posting announcements to checking the latest discussion points without logging into the app.

## Overview
- **Category:** other
- **Price:** Free

## Description

This MCP gives your AI agent full control over your Zulip communications. Your client can read message history from any stream, check who is online, or send a quick update to a channel or direct message recipient. Need to notify three different people that a project milestone hit? Your agent handles it, sending messages across multiple streams automatically. This makes it perfect for building complex automations; you can chain this Zulip MCP with another service—like an HR platform MCP—to build workflows that span your entire tech stack through Vinkius. The platform manages all the security layers and ensures your credentials pass through a zero-trust proxy, so your keys never sit on a disk. It's about keeping your communication flow moving without manual steps.

## Tools

### zulip_add_reaction
Add an emoji reaction to a message

### zulip_get_messages
Use anchor "newest" for latest messages.

Retrieve message history from Zulip

### zulip_get_own_profile
Get the authenticated bot/user profile

### zulip_get_stream_topics
List topics within a specific Zulip stream

### zulip_get_streams
List all available Zulip streams (channels)

### zulip_get_users
List all users in the Zulip organisation

### zulip_send_message
Use type "stream" for channels or "direct" for DMs.

Send a message to a stream or direct to a user

### zulip_set_presence
Update the user presence status

### zulip_subscribe_to_stream
Subscribe the authenticated user to a stream

## Capabilities

### Fetch full message history
Your agent retrieves detailed conversation threads and the latest messages from any Zulip stream.

### Send targeted communications
You can send a message to an entire channel or direct it privately to a single user.

### Manage status and subscriptions
The agent updates your current presence status and subscribes you to new channels.

### Discover users and topics
You can list every user in the organization or pull a list of active discussion topics within a stream.

## Use Cases

### Incident Response Triage
The ops engineer needs to know what was said about the database outage. They prompt their agent, which uses zulip_get_messages on the #alerts stream and then summarizes the thread topics using zulip_get_stream_topics.

### Onboarding New Team Members
A manager needs to get a new hire set up. The agent uses zulip_get_users to find all team members, then sends an automated welcome message via zulip_send_message into the #general stream.

### Status Reporting
The product owner needs to signal that testing is paused. They simply ask the agent to update their status using zulip_set_presence, making sure everyone sees they are 'on break'.

### Post-Meeting Follow Up
After a strategy session, the team lead asks the agent to list all active discussion topics in the #strategy stream using zulip_get_stream_topics so they can assign action items.

## Benefits

- Stop manually reading chat logs. Use zulip_get_messages to pull the full history for a project thread in seconds.
- Maintain visibility without logging in. Set your status using zulip_set_presence so teammates know exactly when you're available.
- Keep communication centralized. You can list every user via zulip_get_users and then send targeted messages to them directly.
- Automate announcements. Send a single message across multiple streams or channels with one command, using the zulip_send_message tool.
- Manage access points by running zulip_subscribe_to_stream. Your agent can keep you updated on critical new channels automatically.

## How It Works

The bottom line is you tell your AI client what needs to happen in Zulip, and it runs the sequence of commands for you.

1. Connect your preferred AI client to this MCP via Vinkius. This establishes the secure link between your agent and Zulip.
2. The agent uses tools like zulip_get_users or zulip_get_streams to map out all available channels and people in your organization.
3. You prompt your agent with a task (e.g., 'Send an update to the marketing stream') and it executes the necessary actions, sending messages and managing presence.

## Frequently Asked Questions

**How do I check message history with zulip_get_messages?**
You simply ask your agent for it. You tell it which Zulip stream and how far back you need the messages, and it pulls the full thread instantly.

**Can zulip_send_message handle DMs or groups?**
Yes, it handles both. You specify the recipient type—either a 'stream' for a channel or 'direct' for one person—and send your message.

**What is the purpose of zulip_get_users?**
This tool lists everyone in your Zulip organization. It lets the agent know exactly who exists so you can target messages or check profiles.

**Does zulip_set_presence actually work?**
Yes, it updates your online status within Zulip. Your agent changes your presence to 'Away' or 'Online,' letting teammates know when they can reach you.

**How do I use zulip_get_own_profile to confirm my identity?**
It returns a data object detailing the bot or user profile currently connected via Vinkius. This confirms your agent's unique ID and display name, which is crucial for ensuring all subsequent actions are attributed correctly.

**What steps do I take before listing channels with zulip_get_streams?**
You must call this tool first; it lists every available stream (channel) in your organization. This output gives you the precise channel IDs needed for subsequent actions, like sending a message or subscribing.

**What information does zulip_get_stream_topics provide?**
It reads and lists all defined topics within a specific stream ID. This helps your agent understand the organizational structure of conversation threads before needing to retrieve messages.

**If I need to change my status, what is required for zulip_set_presence?**
You simply provide the desired presence status (like 'Online', 'Away', or 'DND') and call this function. Your agent updates your account status immediately across Zulip.