UNPKG

@chinchillaenterprises/mcp-discord

Version:

Modular Discord MCP server with 45+ tools for comprehensive server management, featuring clean architecture and discord_ prefixed tools

63 lines 3.73 kB
import { DiscordClientService } from "./discord-client.js"; import { getActiveClient, getGuild } from "../utils/client-helpers.js"; import { resolveChannel, resolveRole } from "../utils/channel-resolver.js"; /** * Service container that provides access to all Discord services * This matches the pattern used in mcp-hubspot for tool handlers */ export class ServiceContainer { accountState; credentialManager; discordClient; constructor(accountState, credentialManager) { this.accountState = accountState; this.credentialManager = credentialManager; this.discordClient = DiscordClientService; } /** * Get the active Discord client for the current account */ async getActiveClient() { return await getActiveClient(this.accountState); } /** * Resolve a channel name or ID to a channel ID */ async resolveChannel(channelInput) { const client = await this.getActiveClient(); return await resolveChannel(channelInput, client); } /** * Resolve a role name or ID to a role ID */ async resolveRole(roleInput) { const client = await this.getActiveClient(); return await resolveRole(roleInput, client); } /** * Get the active guild for the current account */ async getGuild() { const client = await this.getActiveClient(); return await getGuild(client, this.accountState); } /** * Get the account state directly */ getAccountState() { return this.accountState.getState(); } /** * Get the credential manager */ getCredentialManager() { return this.credentialManager; } /** * Initialize a Discord client for an account */ async initializeClient(account) { return await DiscordClientService.initializeClient(account); } } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS1jb250YWluZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VydmljZXMvc2VydmljZS1jb250YWluZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDM0QsT0FBTyxFQUFFLGVBQWUsRUFBRSxRQUFRLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUN2RSxPQUFPLEVBQUUsY0FBYyxFQUFFLFdBQVcsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBSzNFOzs7R0FHRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDWCxZQUFZLENBQXNCO0lBQ2xDLGlCQUFpQixDQUFvQjtJQUNyQyxhQUFhLENBQXVCO0lBRXBELFlBQ0UsWUFBaUMsRUFDakMsaUJBQW9DO1FBRXBDLElBQUksQ0FBQyxZQUFZLEdBQUcsWUFBWSxDQUFDO1FBQ2pDLElBQUksQ0FBQyxpQkFBaUIsR0FBRyxpQkFBaUIsQ0FBQztRQUMzQyxJQUFJLENBQUMsYUFBYSxHQUFHLG9CQUFvQixDQUFDO0lBQzVDLENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxlQUFlO1FBQ25CLE9BQU8sTUFBTSxlQUFlLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQ2xELENBQUM7SUFFRDs7T0FFRztJQUNILEtBQUssQ0FBQyxjQUFjLENBQUMsWUFBb0I7UUFDdkMsTUFBTSxNQUFNLEdBQUcsTUFBTSxJQUFJLENBQUMsZUFBZSxFQUFFLENBQUM7UUFDNUMsT0FBTyxNQUFNLGNBQWMsQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLENBQUM7SUFDcEQsQ0FBQztJQUVEOztPQUVHO0lBQ0gsS0FBSyxDQUFDLFdBQVcsQ0FBQyxTQUFpQjtRQUNqQyxNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztRQUM1QyxPQUFPLE1BQU0sV0FBVyxDQUFDLFNBQVMsRUFBRSxNQUFNLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsUUFBUTtRQUNaLE1BQU0sTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO1FBQzVDLE9BQU8sTUFBTSxRQUFRLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUNuRCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxlQUFlO1FBQ2IsT0FBTyxJQUFJLENBQUMsWUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ3RDLENBQUM7SUFFRDs7T0FFRztJQUNILG9CQUFvQjtRQUNsQixPQUFPLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztJQUNoQyxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsZ0JBQWdCLENBQUMsT0FBdUI7UUFDNUMsT0FBTyxNQUFNLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzlELENBQUM7Q0FDRiJ9