Skip to main content
Glama

Discord Agent MCP

by aj-geddes
permissions.ts6.29 kB
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { z } from "zod"; export function registerPermissionPrompts(server: McpServer) { server.registerPrompt( "audit-permissions", { title: "Server Permissions Audit", description: "Analyze and suggest permission improvements for security", argsSchema: { guildId: z.string().describe("Server/Guild ID to audit"), auditScope: z .enum(["full", "roles", "channels", "members"]) .optional() .describe("Scope of the permissions audit"), }, }, ({ guildId, auditScope = "full" }) => { const scopeGuides: Record<string, string> = { full: `FULL SERVER AUDIT: Comprehensive security and permissions review covering: - Role hierarchy and permissions - Channel-specific permission overrides - Administrative access distribution - Dangerous permission assignments - Bot permission requirements - Member role assignments`, roles: `ROLE PERMISSIONS AUDIT: Focused review of role configuration: - Role hierarchy ordering - Permission escalation risks - Dangerous permissions (Admin, ManageRoles, etc.) - Role distribution and usage - Managed vs. manual roles`, channels: `CHANNEL PERMISSIONS AUDIT: Review channel-specific access: - Permission overrides per channel - Public vs. private channel access - Role-based channel restrictions - Category-level permissions - NSFW channel protections`, members: `MEMBER PERMISSIONS AUDIT: Individual member access review: - High-privilege member count - Admin and moderator assignments - Unusual permission grants - Member role assignments - Bot member permissions`, }; return { messages: [ { role: "user" as const, content: { type: "text" as const, text: `Server Permissions Security Audit Guild ID: ${guildId} Audit Scope: ${auditScope.toUpperCase()} ${scopeGuides[auditScope]} SECURITY AUDIT PROCESS: 1. GATHER CURRENT STATE: - Use get_server_info for server overview - Use list_roles to get all roles with permissions - Use list_channels to see channel structure - Use list_members to understand member distribution 2. IDENTIFY SECURITY RISKS: HIGH RISK - Administrator Permission: - Roles with "Administrator" bypass all other permissions - Should only be assigned to server owner and trusted admins - Check: How many roles have Administrator? - Check: How many members have Administrator access? HIGH RISK - Role Management: - "ManageRoles" allows changing other member permissions - Should be limited to admin/senior mod roles - Can lead to privilege escalation - Check: Who can assign/remove roles? MEDIUM RISK - Channel Management: - "ManageChannels" allows restructuring server - "ManageWebhooks" can create security vulnerabilities - Should require moderator+ access MEDIUM RISK - Member Management: - "KickMembers" and "BanMembers" are powerful - Should be restricted to moderation team - Check: Are these separated appropriately? LOW RISK - Message Management: - "ManageMessages" for moderation - Should be given to moderators and helpers - Relatively safe permission 3. ANALYZE ROLE HIERARCHY: - Ensure admin roles are highest position - Moderator roles below admin but above members - Bot roles positioned appropriately for their function - No permission bypasses through position ordering 4. REVIEW CHANNEL OVERRIDES: - Private channels should deny @everyone Read access - Admin channels should only allow admin role - Mod channels should only allow mod+ roles - Check for conflicting permission overrides 5. GENERATE RECOMMENDATIONS: Based on findings, suggest: - Roles that need permission reduction - Members that should be reviewed for access level - Channel permission overrides that need fixing - Role hierarchy reordering if needed - New roles to create for better access control DANGEROUS PERMISSIONS CHECKLIST: Critical (Require highest trust): - Administrator (full control) - ManageGuild (server settings) - ManageRoles (permission control) - ManageWebhooks (security risk) Important (Require moderation trust): - BanMembers (permanent removal) - KickMembers (temporary removal) - ManageChannels (structure changes) - ManageMessages (content moderation) - ManageNicknames (identity management) Moderate (Helper/Bot level): - ModerateMembers (timeout) - ManageEmojisAndStickers (cosmetic) - ManageEvents (scheduling) AUDIT REPORT STRUCTURE: 1. Executive Summary - Total roles analyzed - Total members with elevated permissions - Critical findings count - Overall risk level 2. Critical Findings - Specific security issues - Affected roles/channels/members - Potential impact 3. Recommendations - Prioritized action items - Suggested role changes - Permission adjustments needed 4. Best Practices - Role structure suggestions - Permission assignment guidelines - Ongoing security measures Available tools: - get_server_info: Server overview and statistics - list_roles: All roles with permissions and member counts - get_role_info: Detailed role information - list_channels: Channel structure and types - get_channel_details: Specific channel permissions - list_members: Member list with role assignments - get_member_info: Individual member details - get_audit_logs: Recent permission changes (if available) EXAMPLE ANALYSIS: "Analyzing roles for ${guildId}... Found 15 roles: - 2 roles with Administrator permission (⚠️ HIGH RISK) - @Owner (1 member) ✓ Acceptable - @HeadAdmin (5 members) ⚠️ Review - Too many admins - 3 roles with ManageRoles (⚠️ MEDIUM RISK) - @Admin (expected) - @SeniorMod (expected) - @Helper (🚨 CRITICAL - Helpers should not manage roles!) Recommendations: 1. Remove Administrator from @HeadAdmin, use specific permissions instead 2. Remove ManageRoles from @Helper role immediately 3. Create @Moderator role with KickMembers, ManageMessages only 4. Audit 5 members with @HeadAdmin access" Please begin the security audit by gathering server information.`, }, }, ], }; }, ); }

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/aj-geddes/discord-agent-mcp'

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