@makingchatbots/genesys-cloud-mcp-server
Version:
A Model Context Protocol (MCP) server exposing Genesys Cloud tools for LLMs, including sentiment analysis, conversation search, topic detection and more.
39 lines (38 loc) • 1.31 kB
JavaScript
import { errorResult } from "../tools/utils/errorResult.js";
let isAuthenticated = false;
async function authenticate(apiClient, configRetriever) {
const config = configRetriever.getGenesysCloudConfig();
if (!config.success) {
return { authenticated: false, reason: config.reason };
}
const authConfig = config.value;
try {
apiClient.setEnvironment(authConfig.region);
await apiClient.loginClientCredentialsGrant(authConfig.oAuthClientId, authConfig.oAuthClientSecret);
}
catch (e) {
return {
authenticated: false,
reason: e instanceof Error ? e.message : String(e),
};
}
return {
authenticated: true,
};
}
export const OAuthClientCredentialsWrapper = (configRetriever, apiClient) => {
return function (call) {
return async (input) => {
if (!isAuthenticated) {
const authResult = await authenticate(apiClient, configRetriever);
if (authResult.authenticated) {
isAuthenticated = true;
}
else {
return errorResult(`Failed to authenticate with Genesys Cloud. Reason:\n${authResult.reason}`);
}
}
return call(input);
};
};
};