Corcava logo Das einzige Business-Tool, das Sie brauchen Corcava
Menü

MCP-Tool-Aufrufe schlagen fehl: Ungültige Argumente und Validierung beheben

MCP-Tool-Fehler durch ungültige Argumente, falsche IDs, fehlende Felder oder Server-Validierung beheben. Read-only-zuerst-Strategie und systematischer Debug-Workflow.

Was sind Tool-Aufruf-Fehler?

Bei einem fehlgeschlagenen Tool-Aufruf erreicht die Anfrage den Server und wird verarbeitet, aber Eingabe oder Aktion sind ungültig. Anders als Verbindungs- oder Authentifizierungsfehler.

Fehlerkategorien

  • Eingabefehler: Ungültige Argumente, falsche Typen, fehlende Pflichtfelder
  • ID-Fehler: Falsche Task-/Projekt-/Board-IDs, nicht vorhandene Ressourcen
  • Validierungsfehler: Server-seitige Validierung (Geschäftslogik)
  • Berechtigungsfehler: Gültige Eingabe, aber unzureichende Rechte (siehe 403-Guide)

Debug-Strategie: Zuerst nur lesen

Mit Lese-Operationen starten, um grundsätzlichen Zugriff zu prüfen, bevor Sie schreiben:

Empfohlener Debug-Workflow

  1. Lese-Operationen testen: list_tasks, list_projects, get_task (nur lesen)
  2. IDs prüfen: IDs aus Lese-Operationen in nachfolgenden Aufrufen verwenden
  3. Einfache Schreibaktionen: add_task_comment testen (einfacher als create_task)
  4. Komplexe Schreibaktionen: Dann create_task, update_task (mehr Validierung)

Warum zuerst nur lesen?

  • Weniger Validierungsregeln – Lese-Operationen sind einfacher
  • Zugriff prüfen – bestätigt Erreichbarkeit der Ressource
  • Korrekte IDs – Lese-Operationen liefern gültige IDs für Schreibaufrufe
  • Problem eingrenzen – Lesen ok, Schreiben fehlgeschlagen = schreib-spezifisches Problem

Häufige Fehlertypen

1. Ungültige Argumente

Argumente passen nicht zum erwarteten Typ oder Format:

Falscher Typ

❌ Falsch:

{ "task_id": "123" }  // String

✅ Richtig:

{ "task_id": 123 }  // Integer

Ungültiger Enum-Wert

❌ Falsch:

{ "status": "active" }

✅ Richtig:

{ "status": "in_progress" }
// Gültig: open, in_progress, done, blocked

Ungültiges Datumsformat

❌ Falsch:

{ "due_date": "2026/05/30" }

✅ Richtig:

{ "due_date": "2026-05-30" }
// ISO-8601-Format

2. Fehlende Pflichtfelder

Manche Tool-Aufrufe benötigen bestimmte Felder:

Pflichtfelder pro Tool

  • get_task: Erfordert task_id
  • create_task: Erfordert title (und oft project_id)
  • update_task: Erfordert task_id
  • add_task_comment: Erfordert task_id und comment
  • start_time_tracking: Erfordert task_id

Beispiel: Fehlendes Pflichtfeld

❌ Ungültig (title fehlt):

{
  "project_id": 123,
  "description": "Aufgabenbeschreibung"
}

✅ Gültig (mit title):

{
  "title": "Aufgabentitel",
  "project_id": 123,
  "description": "Aufgabenbeschreibung"
}

3. Falsche IDs

IDs werden verwendet, die nicht existieren oder zu anderen Ressourcen gehören:

Typische ID-Fehler

  • Nicht existierende ID: task_id 99999 existiert nicht
  • Falscher Ressourcentyp: project_id wo task_id erwartet wird
  • ID aus anderem Workspace: Aufgaben-ID aus Workspace A in Workspace B

Korrekte IDs ermitteln

  1. list_tasks aufrufen für verfügbare Aufgaben-IDs
  2. list_projects für Projekt-IDs
  3. list_boards für Board-IDs
  4. Diese IDs in den folgenden Tool-Aufrufen verwenden

4. Server-seitige Validierung

Auch bei gültigen Argumenten kann der Server die Aktion ablehnen (Geschäftslogik):

Typische Validierungsfehler

  • Aufgabe mit Abhängigkeiten kann nicht gelöscht werden
  • Bereits erledigte Aufgabe kann nicht aktualisiert werden
  • Aufgabe kann nicht in geschlossenem Projekt erstellt werden
  • Datumsbedingungen (due_date vor start_date)
  • Zeiterfassung kann nicht gestartet werden, wenn bereits eine andere Aufgabe getrackt wird

Fehler-Payloads lesen

Typische Fehlerantwort

Übliches Format:

{
  "error": {
    "code": "validation_error",
    "message": "Task ID 99999 not found",
    "field": "task_id",
    "details": "Die angegebene Aufgabe existiert nicht"
  }
}

Häufige Fehlercodes

  • validation_error: Eingabe-Validierung fehlgeschlagen (Typ, Feld, Wert)
  • not_found: Ressource mit dieser ID existiert nicht
  • forbidden: Gültige Eingabe, unzureichende Rechte
  • conflict: Aktion kollidiert mit aktuellem Zustand

Schritt-für-Schritt-Debug

Systematischer Ablauf

  1. Fehlermeldung lesen: Code und Nachricht auf Hinweise prüfen
  2. IDs prüfen: List-Operationen bestätigen, dass Ressourcen-IDs gültig sind
  3. Pflichtfelder prüfen: Tool-Doku für erforderliche Parameter
  4. Nur-Lesen testen: get_task oder list_tasks für grundsätzlichen Zugriff
  5. Aufruf vereinfachen: Optionale Parameter weglassen, nur Pflichtfelder testen
  6. Feldtypen prüfen: Strings, Integer, Datum im richtigen Format
  7. Fehlerdetails: „field“ und „details“ in der Fehlerantwort prüfen

Beispiel: Fehlgeschlagenen Tool-Aufruf debuggen

Fehlgeschlagener Aufruf

  • Tool: update_task
  • Argumente: { "task_id": "123", "status": "completed" }
  • Fehler: „Aufgaben-ID 123 nicht gefunden“

Debug-Schritte

  1. Zuerst prüfen, ob Task existiert: get_task(task_id: 123)
  2. Wenn das fehlschlägt: list_tasks() für verfügbare IDs
  3. Prüfen, ob task_id Integer sein muss: { "task_id": 123 }
  4. Prüfen, ob Task im zugreifbaren Workspace liegt

Lösung

  • Ursache: task_id als String "123" statt Integer 123 übergeben
  • Fix: Auf { "task_id": 123 } (Integer) geändert
  • Ergebnis: Tool-Aufruf erfolgreich

Kurz-Checkliste

Vor dem Nachfragen

  • ✅ Fehlermeldung genau gelesen
  • ✅ IDs mit List-Operationen verifiziert
  • ✅ Alle Pflichtfelder vorhanden
  • ✅ Zuerst Nur-Lesen-Operationen getestet
  • ✅ Feldtypen geprüft (String vs. Integer, Datumsformat)
  • ✅ Aufruf auf minimale Pflichtfelder reduziert
  • ✅ Tool-Doku für Parameteranforderungen geprüft

Weitere Fehlerbehebung