Skip to main content
Glama

get-started

Test connection and get workspace overview to verify functionality and see available streams for orientation and troubleshooting.

Instructions

šŸš€ START HERE: Test connection and get workspace overview. Use this first to verify everything is working and see available streams. Perfect for orientation and troubleshooting.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Handler function executes the 'get-started' tool: tests Zulip connection, fetches user's subscribed streams count and samples, checks recent activity, and returns formatted workspace overview with quick tips.
    async () => { try { const [streams, recentMessages] = await Promise.all([ zulipClient.getSubscriptions().catch(() => ({ subscriptions: [] })), zulipClient.getMessages({ anchor: "newest", num_before: 3 }).catch(() => ({ messages: [] })) ]); const info = { status: "āœ… Connected to Zulip", your_email: process.env.ZULIP_EMAIL, zulip_url: process.env.ZULIP_URL, streams_available: streams.subscriptions?.length || 0, sample_streams: streams.subscriptions?.slice(0, 5).map((s: any) => s.name) || [], recent_activity: recentMessages.messages?.length > 0, quick_tips: [ "Use 'search-users' to find users before sending DMs", "Stream names are case-sensitive - use exact names from get-subscribed-streams", "Always include 'topic' when sending to streams", "For DMs, use actual email addresses (not display names)", "Note: 'streams' and 'channels' mean the same thing in Zulip" ] }; return createSuccessResponse(JSON.stringify(info, null, 2)); } catch (error) { return createErrorResponse(`Connection test failed: ${error instanceof Error ? error.message : 'Unknown error'}`); } }
  • src/server.ts:370-402 (registration)
    Registration of the 'get-started' tool with server.tool(), including tool name, description, empty input schema ({}), and reference to the handler function.
    server.tool( "get-started", "šŸš€ START HERE: Test connection and get workspace overview. Use this first to verify everything is working and see available streams. Perfect for orientation and troubleshooting.", {}, async () => { try { const [streams, recentMessages] = await Promise.all([ zulipClient.getSubscriptions().catch(() => ({ subscriptions: [] })), zulipClient.getMessages({ anchor: "newest", num_before: 3 }).catch(() => ({ messages: [] })) ]); const info = { status: "āœ… Connected to Zulip", your_email: process.env.ZULIP_EMAIL, zulip_url: process.env.ZULIP_URL, streams_available: streams.subscriptions?.length || 0, sample_streams: streams.subscriptions?.slice(0, 5).map((s: any) => s.name) || [], recent_activity: recentMessages.messages?.length > 0, quick_tips: [ "Use 'search-users' to find users before sending DMs", "Stream names are case-sensitive - use exact names from get-subscribed-streams", "Always include 'topic' when sending to streams", "For DMs, use actual email addresses (not display names)", "Note: 'streams' and 'channels' mean the same thing in Zulip" ] }; return createSuccessResponse(JSON.stringify(info, null, 2)); } catch (error) { return createErrorResponse(`Connection test failed: ${error instanceof Error ? error.message : 'Unknown error'}`); } } );
  • General helper function createSuccessResponse used by the get-started handler to format successful responses in MCP format.
    function createSuccessResponse(text: string) { return { content: [{ type: "text" as const, text }] };
  • General helper function createErrorResponse used by the get-started handler to format error responses in MCP format.
    function createErrorResponse(message: string) { return { content: [{ type: "text" as const, text: message }], isError: true };

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/avisekrath/zulip-mcp-server'

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