Zulip MCP Server

Model Context Protocol server for Zulip API integration with LLMs

Download as .zip Download as .tar.gz View on GitHub
Navigation: Home Installation Configuration Usage Examples Troubleshooting

API Reference

Complete documentation for all 25 tools and 4 resources available in the Zulip MCP Server.

Table of Contents


Resources

Resources provide contextual data to enhance LLM understanding of your Zulip workspace.

1. User Directory

URI: zulip://users?include_bots={include_bots}

Browse organization members with roles and status information.

Parameters:

Returns: Complete user directory with:

2. Streams Directory

URI: zulip://streams?include_archived={include_archived}

Explore available streams and their settings.

Parameters:

Returns: Stream information including:

3. Message Formatting Guide

URI: zulip://formatting/guide

Complete Zulip markdown syntax reference for message formatting.

Returns: Comprehensive formatting guide covering:

4. Common Patterns

URI: zulip://patterns/common

LLM usage workflows and troubleshooting guidance.

Returns: Best practices including:


Helper Tools

LLM-optimized tools for discovery and orientation.

1. search-users

🔍 DISCOVERY: Search for users by partial name or email when you don’t know exact details.

Parameters:

Returns: Array of matching users with basic info (name, email, ID, status)

Example:

{
  "query": "john",
  "limit": 5
}

2. get-started

🚀 START HERE: Test connection and get workspace overview. Perfect for orientation and troubleshooting.

Parameters: None

Returns: Connection status and workspace information:


Message Operations

Comprehensive message management capabilities.

1. send-message

đź’¬ SEND MESSAGE: Send messages to streams or direct users.

Parameters:

Example - Stream Message:

{
  "type": "stream",
  "to": "general",
  "topic": "Daily Standup",
  "content": "Good morning team! đź‘‹\n\n**Today's Goals:**\n- Review PR #123\n- Deploy feature X"
}

Example - Direct Message:

{
  "type": "direct",
  "to": "user@example.com,colleague@example.com",
  "content": "Can you review the latest changes when you have a moment?"
}

2. get-messages

đź“‹ BULK RETRIEVAL: Get multiple messages with filtering, pagination, and search.

Parameters:

Example - Stream History:

{
  "narrow": [["stream", "general"], ["topic", "announcements"]],
  "num_before": 50
}

Example - Search Messages:

{
  "narrow": [["search", "deployment"], ["sender", "admin@example.com"]]
}

3. get-message

🔍 SINGLE MESSAGE: Get complete details about one specific message.

Parameters:

Returns: Single message with full details including edit history and reactions.

4. edit-message

Edit an existing message’s content or topic.

Parameters:

5. delete-message

Delete a message by its ID.

Parameters:

6. add-emoji-reaction

Add an emoji reaction to a message.

Parameters:

7. remove-emoji-reaction

Remove an emoji reaction from a message.

Parameters:

8. upload-file

Upload a file or image to Zulip.

Parameters:

Returns: File URI for use in messages

9. get-message-read-receipts

Get list of users who have read a specific message.

Parameters:

Returns: Array of user IDs who have read the message

10. create-scheduled-message

Schedule a message to be sent at a future time.

Parameters:


User Operations

User discovery and profile management.

1. get-users

👥 ALL USERS: Get complete list of all users in the organization.

Parameters:

Returns: Complete user list with profiles, roles, and activity status

2. get-user-by-email

đź“§ EXACT LOOKUP: Find a user when you have their exact email address.

Parameters:

Returns: Single user with complete profile details

3. get-user

🆔 DETAILED LOOKUP: Get comprehensive user profile when you have their user ID.

Parameters:

Returns: Complete user information including role, timezone, avatar, and custom fields

4. update-status

Update user status message with emoji and availability.

Parameters:

Examples:

{
  "status_text": "In a meeting",
  "emoji_name": "coffee",
  "emoji_code": "2615",
  "reaction_type": "unicode_emoji"
}

5. get-user-groups

Get all user groups in the organization.

Parameters: None

Returns: List of user groups with member counts and descriptions


Stream Management

Stream (channel) discovery and management.

1. get-subscribed-streams

📺 USER STREAMS: Get all streams you’re subscribed to.

Parameters:

Returns: Your stream subscriptions with settings and permissions

2. get-stream-id

🔢 STREAM ID LOOKUP: Get the numeric ID of a stream when you know its name.

Parameters:

Returns: Stream ID for the specified stream name

3. get-stream-by-id

📊 STREAM DETAILS: Get comprehensive information about a stream when you have its numeric ID.

Parameters:

Returns: Complete stream information including settings, description, and creation date

4. get-topics-in-stream

đź’¬ STREAM TOPICS: Get all recent topics (conversation threads) in a specific stream.

Parameters:

Returns: List of recent topics with their latest message IDs


Drafts & Files

Message draft management and file operations.

1. create-draft

📝 CREATE DRAFT: Save a message as draft for later editing or sending.

Parameters:

2. get-drafts

Retrieve all saved message drafts.

Parameters: None

Returns: Array of all saved drafts with content and metadata

3. edit-draft

Update an existing message draft.

Parameters:

4. edit-scheduled-message

Modify a scheduled message before it’s sent.

Parameters:


Tool Selection Guide

When to use each user tool:

When to use each message tool:

  1. Discovery: get-started → search-users → send-message
  2. User Lookup: search-users (explore) → get-user-by-email (exact) → get-user (detailed)
  3. Messages: get-messages (bulk/search) → get-message (detailed analysis)
  4. Streams: get-subscribed-streams → get-stream-id → get-topics-in-stream

Error Handling

All tools provide comprehensive error handling with helpful messages:

For debugging issues, always start with the get-started tool to verify your connection and workspace access.