Skip to main content
Glama
scarecr0w12

discord-mcp

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
NameRequiredDescriptionDefault
guildIdYesThe ID of the server (guild)
limitNoMaximum number of members to fetch (default: 100, max: 1000)

Implementation Reference

  • 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) }] };
    }
  • 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)'),
    },
  • 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);

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/scarecr0w12/discord-mcp'

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