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:
@@ -0,0 +1,27 @@
|
||||
import { test, expect } from "@playwright/test";
|
||||
|
||||
test.describe("Meta and Robots", () => {
|
||||
test("robots.txt should contain Disallow: /", async ({ request }) => {
|
||||
const response = await request.get("/robots.txt");
|
||||
const text = await response.text();
|
||||
expect(text).toContain("User-agent: *");
|
||||
expect(text).toContain("Disallow: /");
|
||||
});
|
||||
|
||||
test("home page should have noindex meta tag", async ({ page }) => {
|
||||
await page.goto("/");
|
||||
const robotsMeta = page.locator('meta[name="robots"]');
|
||||
await expect(robotsMeta).toHaveAttribute("content", /noindex/);
|
||||
await expect(robotsMeta).toHaveAttribute("content", /nofollow/);
|
||||
await expect(robotsMeta).toHaveAttribute("content", /noarchive/);
|
||||
await expect(robotsMeta).toHaveAttribute("content", /nosnippet/);
|
||||
});
|
||||
|
||||
test("home page should contain JSON-LD LocalBusiness", async ({ page }) => {
|
||||
await page.goto("/");
|
||||
const jsonld = page.locator('script[type="application/ld+json"]');
|
||||
const content = await jsonld.textContent();
|
||||
expect(content).toContain("LocalBusiness");
|
||||
expect(content).toContain("Hammerschmidt");
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user