send_messageLABSCO SUMMARY
Chat as an interface to your agents, not just a place to read messages.
The session tools change what this is for: a long-running agent can bind itself to a Zulip topic, ask a question there, and wait — so the approval happens in the place your team already watches rather than in a terminal nobody is looking at.
What it is
A Zulip connector with a deliberate split. The default registers the 20 tools that cover daily use, because fewer tools mean faster selection and less token overhead; an extended mode registers all 60 when you need scheduling, event queues, file uploads or analytics. It also handles the agent side: sessions can be bound to a Zulip topic and ask for approval there.
What you get
- Messaging —
send_message,edit_message,get_message,add_reaction,manage_message_flags - Search and streams —
search_messageswith sender, stream and time filters,get_streams,get_stream_info,get_stream_topics - People —
resolve_userso "message Jaime" works without hunting for an address,get_users,get_own_user - Identity —
switch_identityposts as the bot instead of as you, in the same session, so human and automated messages stay distinguishable - Agent comms —
teleport_chat,register_agent,ensure_agent_session,agent_message,request_user_inputandwait_for_response, which is how a long-running session gets a stable control topic and an approval path - Extended mode adds
advanced_search,construct_narrow,cross_post_message,toggle_reaction, scheduled messages, drafts, event registration and listening,upload_fileandmanage_files,get_daily_summary, presence and user groups
Requirements
A .zuliprc — download it from Zulip Settings > Personal > Account & privacy > API key and save it as ~/.zuliprc. Then uvx zulipchat-mcp --zulip-config-file ~/.zuliprc, or run the interactive onboarding with zulipchat-mcp-setup. Pass --zulip-bot-config-file as well for dual identity, which is what switch_identity needs. Extended mode is --extended-tools or ZULIPCHAT_EXTENDED_TOOLS=1. --transport serves stdio or http, with --host and --port for the network case. The assistant posts as you by default — worth knowing before you point it at a busy stream.
Setup effort
One command plus a key — uvx zulipchat-mcp --zulip-config-file ~/.zuliprc, then supply credentials
USE CASES
Sending a message to a person by their first name
Resolve the name to the user, then send — no hunting for the formal address first.
Catching up on a stream you ignored
Search the messages with a stream and time filter and get the thread summarised rather than scrolling it.
Letting an agent ask you something mid-run
The session binds to a control topic, posts the question, and blocks until you reply in that topic.
Keeping bot messages distinct from yours
Switch identity to post as the bot for automated notifications, in the same session where you post as yourself.
Approving something from chat
Reply approve or deny in the session topic and the waiting agent proceeds accordingly.
Finding who said something and reacting to it
Search for the message, resolve the sender, and add the reaction without opening Zulip.
60 tools
Listed in project docs. Your client may show a different list.
edit_messageget_messageadd_reactionsearch_messagesget_streamsget_stream_infoget_stream_topicsresolve_userget_usersget_own_userteleport_chatregister_agentensure_agent_sessionagent_messagerequest_user_inputwait_for_responseswitch_identityserver_infomanage_message_flagsget_userget_user_statusupdate_statusget_user_presenceget_presenceget_user_groupsget_user_group_membersis_user_group_membermanage_user_mutecross_post_messagetoggle_reactionadvanced_searchconstruct_narrowcheck_messages_match_narrowget_scheduled_messagesmanage_scheduled_messageregister_eventsget_eventslisten_eventsderegister_eventsget_daily_summaryanalyze_stream_with_llmanalyze_team_activity_with_llmintelligent_report_generatorsend_agent_statusmanage_tasklist_sessionslist_instancesclose_agent_sessionpoll_agent_eventsupload_filemanage_filesagents_channel_topic_opsexecute_chainlist_command_typesupdate_message_flags_for_narrowget_draftscreate_draftedit_draftdelete_draftBEFORE YOU INSTALL
What to know first
Tools you get
60 tools named in the project's documentation.
Requires
- uvx on PATH
- A zuliprc file (Zulip Settings > Personal > Account & privacy > API key), passed with --zulip-config-file
Where it runs
All 3 documented clients run the server on your machine.
INSTALLATION
Connect your client
Server setup
uvx zulipchat-mcp --zulip-config-file ~/.zuliprcMCP Clients
Claude Code
claude mcp add zulipchat -- uvx zulipchat-mcp --zulip-config-file ~/.zuliprcGemini CLI
{
"mcpServers": {
"zulipchat": {
"command": "uvx",
"args": [
"zulipchat-mcp",
"--zulip-config-file",
"<YOUR_PATH_TO_ZULIPRC>"
]
}
}
}Codex
[mcp_servers.zulipchat]
command = "uvx"
args = ["zulipchat-mcp", "--zulip-config-file", "/home/<YOUR_USERNAME>/.zuliprc"]