list_members
Retrieve and display members from a Discord server with options to filter bots and set result limits.
Instructions
List members of a Discord server.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| server_id | No | ||
| limit | No | ||
| include_bots | No |
Implementation Reference
- The core handler function that fetches and formats the list of server members, including roles, join dates, bot/human classification, with configurable limit.@staticmethod async def handle_list_members(discord_client, arguments: Dict[str, Any]) -> List[TextContent]: """List server members""" guild = await discord_client.fetch_guild(int(arguments["server_id"])) limit = min(int(arguments.get("limit", 50)), 1000) members_info = [] count = 0 async for member in guild.fetch_members(limit=limit): if count >= limit: break roles = [role.name for role in member.roles if role.name != "@everyone"] members_info.append({ "name": member.display_name, "username": str(member), "id": member.id, "joined": member.joined_at.strftime('%Y-%m-%d') if member.joined_at else "Unknown", "roles": roles, "is_bot": member.bot }) count += 1 # Format the member list member_list = [] humans = 0 bots = 0 for member in members_info: if member["is_bot"]: bots += 1 member_type = "🤖" else: humans += 1 member_type = "👤" roles_str = ", ".join(member["roles"][:3]) # Limit to first 3 roles if len(member["roles"]) > 3: roles_str += f" (+{len(member['roles'])-3} more)" member_list.append( f"{member_type} **{member['name']}** ({member['username']})\n" f" Joined: {member['joined']} | Roles: {roles_str or 'None'}" ) result = f"""**Members in {guild.name}** (Showing {len(members_info)} of {guild.member_count}) **Summary:** {humans} humans, {bots} bots {chr(10).join(member_list)}""" return [TextContent(type="text", text=result)]
- src/discord_mcp/integrated_server.py:658-677 (registration)Registers the 'list_members' tool with its input schema (server_id required, optional limit) in the MCP server's list_tools() function.Tool( name="list_members", description="Get a list of members in a server with roles and activity", inputSchema={ "type": "object", "properties": { "server_id": { "type": "string", "description": "Discord server (guild) ID" }, "limit": { "type": "number", "description": "Maximum number of members to fetch", "minimum": 1, "maximum": 1000 } }, "required": ["server_id"] } ),
- Input schema definition for the list_members tool, specifying server_id as required and limit as optional with bounds.inputSchema={ "type": "object", "properties": { "server_id": { "type": "string", "description": "Discord server (guild) ID" }, "limit": { "type": "number", "description": "Maximum number of members to fetch", "minimum": 1, "maximum": 1000 } }, "required": ["server_id"] } ),