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:
@@ -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.
|
||||
|
||||
Reference in New Issue
Block a user