Gateway: Deutsch-Direktive fuer IDE-Traffic + web_search-Tool im Web-MCP

1) /v1-Gateway haengt an jede Chat-Anfrage (ausser hermes/Lucy — SOUL.md
   regelt das selbst) eine System-Direktive an: Antworten auf Deutsch,
   Code/Bezeichner unveraendert. Abschaltbar via MC_GATEWAY_LANG_DIRECTIVE="".
2) mcp_web.py: neues Tool web_search (ddgs/DuckDuckGo, kein Key), Ergebnis
   injection-geschuetzt via wrap_untrusted. Damit koennen IDE-Agents (Zed
   via context_servers) und Hermes im Web suchen; Debug-Log geht auf stderr,
   stdout bleibt MCP-sauber (verifiziert).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-03 08:55:22 +02:00
parent a2091b4f5f
commit 50867b2781
2 changed files with 47 additions and 0 deletions
+18
View File
@@ -60,6 +60,24 @@ def fetch_url(url: str, max_chars: int = 8000) -> str:
return f"FEHLER: {e}"
@mcp.tool()
def web_search(query: str, max_results: int = 6) -> str:
"""Websuche (DuckDuckGo, kein API-Key). Liefert Titel, URL und Kurzbeschreibung je
Treffer. Nutze dies für aktuelle Informationen, Dokumentation oder Fehlermeldungen —
und lies vielversprechende Treffer danach mit fetch_url im Volltext."""
try:
from ddgs import DDGS
rows = list(DDGS().text(query, max_results=max_results) or [])
if not rows:
return "Keine Treffer."
lines = [f"- {r.get('title', '(ohne Titel)')}\n {r.get('href', '')}\n {r.get('body', '')}"
for r in rows]
return wrap_untrusted("\n".join(lines), label=f"WEBSUCHE {query}")
except Exception as e:
return f"FEHLER: {e}"
@mcp.tool()
def fetch_urls(urls: list[str], max_chars_each: int = 4000) -> str:
"""Lädt mehrere URLs gleichzeitig und gibt die Texte zurück.