Next-Session-Prompt

Self-contained Briefing fuer eine neue Claude-Session zur Fortsetzung des mcp-hardening-pass-Projekts. Inhaltlich am 15.05. um ca. 17:30 abgebrochen mit offener Hypothesen-Verifikation.

Prompt (zum Reinkopieren)

Wir setzen ein laufendes Projekt fort: mcp-hardening-pass.

KONTEXT
Heute (15.05.2026) lief ein VF-WebUI-Vorfall mit Papierkram. Drei Patches sind live:
1. mcp-papierkram: PAPIERKRAM_EXPOSE_RAW-Env-Flag, _format_404_hint()-Wrapper, Docstring-Upgrade
2. mcp-vf-hosted: Whitelist-Fix in _SUB_MCP_ENV + neues Image (sha256:b3851cb...), Task-Rev 13 live
3. drei Aggregations-Tools (papierkram_monatsabschluss, _offene_posten, _kunde_uebersicht) — lokal getestet OK
4. tool-error-digest Lambda in agents-platform (Mo 7:00 UTC) — deployed + invoke-getestet
5. vf-sonnet System-Prompt v2.9: m365_* → sharepoint_* korrigiert + Anti-Halluzinations-Regel

Voller Projekt-Status: lies [[intern/projekte/mcp-hardening-pass/_index]]
Patterns aus dem Vorfall: [[intern/wissen/prozesse/mcp-best-practices]]
Audit-Sweep über 7 Eigenbau-MCPs: [[intern/runs/2026-05-15-mcp-audit-sweep]]

WO ES JETZT KLEMMT
Nach den Deploys: Marvin's Test-Aufrufe von papierkram_get_info im WebUI gehen nicht durch.
CloudWatch-Beweis: kein einziger CallToolRequest am MCP, nur ListToolsRequests + Session-
Terminate. Bedrock Sonnet 4.6 macht Tool-Use korrekt (direkt verifiziert via 
bedrock-runtime invoke-model). Open-WebUI Container wurde restartet — keine Besserung.

Verdacht: 139 Tools insgesamt (96 papierkram + 28 sharepoint + 15 ticketpay) sprengt die 
gesunde Tool-Anzahl. Anthropic-Benchmarks: Selection-Quality sinkt deutlich >30-50 Tools.

ZWEI-STUFEN-PLAN

Stufe 1 — Hypothese verifizieren (10 Min):
Open-WebUI `function_name_filter_list` auf den MCP-Server-Eintrag setzen auf nur 
"papierkram_get_info". Marvin macht im frischen Chat einen Test. Du beobachtest live in 
CloudWatch ob ein CallToolRequest mit tool=papierkram_get_info im Stream 
vf-mono/vf-mono/* im /aws/ecs/default/mcp-vf-hosted Log-Group ankommt.
- Wenn ja: Tool-Anzahl war die Wurzel, weiter zu Stufe 2.
- Wenn nein: Lass die Whitelist drin, grab tiefer — LiteLLM-Stream-Tool-Use-Bug, 
  Bedrock-Inference-Profile-Issue, Tool-Schema-Validierungsfehler. Nicht Stufe 2 starten.

Stufe 2 — echte Lösung (~1 Tag, NUR wenn Stufe 1 bestätigt):
Hybrid: statische Whitelist (~15-20 Core-Tools) + ein neues Meta-Tool 
`search_tools(query, namespace=None, detail="schema")` im mcp-vf-hosted.
- Core-Tools-Liste: papierkram_get_info, papierkram_list_invoices, papierkram_list_vouchers,
  papierkram_list_companies, papierkram_monatsabschluss, papierkram_offene_posten,
  papierkram_kunde_uebersicht, ticketpay_list_events, ticketpay_event_bilanz,
  sharepoint_list_sites, sharepoint_search_files, sharepoint_list_messages,
  sharepoint_search_messages, sharepoint_create_draft, sharepoint_send_mail
- Modell sieht 16 Tools statt 139. search_tools liefert auf Anfrage die Schemas der 
  anderen 123 — semantische Suche über Name+Description.
- Pattern-Source: Anthropic's progressive disclosure 
  (https://www.anthropic.com/engineering/code-execution-with-mcp) + Synaptic Labs 
  meta-tool pattern. Token-Saving ~85-95%.
- BEWUSST NICHT: Code Execution Mode (Cloudflare/FastMCP 3.1) — V8-Isolate-Sandbox 
  überdimensioniert für KMU-Setup.

WICHTIGE FILES & ENDPOINTS
- ~/source/mcps/mcp-papierkram/src/mcp_papierkram/server.py — drei Aggregations-Tools, 
  RAW_ENABLED-Gating, _format_404_hint()
- ~/source/mcps/mcp-vf-hosted/src/mcp_vf_hosted/main.py — _SUB_MCP_ENV-Whitelist + 
  _SUB_MCP_COMMANDS (Namespaces: papierkram, ticketpay, sharepoint)
- ~/source/mcps/mcp-vf-hosted/infra/lib/mcp-vf-hosted-stack.ts — Image-Pin, 
  PAPIERKRAM_EXPOSE_RAW Env
- ~/source/apps/open-webui-vf/prompts/vf-sonnet.txt — System-Prompt v2.9
- ~/source/agents-platform/lambdas/tool-error-digest/ — der Mo-7:00-Wochenreport
- Hosted MCP: https://mcp-vf.agenticventures.de/mcp (auth: Scalekit OAuth EU)
- WebUI: https://vf-chat.agenticventures.de
- CloudWatch Log-Group: /aws/ecs/default/mcp-vf-hosted (Stream vf-mono/vf-mono/<task>)
- Open-WebUI Admin-API-Key: aws secretsmanager get-secret-value --profile av-production 
  --region eu-central-1 --secret-id tmp/owui-admin-key
- Open-WebUI MCP-Server-Config-Endpoint: $BASE/configs/tool_servers (GET/POST)

OFFENE FOLGE-ITEMS (NICHT in dieser Session — gehören in spätere Sweeps):
- 3 weitere MCPs brauchen Raw-Gate + Error-Hints: mcp-ticketpay, mcp-calcom, mcp-whatsapp
  (siehe Audit-Sweep-Run, jeder ~45 Min nach Papierkram-Pattern)
- Strukturierter Audit-Log auf mcp-calcom + mcp-whatsapp (damit tool-error-digest 
  dort auch funktioniert)
- Vollaudit gegen alle 17 Best-Practices-Regeln für alle 8 MCPs

START
Erst Stufe 1 ausführen — function_name_filter_list setzen via Open-WebUI API. 
Nicht stillschweigend Code bauen. Marvin testet, du verifizierst in CloudWatch.