
ZulipChat MCP Server
io.github.akougkas由 GitHub 帳號 akougkas 發布v0.4.2更新於 Oct 24, 2026
ZulipChat MCP: Connect AI to Zulip with 60+ tools for messaging, streams, events, and analytics
概覽
將 AI 助理連接到 Zulip 工作區,用來讀取、搜尋、傳送及回應訊息,並管理代理工作階段。
- 可以做什麼
- 透過 MCP 將相容的 AI 助理連接到 Zulip 伺服器,預設提供 20 個核心工具,擴充模式下提供 60 個。核心工具涵蓋訊息的傳送、編輯、讀取與回應,搜尋歷史記錄,列出頻道與主題,解析使用者,以及將代理工作階段綁定到 Zulip 主題並支援主題內審批請求。擴充模式增加排程訊息、草稿、事件佇列、檔案上傳、線上狀態、使用者群組與分析功能。選用的 LLM 分析使用伺服器端的 Anthropic 提供者。
- 適用情境
- 當助理需要在 Zulip 組織內工作時適用:掌握頻道動態、傳送公告或私訊、搜尋對話歷史,或執行長時間代理工作階段以接收提及並在主題中請求審批。
- 執行需求
- 透過 PyPI 套件 zulipchat-mcp 以 stdio 方式在本機執行,通常用 uvx 啟動。需要 Zulip API 金鑰與帳戶電子郵件,可透過 zuliprc 檔案或 ZULIP_API_KEY、ZULIP_EMAIL、ZULIP_SITE 環境變數提供。選用 HTTP 傳輸需要 bearer 權杖;選用 LLM 分析需要 ANTHROPIC_API_KEY。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 ZulipChat MCP Server,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
ZulipChat MCP Server
Model Context Protocol server for Zulip Chat. Connect Claude Code, Codex, Clio Coder, OpenCode, Copilot, Antigravity CLI, Gemini CLI, and other MCP clients to Zulip.
[PyPI] [CI] [Publish] [Coverage Gate] [Downloads] [GitHub stars] [Python] [License] [MCP]
Quick Start · Setup Wizard · Integrations · Two-Tier Tools · Contributing
Quick Start
Configure this command in your MCP client to let the assistant read and write Zulip messages with the configured account.
Need a zuliprc? Zulip Settings > Personal > Account & privacy > API key — download the file, save it as ~/.zuliprc.
Interactive onboarding:
What This Does
ZulipChat MCP bridges any MCP-compatible AI assistant (Claude Code, Gemini CLI, Cursor, Windsurf, etc.) to your Zulip workspace. The assistant can:
- Send and read messages — stream messages, DMs, replies, reactions
- Search conversation history — full-text search with filters for sender, stream, time range
- Resolve people by name — verify a unique recipient before sending; ambiguous names need clarification
- Switch identities — post as yourself or as a bot, in the same session
- Monitor activity — search recent messages, get stream info, check who's online
- Bind sessions to Zulip topics — give long-running agent sessions a stable control topic
- Receive ordinary bot mentions — an event-fed local inbox that your own host adapter polls to wake an agent and reply in the source topic, without
/replyfor conversation. The server is the transport; it does not launch or supervise coding agents - Reuse dated snapshots — short-lived message caches and rate-aware request admission reduce repeated API reads
- Request approvals in-topic — owner replies with
/approve REQUEST_IDor/deny REQUEST_IDin the session topic; each decision names the request it answers - Load Agent Skills — four packaged instructions for messaging, session control, notifications, and bounded work loops, available as local files and MCP Resources
- Export agent packages — native host configuration and skills, Claude's hook/plugin assets, or an Agent Plugins 1.0.0 package
Agent setup
Exports support claude-code, codex, opencode, copilot, vscode,
antigravity-cli, clio-coder, and generic. Add --mode plugin for a package.
For several Zulip organizations, export once per organization with
--server-id zulipchat-<org>; exports merge into one host configuration.
Account state lives under ~/.local/state/zulipchat-mcp/. Host trust remains explicit;
Clio configures MCP execution separately from plugin content. See the
capability matrix,
Clio guide, and
complete workflow.
For read-only access, add --tool-profile read-only: discovery and execution
both expose nine core reads or 23 extended reads. The default full profile
retains 20/60 tools. See API coverage and efficiency
for cache freshness, rate limits and the boundary between message transport and
host execution. The live Luna experiment
records normal mention-to-bot replies from a real Clio TUI driven by a private,
unshipped host adapter. Other hosts were tested through exported configuration
and fake-credential checks, not live sessions.
Two-Tier Tool Architecture
v0.6.0 introduced a deliberate split: 20 core tools by default, 60 tools when you need more.
Core Mode (default)
The 20 tools that cover most daily use:
Why 20 instead of 60? Fewer tools means faster tool selection, lower token overhead, and less confusion for the AI. Most tasks — sending messages, searching, reacting, and binding an agent session to Zulip — only need the core set.
Extended Mode
Need scheduled messages, event queues, file uploads, analytics, or advanced search?
Or via environment variable:
Extended mode adds: toggle_reaction, cross_post_message, advanced_search, construct_narrow, get_scheduled_messages, manage_scheduled_message, get_drafts, create_draft, edit_draft, delete_draft, register_events, get_events, listen_events, upload_file, manage_files, get_daily_summary, manage_user_mute, get_user, get_presence, get_user_groups, and more.
Installation
Full per-client setup guide: docs/integrations/README.md
Claude Code
With dual identity (you + a bot):
Optional Claude hook bridge for lifecycle and approval routing:
Optional Claude package export for project-local hooks, skills, and subagents:
Gemini CLI
Add to ~/.gemini/settings.json under mcpServers:
Claude Desktop / Cursor / Any MCP Client
Add to your MCP configuration:
Configuration Options
Remote HTTP Transport
ZulipChat MCP supports stateless HTTP deployments under the MCP 2026-07-28 protocol:
Generate client integration snippets for remote HTTP connections:
HTTP startup requires a bearer token for non-loopback binds and validates Host and Origin headers. Configure --allowed-host for the hostname used by clients or a reverse proxy; terminate TLS at the proxy for remote connections. A token grants access to the configured Zulip account: deploy a separate instance per trusted account, rather than sharing it across unrelated users.
HTTP tools reject server-local file paths, outbound event callbacks, and switch_identity. Upload text with file_content or binary bytes with file_content_base64; download without download_path to obtain a URL. Use stdio for local file operations and runtime identity switching. Attachment deletion requires --unsafe.
Persistent state defaults to an account-scoped directory. An explicitly selected
ZULIPCHAT_DB_PATH is associated with the normalized realm and user/bot
principals; a different account cannot reuse it. Legacy state is left intact and
requires deliberate association. See database migration.
Agent sessions, approvals, listener cursors, and default background-task storage remain local state. Use a single instance for these workflows. Separate DuckDB paths avoid writer conflicts but do not share session data; ordinary round-robin routing across such replicas is not supported. Legacy HTTP clients may also retain transport sessions.
AI Analytics & LLM Provider
AI-powered analytics tools (analyze_stream_with_llm, analyze_team_activity_with_llm, intelligent_report_generator) execute using a server-side Anthropic LLM provider:
- Set
ANTHROPIC_API_KEYon the server process for LLM generation. - Optionally set
ANTHROPIC_MODELto override the default model (claude-opus-5). - Without an API key, analytics tools return structured data summaries with
llm_unavailable: trueso your client assistant can analyze the data directly.
More clients
Dedicated setup pages:
Dual Identity
Configure both a user and a bot zuliprc to let your assistant switch between identities mid-session:
The assistant posts as you by default. Call switch_identity to post as the bot — useful for automated notifications, agent-to-agent communication, or keeping human vs. bot messages distinct.
Real-World Examples
"Catch me up on what happened in #engineering today"
→ Assistant calls search_messages with stream + time filter, summarizes the thread.
"Tell the team we're deploying at 3pm"
→ Assistant calls send_message to #engineering with the announcement.
"Who sent that message about the API migration?"
→ Assistant calls search_messages with keywords, returns sender and context.
"React with :thumbs_up: to Sarah's last message"
→ Assistant calls resolve_user ("Sarah"), search_messages (sender), then add_reaction.
"DM Jaime that the PR is ready"
→ Assistant calls teleport_chat with fuzzy name resolution — no email needed.
Development
Run checks:
For packaging, dependency, FastMCP, or startup changes, run the release smoke:
See CONTRIBUTING.md for the full guide, and CLAUDE.md / AGENTS.md for AI agent instructions.
Architecture
Built on FastMCP with async-first design, DuckDB for agent state persistence, and smart user/stream caching for fast fuzzy resolution.
Privacy
- No data collection — nothing leaves your machine except Zulip API calls
- No telemetry — zero analytics, tracking, or usage reporting
- Local execution — all processing happens on your hardware
- Credentials stay local — API keys are never logged or transmitted beyond your Zulip server
Full policy: PRIVACY.md
License
MIT — See LICENSE
Links
- Documentation Index
- Support
- Security Policy
- Zulip API Documentation
- Model Context Protocol
- Report Issues
- Discussions
來源:README.md,提交 31d4611
工具
0版本歷史
1- v0.4.2最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分