feat: add MCP server with resources, tools, auth, and Traefik routing

- Add backend/app/mcp_server.py with FastMCP server (hms-cms)
- Resources: design-rules, page-structure, sync-status
- Tools: trigger_sync, get_sync_log, set_rentman_token, read_file,
  write_file, create_page, deploy, git_commit, git_status
- Bearer token auth via MCP_AUTH_TOKEN env var
- Mount MCP at /mcp with streamable HTTP transport
- Integrate session manager in FastAPI lifespan
- Add Traefik labels for external /mcp route on hms.media-on.de
- Add git, docker.io, curl to backend Dockerfile
- Mount repo root + docker socket in backend container
- Add mcp>=1.0.0 to requirements.txt
This commit is contained in:
Agent Zero
2026-07-12 15:58:22 +02:00
parent 00c23bc066
commit cd465e0564
124 changed files with 3309 additions and 225 deletions
+87
View File
@@ -0,0 +1,87 @@
// nuxt.config.ts HMS Licht & Ton Frontend Configuration
import type { NuxtConfig } from "nuxt/schema";
export default defineNuxtConfig({
devtools: { enabled: false },
ssr: false,
modules: ["@nuxtjs/tailwindcss", "@pinia/nuxt"],
css: ["~/assets/css/main.css"],
app: {
head: {
htmlAttrs: { lang: "de" },
meta: [
{ charset: "utf-8" },
{ name: "viewport", content: "width=device-width, initial-scale=1" },
{ name: "robots", content: "noindex, nofollow, noarchive, nosnippet" },
{ name: "theme-color", content: "#131313" },
{ name: "description", content: "HMS Licht & Ton Professionelle Veranstaltungstechnik aus Leipheim/Ellzee. Vermietung, Verkauf, Personal, Transport von Tontechnik und Lichttechnik." },
{ name: "author", content: "Hammerschmidt u. Mössle GbR" },
],
link: [
{ rel: "icon", type: "image/svg+xml", href: "/favicon.svg" },
{ rel: "preconnect", href: "https://fonts.googleapis.com" },
{ rel: "preconnect", href: "https://fonts.gstatic.com", crossorigin: "" },
{
rel: "stylesheet",
href: "https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700;800&display=swap",
},
],
script: [
{
type: "application/ld+json",
children: JSON.stringify({
"@context": "https://schema.org",
"@type": "LocalBusiness",
name: "HMS Licht & Ton Hammerschmidt u. Mössle GbR",
description: "Professionelle Veranstaltungstechnik aus Leipheim/Ellzee. Vermietung, Verkauf, Personal, Transport.",
address: {
"@type": "PostalAddress",
streetAddress: "Grockelhofen 10",
addressLocality: "Leipheim",
postalCode: "89340",
addressCountry: "DE",
},
telephone: "+498221204433",
email: "info@hms-licht-ton.de",
url: "https://hms.media-on.de",
areaServed: "Süddeutschland",
knowsAbout: ["Tontechnik", "Lichttechnik", "Rigging", "Veranstaltungstechnik"],
}),
},
],
},
},
runtimeConfig: {
// Server-only: used by SSR to call backend in Docker network
apiBase: process.env.API_BASE_URL || "http://backend:8000",
public: {
// Client-side: relative URL goes through Nuxt server proxy
apiBase: "/api",
},
},
routeRules: {
"/": { ssr: false },
"/mietkatalog": { ssr: true },
"/mietkatalog/**": { ssr: true },
"/warenkorb": { ssr: false },
"/mietanfrage": { ssr: false },
"/admin": { ssr: false },
},
typescript: {
strict: true,
typeCheck: false,
},
tailwindcss: {
cssPath: "~/assets/css/main.css",
configPath: "tailwind.config.ts",
},
nitro: {
compressPublicAssets: true,
routeRules: {
"/": { ssr: false },
"/api/**": {
proxy: "http://backend:8000/api/**",
},
},
},
});