UNPKG

@hechtcarmel/vertica-mcp

Version:

MCP (Model Context Protocol) server for readonly Vertica database operations

66 lines 2.38 kB
import { z } from "zod"; import { VerticaService } from "../services/vertica-service.js"; import { getDatabaseConfig } from "../config/database.js"; export default class ListViewsTool { name = "list_views"; description = "List all views in a schema with their definitions and metadata"; inputSchema = { type: "object", properties: { schemaName: { type: "string", description: "Schema name (optional, defaults to configured default schema)", }, }, required: [], }; async execute(input) { const parsed = this.parseInput(input); let verticaService = null; try { const config = getDatabaseConfig(); verticaService = new VerticaService(config); const views = await verticaService.listViews(parsed.schemaName); return JSON.stringify({ success: true, schema: parsed.schemaName || config.defaultSchema || "public", viewCount: views.length, views: views.map((view) => ({ schemaName: view.schemaName, viewName: view.viewName, owner: view.owner, comment: view.comment, definition: view.definition.substring(0, 200) + (view.definition.length > 200 ? "..." : ""), })), queriedAt: new Date().toISOString(), }, null, 2); } catch (error) { const errorMessage = error instanceof Error ? error.message : String(error); return JSON.stringify({ success: false, error: errorMessage, schemaName: parsed.schemaName, queriedAt: new Date().toISOString(), }, null, 2); } finally { if (verticaService) { try { await verticaService.disconnect(); } catch (error) { console.warn("Warning during service cleanup:", error); } } } } parseInput(input) { const schema = z.object({ schemaName: z.string().optional(), }); return schema.parse(input); } } //# sourceMappingURL=list-views.js.map