slack_list_channels
Retrieve public channels from a Slack workspace with pagination support for managing large channel lists.
Instructions
List public channels in the workspace with pagination
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of channels to return (default 100, max 200) | |
| cursor | No | Pagination cursor for next page of results |
Implementation Reference
- index.ts:395-405 (handler)Handler for the slack_list_channels tool. Extracts arguments and invokes SlackClient.getChannels to list channels.case "slack_list_channels": { const args = request.params .arguments as unknown as ListChannelsArgs; const response = await slackClient.getChannels( args.limit, args.cursor, ); return { content: [{ type: "text", text: JSON.stringify(response) }], }; }
- index.ts:54-72 (schema)Input schema and metadata definition for the slack_list_channels tool.const listChannelsTool: Tool = { name: "slack_list_channels", description: "List public channels in the workspace with pagination", inputSchema: { type: "object", properties: { limit: { type: "number", description: "Maximum number of channels to return (default 100, max 200)", default: 100, }, cursor: { type: "string", description: "Pagination cursor for next page of results", }, }, }, };
- index.ts:225-243 (helper)Core implementation in SlackClient that calls Slack's conversations.list API to retrieve public channels.async getChannels(limit: number = 100, cursor?: string): Promise<any> { const params = new URLSearchParams({ types: "public_channel", exclude_archived: "true", limit: Math.min(limit, 200).toString(), team_id: process.env.SLACK_TEAM_ID!, }); if (cursor) { params.append("cursor", cursor); } const response = await fetch( `https://slack.com/api/conversations.list?${params}`, { headers: this.headers }, ); return response.json(); }
- index.ts:532-546 (registration)Tool registration via ListToolsRequest handler, which returns the list of tools including slack_list_channels.server.setRequestHandler(ListToolsRequestSchema, async () => { console.error("Received ListToolsRequest"); return { tools: [ listChannelsTool, postMessageTool, replyToThreadTool, addReactionTool, getChannelHistoryTool, getThreadRepliesTool, getUsersTool, getUserProfileTool, ], }; });