Websuche für Claude Code, Cursor und Codex mit einem einzigen MCP-Server

Ein Remote-MCP-Server gibt einem Coding-Agenten 15 Tools: Websuche, Seiten als Markdown scrapen, Maps, Amazon, YouTube-Transkripte. Setup für drei Clients, getestet.

Ein Coding-Agent, der das Web nicht lesen kann, rät bei Bibliotheksversionen und erfindet API-Flags. Die Lösung ist kein eigenes Tool pro Projekt, sondern ein einziger Remote-MCP-Server, einmal pro Client hinzugefügt, den der Agent zum Suchen und zum Lesen von Seiten aufrufen kann.

FastAF betreibt einen unter https://api.fastaf.co/mcp (Streamable HTTP, stateless, Spec 2026-07-28), authentifiziert mit demselben Bearer-Key wie die REST-API. Unten findest du das Setup für drei Clients, das rohe Protokoll und was eine Session kostet. Alle Aufrufe wurden am 19. Oktober 2026 gemacht.

Was bekommt der Agent vom Server?

tools/list liefert 15 Tools: scrape_page, search_web, search_places, search_amazon, search_news, search_shopping, get_trends, search_scholar, search_jobs, ask_google_ai, search_walmart, search_x, search_youtube, youtube_transcript, get_linkedin_profile. Jedes ist mit readOnlyHint: true markiert und hat ein striktes Input-Schema mit einer Beschreibung zu jedem Parameter, das Modell weiß also, was es übergeben kann.

Die Kosten sind die REST-Kosten: search_web kostet 5 Credits, scrape_page 1 (5 mit render_js: true), search_amazon und youtube_transcript je 1, get_linkedin_profile 60. Die vollständige Liste steht auf den API-Seiten und in den MCP-Docs.

Leg den Key zuerst in eine Umgebungsvariable, damit er nie in einer Config-Datei landet, die du vielleicht committest:

export FASTAF_API_KEY="..."   # in ~/.zshrc oder ~/.bashrc

Wie fügst du ihn zu Claude Code hinzu?

Laut den MCP-Docs von Claude Code (code.claude.com/docs/en/mcp, geprüft am 19. Oktober 2026) nutzen Remote-Server --transport http und einen Header:

claude mcp add --transport http fastaf https://api.fastaf.co/mcp \
  --header "Authorization: Bearer $FASTAF_API_KEY"

Deine Shell expandiert die Variable, der Key wird also in ~/.claude.json gespeichert. Um den Server mit einem Team zu teilen, nimm eine .mcp.json im Projekt: Claude Code expandiert ${VAR} innerhalb von headers, die Datei enthält also kein Secret.

{
  "mcpServers": {
    "fastaf": {
      "type": "http",
      "url": "https://api.fastaf.co/mcp",
      "headers": { "Authorization": "Bearer ${FASTAF_API_KEY}" }
    }
  }
}

claude mcp list zeigt, ob die Verbindung steht. Wir haben genau diese Datei mit Claude Code 2.1.197 im Headless-Modus laufen lassen; das Modell bekam das JSON des Tools (text, truncated, total_chars, credits_used, credits_remaining).

Wie fügst du ihn zu Cursor hinzu?

Laut den Docs von Cursor (cursor.com/docs/context/mcp, geprüft am 19. Oktober 2026) liest es ~/.cursor/mcp.json global oder .cursor/mcp.json pro Projekt und löst ${env:NAME} in url und headers auf:

{
  "mcpServers": {
    "fastaf": {
      "url": "https://api.fastaf.co/mcp",
      "headers": { "Authorization": "Bearer ${env:FASTAF_API_KEY}" }
    }
  }
}

Cursor haben wir für diesen Beitrag nicht ausgeführt; die Config folgt der Dokumentation.

Wie fügst du ihn zur Codex CLI hinzu?

Die MCP-Docs von Codex (developers.openai.com/codex/mcp, geprüft am 19. Oktober 2026) nutzen bearer_token_env_var, das den Namen der Variable angibt, statt den Token selbst zu enthalten. In ~/.codex/config.toml:

[mcp_servers.fastaf]
url = "https://api.fastaf.co/mcp"
bearer_token_env_var = "FASTAF_API_KEY"

Oder codex mcp add fastaf --url https://api.fastaf.co/mcp --bearer-token-env-var FASTAF_API_KEY (das Flag gibt es in codex-cli 0.159.2). codex mcp list oder /mcp in der TUI zeigt den Server an. Ein codex exec-Lauf mit dieser Config rief search_web auf und bekam drei Ergebnisse für 5 Credits.

