@chinchillaenterprises/mcp-discord
Version:
Modular Discord MCP server with 45+ tools for comprehensive server management, featuring clean architecture and discord_ prefixed tools
55 lines • 4.46 kB
JavaScript
export const toolDefinition = {
name: "discord_remove_account",
description: "Remove a Discord account configuration",
inputSchema: {
type: "object",
properties: {
accountId: {
type: "string",
description: "Account ID to remove",
},
},
required: ["accountId"],
}
};
export const handler = async (args, services) => {
const { accountId } = args;
const accountState = services.getAccountState();
const credentialManager = services.getCredentialManager();
const account = accountState.accounts.get(accountId);
if (!account) {
throw new Error(`Account '${accountId}' not found.`);
}
// Clean up client
const client = accountState.clients.get(accountId);
if (client) {
client.destroy();
accountState.clients.delete(accountId);
}
// Remove from persistent storage
try {
await credentialManager.deleteAccount(accountId);
}
catch (error) {
console.error(`[DiscordMCP] Failed to delete account from storage: ${error.message}`);
}
// Remove from in-memory state
accountState.accounts.delete(accountId);
// If this was the active account, switch to another one
if (accountState.activeAccountId === accountId) {
const remainingAccounts = Array.from(accountState.accounts.keys());
accountState.activeAccountId = remainingAccounts.length > 0 ? remainingAccounts[0] : null;
}
return {
content: [
{
type: "text",
text: `Discord account '${account.name}' (${accountId}) has been removed.${accountState.activeAccountId
? `\n\nActive account is now: ${accountState.accounts.get(accountState.activeAccountId)?.name}`
: "\n\nNo active account. Use 'discord_add_account' to add a new account."}`,
},
],
};
};
export { RemoveAccountArgsSchema as schema } from "../../schemas/account.js";
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVtb3ZlLWFjY291bnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvYWNjb3VudC9yZW1vdmUtYWNjb3VudC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFJQSxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQVM7SUFDbEMsSUFBSSxFQUFFLHdCQUF3QjtJQUM5QixXQUFXLEVBQUUsd0NBQXdDO0lBQ3JELFdBQVcsRUFBRTtRQUNYLElBQUksRUFBRSxRQUFRO1FBQ2QsVUFBVSxFQUFFO1lBQ1YsU0FBUyxFQUFFO2dCQUNULElBQUksRUFBRSxRQUFRO2dCQUNkLFdBQVcsRUFBRSxzQkFBc0I7YUFDcEM7U0FDRjtRQUNELFFBQVEsRUFBRSxDQUFDLFdBQVcsQ0FBQztLQUN4QjtDQUNGLENBQUM7QUFFRixNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsS0FBSyxFQUFFLElBQXVCLEVBQUUsUUFBMEIsRUFBRSxFQUFFO0lBQ25GLE1BQU0sRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUM7SUFDM0IsTUFBTSxZQUFZLEdBQUcsUUFBUSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ2hELE1BQU0saUJBQWlCLEdBQUcsUUFBUSxDQUFDLG9CQUFvQixFQUFFLENBQUM7SUFFMUQsTUFBTSxPQUFPLEdBQUcsWUFBWSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDckQsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2IsTUFBTSxJQUFJLEtBQUssQ0FBQyxZQUFZLFNBQVMsY0FBYyxDQUFDLENBQUM7SUFDdkQsQ0FBQztJQUVELGtCQUFrQjtJQUNsQixNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUNuRCxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQ1gsTUFBTSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ2pCLFlBQVksQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFRCxpQ0FBaUM7SUFDakMsSUFBSSxDQUFDO1FBQ0gsTUFBTSxpQkFBaUIsQ0FBQyxhQUFhLENBQUMsU0FBUyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUFDLE9BQU8sS0FBVSxFQUFFLENBQUM7UUFDcEIsT0FBTyxDQUFDLEtBQUssQ0FBQyx1REFBdUQsS0FBSyxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDeEYsQ0FBQztJQUVELDhCQUE4QjtJQUM5QixZQUFZLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxTQUFTLENBQUMsQ0FBQztJQUV4Qyx3REFBd0Q7SUFDeEQsSUFBSSxZQUFZLENBQUMsZUFBZSxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQy9DLE1BQU0saUJBQWlCLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDbkUsWUFBWSxDQUFDLGVBQWUsR0FBRyxpQkFBaUIsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO0lBQzVGLENBQUM7SUFFRCxPQUFPO1FBQ0wsT0FBTyxFQUFFO1lBQ1A7Z0JBQ0UsSUFBSSxFQUFFLE1BQU07Z0JBQ1osSUFBSSxFQUFFLG9CQUFvQixPQUFPLENBQUMsSUFBSSxNQUFNLFNBQVMsc0JBQ25ELFlBQVksQ0FBQyxlQUFlO29CQUMxQixDQUFDLENBQUMsOEJBQThCLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxlQUFlLENBQUMsRUFBRSxJQUFJLEVBQUU7b0JBQy9GLENBQUMsQ0FBQyx3RUFDTixFQUFFO2FBQ0g7U0FDRjtLQUNGLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRixPQUFPLEVBQUUsdUJBQXVCLElBQUksTUFBTSxFQUFFLE1BQU0sMEJBQTBCLENBQUMifQ==