Files
virtfusion-mcp/src/tools/media.ts
Andrew 40d5e8161a
All checks were successful
Endpoint Sync Check / check-drift (push) Successful in 20s
CI / build (push) Successful in 26s
feat: initial implementation of VirtFusion MCP server
Complete MCP server wrapping all 84 VirtFusion Admin API endpoints:
- Core HTTP client with Bearer auth and error handling
- 17 tool modules organized by API category
- Endpoint drift detection scripts and Gitea Actions CI/CD
- Comprehensive README with configuration examples
- CLAUDE.md for AI assistant onboarding

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-15 23:34:48 -04:00

39 lines
1.2 KiB
TypeScript

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);
}
}
);
}