UNPKG

@channel.io/be-user-chat-mcp

Version:

Backend UserChat Model Context Protocol server for Channel.io

36 lines 2.16 kB
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