4,500+ servers built on MCP Fusion
Vinkius

Zulip MCP. Let your agent read history, send DMs, and manage presence.

Claude Claude
ChatGPT ChatGPT
Cursor Cursor
Gemini Gemini
Windsurf Windsurf
VS Code VS Code
JetBrains JetBrains
Vercel Vercel
See Vinkius in Action

Works with every AI agent you already use

…and any MCP-compatible client

Zulip MCP on Cursor AI Code Editor MCP Client Zulip MCP on Claude Desktop App MCP Integration Zulip MCP on OpenAI Agents SDK MCP Compatible Zulip MCP on Visual Studio Code MCP Extension Client Zulip MCP on GitHub Copilot AI Agent MCP Integration Zulip MCP on Google Gemini AI MCP Integration Zulip MCP on Lovable AI Development MCP Client Zulip MCP on Mistral AI Agents MCP Compatible Zulip MCP on Amazon AWS Bedrock MCP Support

Just plug in your AI agents and start using Vinkius.

Zulip MCP Server connects any AI client—Claude, Cursor, etc.—directly to your Zulip workspace. It gives agents tools to read message history, send messages to specific streams or DMs, manage user presence status, and interact with topics across the entire organization.

What your AI agents can do

Zulip add reaction

Adds a specified emoji reaction to an existing message in Zulip.

Zulip get messages

Retrieves message history from any specified stream or channel, allowing you to target the newest messages specifically.

Zulip get own profile

Gets the profile details of the authenticated bot or user account currently running the agent.

+ 6 more capabilities included
Retrieve Message History

The agent fetches message threads from specific streams or channels, using anchors like 'newest' to get the latest content.

Send Messages and DMs

You send messages either into a public stream (channel) or directly as a private message (DM) to a user.

Manage User Presence Status

The agent updates the status indicator for the authenticated bot/user, marking them as active, away, etc.

Browse Organizational Structure

You list all available streams, topics within a stream, and every user in the Zulip organization to understand context.

Subscribe to Streams

The agent automatically subscribes the bot/user account to specific streams so it can participate in future conversations.

Supported MCP Clients

Claude Claude
ChatGPT ChatGPT
Cursor Cursor
Gemini Gemini
Windsurf Windsurf
VS Code VS Code
JetBrains JetBrains
Vercel Vercel
+ other MCP clients

Zulip MCP Server: 9 Tools for Chat Management

These nine tools let your agent interact with every core function of Zulip—from sending messages to listing user profiles.

zulip019d762b

zulip add reaction

Adds a specified emoji reaction to an existing message in Zulip.

zulip019d762b

zulip get messages

Retrieves message history from any specified stream or channel, allowing you to target the newest messages specifically.

zulip019d762b

zulip get own profile

Gets the profile details of the authenticated bot or user account currently running the agent.

zulip019d762b

zulip get stream topics

Lists all distinct topics that exist within a single, specified Zulip stream (channel).

zulip019d762b

zulip get streams

Retrieves a list of every available public and private streams in the entire organization.

zulip019d762b

zulip get users

Lists all user accounts registered within your Zulip organizational instance.

zulip019d762b

zulip send message

Sends a message either to a designated stream (channel) or as a private direct message (DM) to a single user.

zulip019d762b

zulip set presence

Updates the status indicator for the connected account, changing its presence state in Zulip.

zulip019d762b

zulip subscribe to stream

Subscribes the authenticated user to a specific stream so they can receive notifications and participate fully.

Choose How to Get Started

Build a custom MCP for your own tools, or connect a ready-made integration from our catalog.

Build Your Own

Turn any API into an MCP. Import a spec, define Agent Skills, or deploy with MCPFusion.

  • Import from OpenAPI, Swagger, or YAML specs
  • Create Agent Skills with progressive disclosure
  • Deploy to edge with MCPFusion framework
  • Built in DLP, auth, and compliance on every call
  • Real time usage dashboard and cost metering
  • Publish to catalog or keep private
Start building

Make Your AI Do More

Start with Zulip, then connect any of our 4,700+ other servers whenever your AI needs more. One click, no limits.

  • Use this MCP plus 4,700+ others, all in one place
  • Add new capabilities to your AI anytime you want
  • Every connection is secured and compliant automatically
  • Track usage and costs across all your servers
  • Works with Claude, ChatGPT, Cursor, and more
  • New servers added to the catalog every week

What you can do with this MCP connector

Listen up—the zulip_ toolset gives your AI client direct control over your entire Zulip workspace. Instead of you manually copying threads or checking statuses, your agent can perform every chat action, from reading history to managing who's online. It’s about making the platform truly actionable for your automation.

Understanding Your Workspace Structure:

The server lets your agent map out your whole organization first. You can run zulip_get_streams to pull a comprehensive list of every public and private stream available across Zulip. If you need to know who's talking, zulip_get_users lists every account registered in the instance. To narrow down context, zulip_get_stream_topics reads out all distinct topics within any single specified stream.

You can also grab your own details using zulip_get_own_profile, which fetches the profile information for the bot or user that's running the agent.

Getting Set Up and Staying Current:

