import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { z } from 'zod'; import { VirtFusionClient } from '../client.js'; import { formatErrorResponse } from '../errors.js'; export function registerMediaTools(server: McpServer, client: VirtFusionClient): void { server.tool( 'media_get_iso', 'Retrieve details of a specific ISO image', { isoId: z.number().describe('The ISO image ID'), }, async ({ isoId }) => { try { const result = await client.get(`/media/iso/${isoId}`); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } catch (error) { return formatErrorResponse(error); } } ); server.tool( 'media_get_templates_by_package', 'List OS templates available for a specific package', { serverPackageId: z.number().describe('The server package ID'), }, async ({ serverPackageId }) => { try { const result = await client.get(`/media/templates/fromServerPackageSpec/${serverPackageId}`); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } catch (error) { return formatErrorResponse(error); } } ); }