UNPKG

gptdarr

Version:

MCP server for managing Sonarr and Radarr

65 lines (59 loc) 2.03 kB
import { z } from "zod"; import logger from '../modules/log.js'; import SonarrController from '../modules/sonarr.js'; export const schema = { items: z.array( z.object({ seriesName: z.string().describe("Name of the TV series"), seriesYear: z.string().optional().describe("Year of the TV series (very preferred, but not required)") }) ).describe("List of TV series to add") }; export async function handler({ items }) { if (!items || items.length === 0) { logger.error('sonarr', 'No series provided to add', new Error('Empty series list')); return { content: [ { type: "text", text: "No series provided to add" } ] }; } try { const sonarr = new SonarrController(); const results = await sonarr.bulkAdd(items); const resolvedResults = await Promise.all(results); logger.raw(resolvedResults); const successCount = resolvedResults.filter(result => result.success).length; logger.addContent('sonarr', items, { total: items.length, successful: successCount, failed: items.length - successCount }); return { content: [ { type: "text", text: `Attempted to add ${items.length} series to Sonarr` }, { type: "text", text: JSON.stringify(resolvedResults) } ] }; } catch (error) { console.error("Error in add-series:", error); logger.error('sonarr', 'Error adding series', error); return { content: [ { type: "text", text: `Error adding series: ${error.message}` } ] }; } }