@channel.io/be-user-chat-mcp
Version:
Backend UserChat Model Context Protocol server for Channel.io
36 lines • 2.16 kB
JavaScript
import { z } from "zod";
import { getUserChat } from "../repositories/user-chat.repository.js";
import { searchSentryEvents, searchSentryLogs, } from "../services/sentry.service.js";
import { registerMcpTool, formatResult } from "../utils/helper.util.js";
const GetUserChatDataInputSchema = z.object({
user_chat_id: z.string().min(1, "user_chat_id is required"),
});
const GetUserChatSentryIssuesInputSchema = z.object({
user_chat_id: z.string().min(1, "user_chat_id is required"),
period: z.enum(["24h", "7d", "14d", "30d", "90d"]).optional(),
});
export function registerUserChatTool(server, getContext) {
registerMcpTool(server, "get_user_chat_data", GetUserChatDataInputSchema, async (input, context) => {
const { user_chat_id } = input;
const [userChatResult] = await Promise.allSettled([
getUserChat(user_chat_id, context),
]);
return {
userChat: formatResult(userChatResult, `UserChat not found for ID: ${user_chat_id}`, `Error fetching UserChat for ID: ${user_chat_id}`),
};
}, getContext);
registerMcpTool(server, "get_user_chat_sentry_issues", GetUserChatSentryIssuesInputSchema, async (input, context) => {
const { user_chat_id, period } = input;
const projectSlug = "ch-dropwizard";
const query = `${user_chat_id}`;
const [sentryIssuesResult, sentryEventsResult] = await Promise.allSettled([
searchSentryLogs(projectSlug, query, period, 50, undefined, context),
searchSentryEvents(projectSlug, query, 50, undefined, context),
]);
return {
sentryIssues: formatResult(sentryIssuesResult, `Sentry issues not found for user_chat_id: ${user_chat_id} in project ${projectSlug}`, `Error fetching Sentry issues for user_chat_id: ${user_chat_id} in project ${projectSlug}`),
sentryEvents: formatResult(sentryEventsResult, `Sentry events not found for user_chat_id: ${user_chat_id} in project ${projectSlug}`, `Error fetching Sentry events for user_chat_id: ${user_chat_id} in project ${projectSlug}`),
};
}, getContext);
}
//# sourceMappingURL=user-chat.tool.js.map