Apps-Dokumentation

MCP Tools

MCP-Server anbinden, damit Agenten auf deinen Systemen handeln können — mit verpflichtender Freigabe für jeden Call.

Überblick

MCP Tools lässt dich jeden Model Context Protocol-Server (CRM, Warehouse, internes API) an Adverfly anbinden. Sobald verbunden, stehen die Tools des Servers den Adverfly-KI-Agenten zusätzlich zu den eingebauten zur Verfügung.

Die harte Regel: jeder MCP-Tool-Call landet in der Freigabe-Queue. Nichts läuft auf deinen Systemen, bevor ein Mensch auf „Freigeben" klickt. Keine Ausnahmen — Read-Tools, Write-Tools und nebenwirkungsfreie Abfragen wandern alle gleich in die Queue.

So funktioniert's

  1. Verbinde einen Server in der MCP-App. Adverfly testet ihn (initialize + tools/list) und zeigt die gefundenen Tools.
  2. Agent entscheidet, ein Tool zu nutzen — in einem Chat oder Scheduled Run. Statt deinen Server zu callen, legt Adverfly eine Zeile in der Freigabe-Queue an und teilt dem Agenten mit: „queued — warte auf den User."
  3. Du gibst frei oder lehnst ab in der MCP-App. Bei Freigabe callt Adverfly deinen Server, fängt die Antwort ein und markiert den Eintrag als executed.
  4. Historie zeigt jeden Call mit Status, Zeitstempel und Freigeber.

Mit dem eingebauten Simulator testen

Adverfly liefert einen Fake-Meta-MCP-Server mit, mit dem du den End-to-End-Flow testen kannst, bevor du dein echtes CRM anschließt. 5 simulierte Tools (list_campaigns, pause_campaign, set_daily_budget etc.) mit In-Memory-State.

Endpoint: https://www.adverfly.com/api/mcp-simulator/meta

Verbinden:

  1. MCP-App öffnen → MCP-Server hinzufügen
  2. Name: Meta Simulator
  3. Endpoint-URL: https://www.adverfly.com/api/mcp-simulator/meta
  4. Auth-Token: leer lassen
  5. Verbinden — du solltest 5 erkannte Tools sehen

Aktion triggern:

  • Cortex-Chat öffnen und fragen: „Pausiere Kampagne camp_001 auf Meta"
  • Der Agent queued den Call — schau in den „Wartet auf Freigabe"-Bereich der MCP-App
  • Freigeben — Adverfly trifft jetzt den Simulator

Verifizieren:

  • Gleiche URL im Browser öffnen (GET) → JSON-Dump mit Kampagnen-State und letzten Logs
  • camp_001.status ist jetzt PAUSED und es gibt einen Log-Eintrag

Der Simulator-State liegt im Speicher und wird bei Cold Start zurückgesetzt. Für Smoke-Tests okay, nicht für irgendwas, das du behalten willst.

Advanced: Simulator ohne Connect testen

Wenn du den Simulator-Endpoint prüfen willst, ohne durch die Adverfly-UI zu gehen:

Direkt per curl — Tools listen ohne Adverfly:

curl -X POST https://www.adverfly.com/api/mcp-simulator/meta \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Dann ein Tool direkt callen:

curl -X POST https://www.adverfly.com/api/mcp-simulator/meta \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"pause_campaign","arguments":{"campaign_id":"camp_001"}}}'

URL im Browser neu öffnen — geupdateter campaigns-State und neuer Log-Eintrag sind drin.

Gegen lokalen Adverfly-Dev-Server mit ngrok testen — wenn du einen eigenen MCP-Server auf dem Laptop baust und Adverfly dahin reichen soll:

ngrok http 3000     # macht deinen lokalen Server public

Die ausgegebene https://<id>.ngrok.io/<path>-URL im MCP-Add-Dialog eintragen. Das Adverfly-Backend-Lambda trifft deinen Laptop durch den Tunnel.

Eigenen Server anbinden

Dein MCP-Server muss JSON-RPC 2.0 über HTTP sprechen und mindestens implementieren:

  • initialize — gibt protocolVersion und serverInfo zurück
  • tools/list — gibt den Tool-Katalog zurück
  • tools/call — führt ein Tool per Name und Argumenten aus

Authentifizierung läuft per Bearer-Token, gesetzt beim Verbinden. Adverfly verschlüsselt den Token at-rest.

Wenn dein bestehender MCP nur stdio kann (die offiziellen Reference-Server sind stdio), pack einen Bridge davor (mcp-proxy, supergateway), der HTTP rausgibt.

Erste Schritte

  1. MCP Tools über die Sidebar öffnen (unter Aktivieren)
  2. Erst den Meta-Simulator anschließen, um den Flow zu prüfen
  3. Dann den echten Server verbinden
  4. Eine Agent-Aktion auslösen und aus der Queue freigeben