To make sure your agent is ready to talk, you'll use zulip_subscribe_to_stream to automatically subscribe the account to any specific stream. This ensures it can participate in future conversations and receive notifications. The agent keeps track of its status using zulip_set_presence, letting you update the connected account’s presence indicator—you can mark it as active, away, or whatever state you need.

Reading Messages: History Retrieval:

When your agent needs information, it pulls thread data directly. The zulip_get_messages tool retrieves message history from any specified stream or channel; this function is powerful because you can anchor the search to get only the newest messages, which is critical for keeping up with real-time conversations.

Writing and Interacting: Sending Messages:

For sending information out, zulip_send_message handles two scenarios. You can send a message into a designated public stream—a full channel conversation—or you can bypass the group chat entirely by sending it directly as a private direct message (DM) to one specific user.

Beyond just sending text, your agent can interact with existing content. zulip_add_reaction lets your client add any specified emoji reaction to an already posted message, letting you acknowledge or reference specific points in the thread without writing a whole new reply. This means it can read messages using zulip_get_messages, update who's online using zulip_set_presence, map out all available communication channels by listing streams with zulip_get_streams, and send targeted responses via zulip_send_message—all without you ever having to open the Zulip app yourself.

How Zulip MCP Works

  1. 1 First, your AI client authenticates with Vinkius and establishes a connection using the zulip_ tools. You specify which action you need—for example, sending a message.
  2. 2 Next, your agent calls the specific tool (e.g., zulip_send_message), passing all required parameters: the target stream/user type and the content of the message.
  3. 3 The Zulip API executes the command, and the result—the sent message confirmation or retrieved data payload—is returned directly to your AI client.

The bottom line is that your agent treats the Zulip platform like another callable API endpoint, giving it full conversational control.

Who Is Zulip MCP For?

This is for Ops Engineers or Support Managers who spend too much time coordinating across multiple channels. If you're constantly pulling message snippets into a separate ticketing system or need an agent to monitor status updates without human intervention, this server is key.

Technical Support Manager

Uses zulip_get_messages and zulip_add_reaction to have the AI summarize ticket history from a stream or mark messages as 'resolved' without reading every thread.

DevOps Engineer

Employs zulip_set_presence and zulip_get_users so that automated deployment bots can report their current status (e.g., 'Maintenance Mode') and list active team members.

Product Manager

Calls zulip_get_streams and zulip_get_topics to audit which channels are being used, identifying stale or unused project streams for cleanup.

What Changes When You Connect

  • Get full message context with zulip_get_messages. Instead of manually pulling threads or asking a human to summarize the last 50 messages, your agent retrieves the complete payload instantly. This is critical for deep debugging or incident reporting.
  • Keep track of team status using zulip_set_presence. Your bot can change its own presence—saying 'Maintenance' or 'On Call'—so the rest of the team knows exactly how to route communication without checking a separate status board.
  • Automate follow-up actions with zulip_add_reaction. If your agent identifies an action item in history, it can automatically reply with a specific reaction (like 🔥) rather than just leaving a message, streamlining accountability tracking.
  • Map out the entire communication graph using zulip_get_streams and zulip_get_topics. Before building a workflow, you check these tools to list all available channels and topics. You never want your agent trying to send something to a stream that doesn't exist.
  • Maintain user visibility with zulip_get_users. Need to know who worked on this project? The agent lists every single user in the organization so you can direct messages or assign tasks precisely.

Real-World Use Cases

01

Onboarding a new hire into a team stream

The problem: A new developer joins and needs to catch up on weeks of discussion in the #project-alpha stream. Manual reading is impossible. Solution: Your agent runs zulip_get_messages, targeting the 'newest' anchor for the last 30 days, gathering all relevant context into a single report that can be delivered directly to the new hire.

02

Running an automated status check during deployment

The problem: The team needs to know if the primary contact is available for emergency fixes. Solution: Your agent first calls zulip_get_own_profile and then uses zulip_set_presence to update its own status, while simultaneously querying other users via zulip_get_users to confirm who is marked 'Online' before proceeding with any action.

03

Auditing channel activity for compliance

The problem: You need to know exactly what was discussed in the #finance-review stream last month. Solution: Your agent systematically uses zulip_get_messages, iterating through dates and streams, assembling a comprehensive, searchable transcript that is stored outside of Zulip.

04

Escalating an issue to the right person

The problem: A support ticket was mentioned in a large general channel, but you don't know who owns it. Solution: Your agent first uses zulip_get_topics on the relevant stream to identify the topic owner, then uses zulip_send_message to DM that specific user with all the necessary details.

The Tradeoffs

Trying to read everything at once

Calling zulip_get_messages without specifying an anchor or date range, leading to API timeouts and massive data dumps that crash your agent.

Always use the 'newest' anchor in zulip_get_messages when fetching history. If you need old data, segment your requests by date range, never try to pull everything at once.

Forgetting user scope

Attempting to send a message via zulip_send_message without knowing if the recipient is in a stream or needs a direct DM (DMs vs. Streams).

Always check your context first. Use zulip_get_users to get valid IDs, and then decide if the communication must be a 'stream' message or a 'direct' message type when calling zulip_send_message.

