list_members
Retrieve member information from a Discord server by specifying the guild ID, with options to control the number of members fetched.
Instructions
List members in a Discord server (fetches up to 1000 members)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| guildId | Yes | The ID of the server (guild) | |
| limit | No | Maximum number of members to fetch (default: 100, max: 1000) |
Implementation Reference
- src/tools/member-tools.ts:15-38 (handler)The handler function that executes the list_members tool: fetches up to 1000 members from the specified Discord guild using the Discord client, maps member data to a structured format including ID, username, display name, nickname, join date, roles, bot status, and avatar, handles errors, and returns the JSON-formatted list.async ({ guildId, limit = 100 }) => { const result = await withErrorHandling(async () => { const client = await getDiscordClient(); const guild = await client.guilds.fetch(guildId); const members = await guild.members.fetch({ limit: Math.min(limit, 1000) }); return members.map((member) => ({ id: member.id, username: member.user.username, displayName: member.displayName, nickname: member.nickname, joinedAt: member.joinedAt?.toISOString(), roles: member.roles.cache.map((r) => ({ id: r.id, name: r.name })), isBot: member.user.bot, avatar: member.displayAvatarURL(), })); }); if (!result.success) { return { content: [{ type: 'text', text: result.error }], isError: true }; } return { content: [{ type: 'text', text: JSON.stringify(result.data, null, 2) }] }; }
- src/tools/member-tools.ts:11-14 (schema)Zod input schema defining parameters for the list_members tool: required guildId (string) and optional limit (number, default 100).{ guildId: z.string().describe('The ID of the server (guild)'), limit: z.number().optional().describe('Maximum number of members to fetch (default: 100, max: 1000)'), },
- src/tools/member-tools.ts:8-39 (registration)Registration of the list_members tool via server.tool(), including name, description, input schema, and inline handler function.server.tool( 'list_members', 'List members in a Discord server (fetches up to 1000 members)', { guildId: z.string().describe('The ID of the server (guild)'), limit: z.number().optional().describe('Maximum number of members to fetch (default: 100, max: 1000)'), }, async ({ guildId, limit = 100 }) => { const result = await withErrorHandling(async () => { const client = await getDiscordClient(); const guild = await client.guilds.fetch(guildId); const members = await guild.members.fetch({ limit: Math.min(limit, 1000) }); return members.map((member) => ({ id: member.id, username: member.user.username, displayName: member.displayName, nickname: member.nickname, joinedAt: member.joinedAt?.toISOString(), roles: member.roles.cache.map((r) => ({ id: r.id, name: r.name })), isBot: member.user.bot, avatar: member.displayAvatarURL(), })); }); if (!result.success) { return { content: [{ type: 'text', text: result.error }], isError: true }; } return { content: [{ type: 'text', text: JSON.stringify(result.data, null, 2) }] }; } );
- src/index.ts:13-56 (registration)Top-level import (line 13) and invocation (line 56) of registerMemberTools(server), which registers the list_members tool (and other member tools) with the MCP server.import { registerMemberTools } from './tools/member-tools.js'; import { registerRoleTools } from './tools/role-tools.js'; import { registerPermissionTools } from './tools/permission-tools.js'; import { registerMessageTools } from './tools/message-tools.js'; import { registerEmojiTools } from './tools/emoji-tools.js'; import { registerWebhookTools } from './tools/webhook-tools.js'; import { registerInviteTools } from './tools/invite-tools.js'; import { registerEventTools } from './tools/event-tools.js'; import { registerThreadTools } from './tools/thread-tools.js'; import { registerAuditTools } from './tools/audit-tools.js'; import { registerDiscordPrompts } from './prompts/discord-prompts.js'; /** * Discord MCP Server * * This MCP server provides comprehensive tools for managing Discord servers. * It requires the DISCORD_BOT_TOKEN environment variable to be set. * * Available tool categories: * - Server Management: list_servers, get_server_info, modify_server * - Channel Management: list_channels, get_channel_info, create_channel, delete_channel, modify_channel * - Member Management: list_members, get_member_info, modify_member, kick_member, ban_member, unban_member, list_bans * - Role Management: list_roles, get_role_info, create_role, delete_role, modify_role, assign_role, remove_role * - Permission Management: get_channel_permissions, set_channel_permission, delete_channel_permission, list_permissions, sync_channel_permissions * - Message Management: send_message, get_messages, edit_message, delete_message, bulk_delete_messages, pin/unpin, reactions * - Emoji & Sticker Management: list_emojis, create_emoji, delete_emoji, modify_emoji, sticker operations * - Webhook Management: list_channel_webhooks, list_guild_webhooks, create_webhook, delete_webhook, modify_webhook, send_webhook_message * - Invite Management: list_invites, get_invite_info, create_invite, delete_invite * - Event Management: list_events, get_event_info, create_event, modify_event, delete_event, get_event_subscribers * - Thread Management: list_threads, create_thread, create_forum_post, modify_thread, delete_thread, join/leave, member management * - Audit & Moderation: get_audit_logs, list_audit_log_types, list_automod_rules, get_automod_rule, delete_automod_rule, toggle_automod_rule */ // Create a configured MCP server instance function createMcpServer(): McpServer { const server = new McpServer({ name: 'discord-mcp', version: '1.1.0', }); // Register all tool categories registerServerTools(server); registerChannelTools(server); registerMemberTools(server);