Wie sieht ein roher MCP-Aufruf aus?

Die Spec 2026-07-28 ist stateless: Es gibt keinen Handshake, und initialize liefert -32601 Method not found. Jeder Request trägt die Version in einem Header und in _meta, dazu einen Mcp-Method-Header (ohne ihn antwortet der Server mit -32020, Header und Body passen nicht zusammen):

curl -s https://api.fastaf.co/mcp \
  -H "Authorization: Bearer $FASTAF_API_KEY" \
  -H "Content-Type: application/json" \
  -H "MCP-Protocol-Version: 2026-07-28" \
  -H "Mcp-Method: tools/call" -H "Mcp-Name: search_web" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{
       "name":"search_web","arguments":{"query":"python 3.14 free-threaded","results":3},
       "_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28",
                "io.modelcontextprotocol/clientCapabilities":{}}}}'

Echte Ausgabe, gekürzt:

{"results":[
  {"title":"Python support for free threading ...",
   "url":"https://docs.python.org/3/howto/free-threading-python.html","position":1},
  {"title":"Python Free-Threading Guide","url":"https://py-free-threading.github.io/","position":3}],
 "credits_used":5,"credits_remaining":937}

Derselbe Aufruf mit scrape_page auf diese URL und max_chars: 4000 lieferte "truncated":true,"total_chars":20229,"credits_used":1.

Warum Markdown mit Limit statt rohem HTML?

Der Kontext ist das eigentliche Budget. Die „What’s new”-Seite von Python 3.14 ist, per curl abgerufen, 554.786 Bytes HTML. scrape_page machte daraus 266.828 Zeichen Markdown und gab die ersten 12.000 zurück (der Standardwert von max_chars, einstellbar von 1.000 bis 30.000), in 1,3 Sekunden für 1 Credit. Der kleinere Free-Threading-Guide schrumpfte von 41.838 Bytes HTML auf 20.229 Zeichen.

Bei grob vier Zeichen pro Token sind 12.000 Zeichen etwa 3.000 Tokens. Laut den Docs von Claude Code warnt es ab 10.000 Tokens Tool-Output und kappt standardmäßig bei 25.000, rohes HTML würde also abgeschnitten oder in eine Datei geschrieben, bevor das Modell etwas Brauchbares sieht. truncated und total_chars sagen dem Agenten, dass es noch mehr gibt, damit er mit einem höheren Limit erneut fragen kann.

Suchergebnisse sind genauso kompakt: Titel, URL, Snippet und Position, sonst nichts.

Was kostet eine Coding-Session?

Eine intensive Recherche-Session mit 10 Suchen und 10 Seitenabrufen kostet 10 x 5 + 10 x 1 = 60 Credits. Die 500 kostenlosen Credits reichen für acht davon; das Starter-Paket für 10 $ (20.000 Credits) reicht für 333, etwa 3 Cent pro Session. Siehe Preise.

Das harte Limit ist das Guthaben des Accounts. Jedes Ergebnis meldet credits_remaining, und bei null hören die Tools auf abzurechnen und geben einen Fehler zurück. Nimm einen Key pro Rechner, damit du den Key eines verlorenen Laptops allein sperren kannst, aber das Guthaben teilen sich alle Keys des Accounts: Budgets pro Key gibt es nicht. Der Beitrag zum Ausgabenlimit behandelt Limits pro Lauf.

Was geht schief, und wie behebst du es?

  • HTTP 401, -32001 Authentication required: Der Header fehlt, oder die Variable ist in der Umgebung des Clients leer. GUI-Apps lesen dein Shell-Profil oft nicht.
  • Keine Credits mehr (402 bei REST): Das Tool liefert INSUFFICIENT_CREDITS mit credits_used: 0. Lade auf; abgerechnet wurde nichts.
  • Zu viele auf einmal (429 bei REST): Tool-Ergebnisse kommen als RATE_LIMITED zurück, wenn der Agent mehr parallele Aufrufe abfeuert, als die Nebenläufigkeit deines Pakets erlaubt (1 bei Free, 5 bei Starter). Unser Codex-Lauf ist zweimal darauf gestoßen, bevor es klappte. Ein Burst auf den Endpoint selbst liefert HTTP 429 mit Retry-After: 10.

Kurzversion

Exportiere FASTAF_API_KEY, füg https://api.fastaf.co/mcp mit einem Bearer-Header in Claude Code, Cursor oder Codex hinzu, und der Agent bekommt Suche, Seitenabrufe als gekapptes Markdown und 13 weitere Tools, mit dem Guthaben als Obergrenze. Hol dir einen Key mit 500 kostenlosen Credits.