@chinchillaenterprises/mcp-discord
Version:
Modular Discord MCP server with 45+ tools for comprehensive server management, featuring clean architecture and discord_ prefixed tools
69 lines (68 loc) ⢠5.66 kB
JavaScript
export const toolDefinition = {
name: "discord_list_members",
description: "List server members",
inputSchema: {
type: "object",
properties: {
limit: {
type: "number",
description: "Maximum number of members to return (1-1000, default: 100)",
},
withRoles: {
type: "boolean",
description: "Include role information for each member",
},
},
}
};
export const handler = async (args, services) => {
const { limit = 100, withRoles = false } = args;
const guild = await services.getGuild();
try {
await guild.members.fetch({ limit });
const members = guild.members.cache.first(limit);
const memberList = members.map(member => {
const baseInfo = {
username: `${member.user.username}`,
displayName: member.displayName,
id: member.id,
joinedAt: member.joinedAt?.toISOString() || 'Unknown',
isBot: member.user.bot
};
if (withRoles) {
return {
...baseInfo,
roles: member.roles.cache
.filter(role => role.name !== '@everyone')
.map(role => role.name)
.join(', ') || 'No roles'
};
}
return baseInfo;
});
const botCount = memberList.filter(m => m.isBot).length;
const humanCount = memberList.length - botCount;
return {
content: [
{
type: "text",
text: `Server Members (showing ${memberList.length} of ${guild.memberCount}):
š„ ${humanCount} humans, š¤ ${botCount} bots
${memberList.map(member => {
const emoji = member.isBot ? 'š¤' : 'š¤';
const roleInfo = withRoles && 'roles' in member ? `\n Roles: ${member.roles}` : '';
return `${emoji} **${member.displayName}** (${member.username})
ID: ${member.id}
Joined: ${member.joinedAt}${roleInfo}`;
}).join('\n\n')}`,
},
],
};
}
catch (error) {
console.error(`[ListMembers] Error listing members:`, error);
throw new Error(`Failed to list members: ${error.message}`);
}
};
export { ListMembersArgsSchema as schema } from "../../schemas/server.js";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGlzdC1tZW1iZXJzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xzL3NlcnZlci9saXN0LW1lbWJlcnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFTO0lBQ2xDLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsV0FBVyxFQUFFLHFCQUFxQjtJQUNsQyxXQUFXLEVBQUU7UUFDWCxJQUFJLEVBQUUsUUFBUTtRQUNkLFVBQVUsRUFBRTtZQUNWLEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUsNERBQTREO2FBQzFFO1lBQ0QsU0FBUyxFQUFFO2dCQUNULElBQUksRUFBRSxTQUFTO2dCQUNmLFdBQVcsRUFBRSwwQ0FBMEM7YUFDeEQ7U0FDRjtLQUNGO0NBQ0YsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxLQUFLLEVBQUUsSUFBcUIsRUFBRSxRQUEwQixFQUFFLEVBQUU7SUFDakYsTUFBTSxFQUFFLEtBQUssR0FBRyxHQUFHLEVBQUUsU0FBUyxHQUFHLEtBQUssRUFBRSxHQUFHLElBQUksQ0FBQztJQUVoRCxNQUFNLEtBQUssR0FBRyxNQUFNLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUV4QyxJQUFJLENBQUM7UUFDSCxNQUFNLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQztRQUNyQyxNQUFNLE9BQU8sR0FBRyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFFakQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTtZQUN0QyxNQUFNLFFBQVEsR0FBRztnQkFDZixRQUFRLEVBQUUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtnQkFDbkMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxXQUFXO2dCQUMvQixFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUU7Z0JBQ2IsUUFBUSxFQUFFLE1BQU0sQ0FBQyxRQUFRLEVBQUUsV0FBVyxFQUFFLElBQUksU0FBUztnQkFDckQsS0FBSyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRzthQUN2QixDQUFDO1lBRUYsSUFBSSxTQUFTLEVBQUUsQ0FBQztnQkFDZCxPQUFPO29CQUNMLEdBQUcsUUFBUTtvQkFDWCxLQUFLLEVBQUUsTUFBTSxDQUFDLEtBQUssQ0FBQyxLQUFLO3lCQUN0QixNQUFNLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLFdBQVcsQ0FBQzt5QkFDekMsR0FBRyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQzt5QkFDdEIsSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLFVBQVU7aUJBQzVCLENBQUM7WUFDSixDQUFDO1lBRUQsT0FBTyxRQUFRLENBQUM7UUFDbEIsQ0FBQyxDQUFDLENBQUM7UUFFSCxNQUFNLFFBQVEsR0FBRyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQztRQUN4RCxNQUFNLFVBQVUsR0FBRyxVQUFVLENBQUMsTUFBTSxHQUFHLFFBQVEsQ0FBQztRQUVoRCxPQUFPO1lBQ0wsT0FBTyxFQUFFO2dCQUNQO29CQUNFLElBQUksRUFBRSxNQUFNO29CQUNaLElBQUksRUFBRSwyQkFBMkIsVUFBVSxDQUFDLE1BQU0sT0FBTyxLQUFLLENBQUMsV0FBVztLQUMvRSxVQUFVLGVBQWUsUUFBUTs7RUFFcEMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsRUFBRTt3QkFDeEIsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUM7d0JBQ3pDLE1BQU0sUUFBUSxHQUFHLFNBQVMsSUFBSSxPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsQ0FBQyxlQUFlLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUNyRixPQUFPLEdBQUcsS0FBSyxNQUFNLE1BQU0sQ0FBQyxXQUFXLE9BQU8sTUFBTSxDQUFDLFFBQVE7U0FDdEQsTUFBTSxDQUFDLEVBQUU7YUFDTCxNQUFNLENBQUMsUUFBUSxHQUFHLFFBQVEsRUFBRSxDQUFDO29CQUMxQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEVBQUU7aUJBQ1I7YUFDRjtTQUNGLENBQUM7SUFDSixDQUFDO0lBQUMsT0FBTyxLQUFVLEVBQUUsQ0FBQztRQUNwQixPQUFPLENBQUMsS0FBSyxDQUFDLHNDQUFzQyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQzdELE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLEtBQUssQ0FBQyxPQUFPLEVBQUUsQ0FBQyxDQUFDO0lBQzlELENBQUM7QUFDSCxDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUscUJBQXFCLElBQUksTUFBTSxFQUFFLE1BQU0seUJBQXlCLENBQUMifQ==