Skip to main content
Glama
wowjinxy
by wowjinxy

list_roles

Retrieve all role definitions from a Discord server to manage permissions and organize members effectively.

Instructions

List all roles defined in the Discord server.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
server_idNo

Implementation Reference

  • The handler function for the 'list_roles' tool. Fetches guild roles excluding default @everyone, sorts by position descending, formats using _format_role helper, and returns formatted string.
    async def list_roles(server_id: str | int | None = None, ctx: Context = None) -> str:  # type: ignore[override]
        """List all roles defined in the Discord server."""
    
        assert ctx is not None
        bot, config = await _acquire(ctx)
        guild_id = _resolve_guild_id(config, server_id)
        guild = await _ensure_guild(bot, guild_id)
    
        roles = [role for role in guild.roles if role != guild.default_role]
        if not roles:
            return f"{guild.name} has no custom roles."
    
        lines = [f"**Roles for {guild.name} (excluding @everyone):**"]
        for role in sorted(roles, key=lambda item: item.position, reverse=True):
            lines.append(_format_role(role))
    
        return "\n".join(lines)
  • Helper function used by list_roles to format each role's details: name, ID, position, member count, color, flags (managed/hoisted/mentionable), and summarized permissions.
    def _format_role(role: discord.Role) -> str:
        colour = f"#{role.colour.value:06X}" if role.colour.value else "default"
        flags: list[str] = []
        if role.managed:
            flags.append("managed")
        if role.hoist:
            flags.append("hoisted")
        if role.mentionable:
            flags.append("mentionable")
        flag_str = f" ({', '.join(flags)})" if flags else ""
        permissions = _summarize_permissions(role.permissions)
        return (
            f"• {role.name} (ID: {role.id}) – Position: {role.position} – Members: {len(role.members)} – "
            f"Colour: {colour}{flag_str}\n  Permissions: {permissions}"
        )
  • The @server.tool() decorator registers the list_roles function as an MCP tool.
    async def list_roles(server_id: str | int | None = None, ctx: Context = None) -> str:  # type: ignore[override]

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

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