import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { z } from 'zod'; import { VirtFusionClient } from '../client.js'; import { formatErrorResponse } from '../errors.js'; export function registerHypervisorTools(server: McpServer, client: VirtFusionClient): void { server.tool( 'hypervisors_list', 'List all hypervisors', { results: z.number().optional().describe('Number of results to return'), }, async ({ results }) => { try { const result = await client.get('/compute/hypervisors', { results }); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } catch (error) { return formatErrorResponse(error); } } ); server.tool( 'hypervisors_get', 'Retrieve details of a specific hypervisor', { hypervisorId: z.number().describe('The hypervisor ID'), }, async ({ hypervisorId }) => { try { const result = await client.get(`/compute/hypervisors/${hypervisorId}`); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } catch (error) { return formatErrorResponse(error); } } ); }