@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
JavaScript
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