# ZulipChat MCP Server

Connect an MCP client to Zulip so an agent can search conversations, send messages, and inspect streams. Useful when you want to work with Zulip from your coding assistant.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 33
- Author: akougkas
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/akougkas/zulipchat-mcp
- Updated: 2026-10-09
- HTML: https://affpapa.org/en/nevibecode/mcp/zulipchat-mcp-server

## What it does

The server connects an MCP client to a Zulip workspace. An agent can read and send messages, search conversation history by sender, stream, or time, resolve users by name, and react to messages. The core profile exposes 20 tools; the extended profile adds tools for files, events, scheduled messages, and analytics.

You need a Zulip account and API key. Configure the server with a `~/.zuliprc` file or environment variables, then launch it through `uvx`. The Claude Code setup command registers it as an MCP server. Without Zulip credentials, the server has no account to connect to.

## Requirements
- Needs: Python and uv (commands run via uvx)
- Environment variables: `ZULIP_EMAIL`, `ZULIP_API_KEY`, `ZULIP_SITE` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env ZULIP_EMAIL=<ZULIP_EMAIL> --env ZULIP_API_KEY=<ZULIP_API_KEY> --env ZULIP_SITE=<ZULIP_SITE> --transport stdio zulipchat-mcp-server -- uvx zulipchat-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from zulipchat-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add zulipchat-mcp-server --env ZULIP_EMAIL=<ZULIP_EMAIL> --env ZULIP_API_KEY=<ZULIP_API_KEY> --env ZULIP_SITE=<ZULIP_SITE> -- uvx zulipchat-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from zulipchat-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "zulipchat-mcp-server": {
            "command": "uvx",
            "args": [
                "zulipchat-mcp"
            ],
            "env": {
                "ZULIP_EMAIL": "<ZULIP_EMAIL>",
                "ZULIP_API_KEY": "<ZULIP_API_KEY>",
                "ZULIP_SITE": "<ZULIP_SITE>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from zulipchat-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "zulipchat-mcp-server": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "zulipchat-mcp"
            ],
            "env": {
                "ZULIP_EMAIL": "<ZULIP_EMAIL>",
                "ZULIP_API_KEY": "<ZULIP_API_KEY>",
                "ZULIP_SITE": "<ZULIP_SITE>"
            }
        }
    }
}
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from zulipchat-mcp <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e ZULIP_EMAIL=<ZULIP_EMAIL> -e ZULIP_API_KEY=<ZULIP_API_KEY> -e ZULIP_SITE=<ZULIP_SITE> zulipchat-mcp-server uvx zulipchat-mcp
```
Replace <…> with your own values. uvx runs the command named after the package; if the README names another one, use uvx --from zulipchat-mcp <command>

## When to use it
- search Zulip history by sender or stream
- send a message to a Zulip stream
- resolve a person by name before messaging
- check stream details and topics
- access files or event tools in extended mode

## Example prompts
- Find Zulip messages from this user during the requested time range.
- Send a message to the selected Zulip stream.
- Show me the details and topics for this Zulip stream.

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [World Monitor](https://affpapa.org/en/nevibecode/mcp/world-monitor.md) — MCP server · ★ 89408
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [Front-End Checklist](https://affpapa.org/en/nevibecode/mcp/front-end-checklist.md) — MCP server · ★ 74559
- [Scrapling MCP Server](https://affpapa.org/en/nevibecode/mcp/scrapling-mcp-server.md) — MCP server · ★ 89433

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