Assuming subscription status

Running an automation that relies on notifications from Stream B without first confirming the bot is subscribed.

Before any monitoring task, call zulip_subscribe_to_stream for every stream your agent needs to monitor. This ensures the connection works and you won't miss critical updates.

When It Fits, When It Doesn't

Use this server if your core problem involves automated communication within Zulip. Specifically, if you need an AI agent to read message history (zulip_get_messages), update status indicators (zulip_set_presence), or send proactive messages based on chat data, then proceed.

Don't use this if you only need a simple notification feed—a basic webhook might be enough. Don't use it if file sharing is the main goal; these tools are purely for text/status updates. If your workflow requires complex database interactions (like updating a Jira ticket), you'll need to pair this with other MCP servers, but zulip_send_message handles sending the final confirmation message perfectly.

Independent Platform Disclaimer: Vinkius is an independent platform and is not affiliated with, endorsed by, sponsored by, verified by, or otherwise authorized by Zulip. All third-party trademarks, logos, and brand names are the property of their respective owners. Their use on this website is strictly for informational purposes to identify service compatibility and interoperability.

VINKIUS INFRASTRUCTURE

Cloud Hosted

Managed infra

V8 Isolated

Sandboxed per request

Zero-Trust Proxy

No stored credentials

DLP Enforced

Policy on every call

GDPR Compliant

EU data residency

Token Compression

~60% cost reduction

How we secure it →

Works with Claude, ChatGPT, Cursor, and more

The Model Context Protocol standardizes how applications expose capabilities to LLMs. Instead of operating in isolation, your AI gains direct access to external platforms, live data, and real-world actions through secure, standardized connections.

This server provides 9 capabilities that interface natively with Claude, ChatGPT, Cursor, and any MCP client. No middleware. No custom integration required.

Available Capabilities

zulip_add_reaction zulip_get_messages zulip_get_own_profile zulip_get_stream_topics zulip_get_streams zulip_get_users zulip_send_message zulip_set_presence zulip_subscribe_to_stream

Sifting through chat history is tedious and slow.

Right now, if you need a full transcript of what was discussed last week in the `#project-x` stream, you're stuck clicking into Zulip. You copy sections, paste them into Notion, then maybe upload that to another tool just to get it searchable. It takes 20 minutes and requires three different windows.

With this MCP server, your agent runs `zulip_get_messages`. You tell it the stream name and the date range, and boom—you get a clean, structured message payload instantly. No clicks required. Just data.

Zulip MCP Server: Control messages, topics, and presence.

Manually updating status or sending an update means logging into Zulip and clicking the profile icon. If you're building a system that needs to communicate its own operational status (e.g., 'System Down for Maintenance'), this manual process breaks your automation flow.

Now, your agent calls `zulip_set_presence`. The status updates instantly in Zulip without any human intervention or browser interaction. It just works.

Common Questions About Zulip MCP

How do I get the message history using zulip_get_messages? +

You must specify a target stream/channel and an anchor, like 'newest,' to tell the agent where to start looking. The tool returns structured data containing the full conversation thread.

Can I use zulip_send_message for DMs or streams? +

Yes. When calling zulip_send_message, you must specify the message type parameter. Use 'stream' to post in a channel, or 'direct' if you want it to go as a private DM.

What does zulip_get_topics do? +

It lists all distinct conversation topics within one specific stream. This helps your agent understand the organizational structure of the chat before trying to extract messages from it.

How do I make my bot appear online using zulip_set_presence? +

You call zulip_set_presence and pass the required status payload. This changes your visible status in Zulip, letting teammates know if you're available.

How do I use `zulip_get_users` to check who is in my Zulip organization? +

It returns a list of every user account within your connected Zulip domain. This helps you build an accurate roster or verify membership before sending messages.

What do I need to know about available channels using `zulip_get_streams`? +

This tool lists all the stream names (channels) your bot has access to. You must run this first if you aren't sure of the channel name before calling zulip_send_message.

How do I use `zulip_add_reaction` when I want to reply with an emoji? +

You pass the target message ID and the desired emoji identifier. This tool adds a visible reaction directly under a specific message in any stream.

Why would I need `zulip_subscribe_to_stream`? +

This tool ensures your bot receives messages from a particular stream, even if it wasn't initially configured for that channel. It manages the necessary access rights.

More in this category

You might also like

Built & Managed by Vinkius 30s setup 9 tools

We've already built the connector for Zulip. Just plug in your AI agents and start using Vinkius.

No hosting. No infrastructure. No complex setup.
All 9 tools are live and waiting. You're up and running in seconds.

Claude Claude
ChatGPT ChatGPT
Cursor Cursor
Gemini Gemini
Windsurf Windsurf
VS Code VS Code
JetBrains JetBrains
Vercel Vercel
+ other MCP clients

Vinkius gives your AI agents access to the full catalog of app connectors, all fully managed, secure, and enterprise-ready. One subscription, every tool you need.

Zero hosting required Full MCP catalog included Enterprise-grade security Auto-updated by Vinkius

Built, hosted, and secured by Vinkius. You just connect and go.