Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ZULIP_SITEYesBase URL of your Zulip instance
ZULIP_EMAILYesYour Zulip login email or bot email
ZULIP_API_KEYYesAPI key from Zulip settings

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_streamsA

List all visible Zulip streams (channels).

Use this to discover what streams/channels exist in the organization. Returns stream names, IDs, descriptions, and subscriber counts.

Args: include_public: Include public streams. Defaults to True. include_subscribed: Include streams you're subscribed to. Defaults to True. exclude_archived: Exclude archived streams. Defaults to True.

Returns: JSON list of streams with their metadata.

list_subscriptionsA

List streams (channels) you are subscribed to.

Use this to see which streams the authenticated user can access. More focused than list_streams — only shows your subscriptions.

Returns: JSON list of subscribed streams with names and IDs.

get_stream_idA

Look up a stream's numeric ID by its name.

Use this when you know a stream's name but need its ID for other API calls (e.g., list_topics requires a stream_id).

Args: stream_name: Exact name of the stream (case-sensitive).

Returns: JSON object with the stream_id.

list_topicsA

List topics (threads) in a stream, most recent first.

Use this to discover what conversations exist in a stream before fetching messages. Each topic is like a thread/subject line.

Args: stream_id: The numeric ID of the stream. Use get_stream_id to look this up.

Returns: JSON list of topics with names and last message IDs.

get_messagesA

Fetch messages from Zulip with flexible filtering.

This is the primary tool for reading chat history. Combine filters to narrow down results — e.g., stream + topic to get a specific conversation, or sender + search to find specific messages from a person.

Pagination: Results are anchored at a point and fetch messages before/after it. To paginate through history:

  1. First call: anchor="newest", num_before=100

  2. Next call: anchor=, num_before=100

  3. Repeat until found_oldest is true.

Args: stream: Filter by stream/channel name (e.g., "eng-resharding"). topic: Filter by topic/thread name within a stream. sender: Filter by sender email (e.g., "shreyan@nearone.org"). search: Full-text search query across message content. anchor: Reference point — a message ID (as string) or "newest", "oldest", "first_unread". Defaults to "newest". num_before: Number of messages before the anchor. Max 5000. Defaults to 100. num_after: Number of messages after the anchor. Max 5000. Defaults to 0. include_html: If True, return HTML-rendered content. If False (default), return raw Markdown source — better for analysis.

Returns: JSON object with keys: - messages: list of message objects (id, sender, content, timestamp, etc.) - found_newest: whether there are no newer messages matching the filter - found_oldest: whether there are no older messages matching the filter - anchor: the anchor message ID used

get_messageA

Fetch a single message by its ID.

Use this when you have a specific message ID and want its full content, or when following up on a message reference from another tool's output.

Args: message_id: The numeric message ID. include_html: If True, return HTML. If False (default), raw Markdown.

Returns: JSON object with the full message details.

get_own_profileA

Get the authenticated user's own profile.

Use this to verify the connection is working and to see who is authenticated. This is the first tool to call when setting up.

Returns: JSON object with user profile: user_id, email, full_name, etc.

get_userA

Get a user's profile by their numeric ID or email address.

Args: identifier: Either a numeric user ID (e.g., "12345") or an email address (e.g., "alice@example.com").

Returns: JSON object with user profile details.

list_usersA

List all users in the Zulip organization.

Returns all active and deactivated users. Use this to find user IDs or email addresses for filtering messages.

Returns: JSON list of user objects with basic profile info.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/shreyan-gupta/zulip-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server