We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/robertn702/mcp-sunsama'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
client-resolver.ts•1.32 KiB
import { SunsamaClient } from "sunsama-api/client";
import { getGlobalSunsamaClient } from "../auth/stdio.js";
import { sessionManager } from "../transports/http.js";
/**
* Gets the appropriate SunsamaClient instance based on context
* - HTTP transport: Uses session-scoped client from request
* - Stdio transport: Uses global singleton client
*/
export async function getClient(session?: unknown): Promise<SunsamaClient> {
// Check if session has a client directly (might be set by transport)
if (hasClient(session)) {
return session.sunsamaClient;
}
// Check for MCP SDK sessionId (HTTP transport — extra.sessionId is a string)
if (hasSessionId(session)) {
const sessionData = sessionManager.getSessionData(session.sessionId);
if (sessionData) {
return sessionData.sunsamaClient;
}
}
// Fallback to stdio transport: global client
return await getGlobalSunsamaClient();
}
function hasClient(session: unknown): session is { sunsamaClient: SunsamaClient } {
return (
typeof session === "object" &&
session !== null &&
"sunsamaClient" in session
);
}
function hasSessionId(extra: unknown): extra is { sessionId: string } {
return (
typeof extra === "object" &&
extra !== null &&
"sessionId" in extra &&
typeof (extra as Record<string, unknown>).sessionId === "string"
);
}