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
@@ -0,0 +1,36 @@
import { useEffect } from 'react';
interface Props {
title: string;
content?: string;
loading?: boolean;
}
export default function LegalContentPage({ title, content = '', loading = false }: Props) {
useEffect(() => {
document.title = `${title} HMS Licht & Ton`;
}, [title]);
if (loading) {
return (
<div className="max-w-3xl mx-auto">
<div className="space-y-4">
<div className="hms-skeleton rounded-md" style={{ height: 32, width: '60%' }} />
<div className="hms-skeleton rounded-md" style={{ height: 20 }} />
<div className="hms-skeleton rounded-md" style={{ height: 20, width: '90%' }} />
<div className="hms-skeleton rounded-md" style={{ height: 20 }} />
<div className="hms-skeleton rounded-md" style={{ height: 20, width: '80%' }} />
</div>
</div>
);
}
return (
<div className="max-w-3xl mx-auto">
<article>
<h1 className="text-3xl font-bold text-text mb-6">{title}</h1>
<div className="prose prose-invert max-w-none text-text-muted" dangerouslySetInnerHTML={{ __html: content }} />
</article>
</div>
);
}