Files
homarr/packages/api/src/router/kubernetes/mcp-router.ts
T
Thomas 5e23659d99 feat(assistant): optimize MCP and custom widget authoring (#6743)
* feat(assistant): optimize MCP and custom widget authoring

* fix(assistant): isolate server-safe JSX analyzer

* refactor(assistant): generate MCP tool staging

* fix(assistant): preserve widget placement follow-up

* fix(ci): allow fast gate to finish

* fix(custom-widgets): address review findings

* fix(custom-widgets): split preview evidence module

* style: format assistant custom widget files

* fix(custom-widgets): sync formatted skill schema
2026-08-30 23:43:29 +02:00

62 lines
2.0 KiB
TypeScript

import { z } from "zod/v4";
import { createTRPCRouter, permissionRequiredProcedure } from "../../trpc";
const kubernetesContextInput = z.object({ contextId: z.string().min(1) });
const contextsRouter = createTRPCRouter({
getContexts: permissionRequiredProcedure
.requiresPermission("admin")
.meta({
mcp: {
enabled: true,
description:
"List configured Kubernetes contexts with availability, metrics status, and default-context metadata. Requires admin permission.",
},
})
.query(async ({ ctx }) => {
const { contextsRouter: router } = await import("./router/contexts");
return await router.createCaller(ctx).getContexts();
}),
});
const ingressesRouter = createTRPCRouter({
getIngresses: permissionRequiredProcedure
.requiresPermission("admin")
.meta({
mcp: {
enabled: true,
description:
"List Kubernetes ingress inventory for a context. Get the required contextId from kubernetes_contexts_getContexts. Requires admin permission.",
},
})
.input(kubernetesContextInput)
.query(async ({ ctx, input }) => {
const { ingressesRouter: router } = await import("./router/ingresses");
return await router.createCaller(ctx).getIngresses(input);
}),
});
const podsRouter = createTRPCRouter({
getPods: permissionRequiredProcedure
.requiresPermission("admin")
.meta({
mcp: {
enabled: true,
description:
"List Kubernetes pod inventory and inferred workload types for a context. Get the required contextId from kubernetes_contexts_getContexts. Requires admin permission.",
},
})
.input(kubernetesContextInput)
.query(async ({ ctx, input }) => {
const { podsRouter: router } = await import("./router/pods");
return await router.createCaller(ctx).getPods(input);
}),
});
export const kubernetesMcpRouter = createTRPCRouter({
contexts: contextsRouter,
ingresses: ingressesRouter,
pods: podsRouter,
});