UNPKG

@sentio/mcp

Version:

sentio mcp

86 lines (85 loc) 2.86 kB
import { ProcessorService, ProcessorExtService } from "@sentio/api"; import z from "zod"; export function registerProcessorTools(server, client, options) { server.tool("getProcessorStatus", "Get processor status", { owner: z.string().describe("Project owner"), slug: z.string().describe("Project slug"), }, async ({ owner, slug }) => { const response = await ProcessorService.getProcessorStatusV2({ path: { owner, slug }, client }); if (response.error) { throw response.error; } return { content: [{ type: "text", text: JSON.stringify(response.data) }] }; }); server.tool("getProcessorSourceFiles", "Get processor source files", { owner: z.string().describe("Project owner"), slug: z.string().describe("Project slug"), version: z.number().describe("Version of the processor").optional(), paths: z.array(z.string()).describe("Optional list of file paths to include").optional() }, async ({ owner, slug, version, paths }) => { const response = await ProcessorExtService.getProcessorSourceFiles({ path: { owner, slug }, query: { version }, client }); if (response.error) { throw response.error; } let result = response.data; if (paths && paths.length) { const files = result?.sourceFiles ?? []; const filtered = files.filter(f => f.path && paths.includes(f.path)); result = { sourceFiles: filtered }; } return { content: [{ type: "text", text: JSON.stringify(result) }] }; }); server.tool("listProcessorSourceFilePaths", "List all processor source file paths", { owner: z.string().describe("Project owner"), slug: z.string().describe("Project slug"), version: z.number().describe("Version of the processor").optional() }, async ({ owner, slug, version }) => { const response = await ProcessorExtService.getProcessorSourceFiles({ path: { owner, slug }, query: { version }, client }); if (response.error) { throw response.error; } const paths = (response.data?.sourceFiles ?? []) .map(f => f.path) .filter((p) => Boolean(p)); return { content: [{ type: "text", text: JSON.stringify(paths) }] }; }); }