completion/complete (autocompletarea argumentelor) în Model Context Protocol (MCP)

Arhitectură & Primitivele Protocolului Specificația MCP 2026-07-28

Cererea prin care clientul obține de la server sugestii de completare pentru argumentele unui prompt sau ale unui șablon de resursă.

Specificație & cod MCP
{"method": "completion/complete", "params": {"ref": {...}, "argument": {"name": "...", "value": "..."}, "context": {"arguments": {...}}}}

Ce face completion/complete (autocompletarea argumentelor)

completion/complete oferă sugestii în timp ce utilizatorul completează argumentele unui prompt (identificat prin nume) sau ale unui șablon de resursă (identificat prin URI), similar autocompletării dintr-un IDE. Serverele care o suportă declară capabilitatea completions. Protocolul nu impune o interfață; clientul poate afișa sugestiile într-o listă derulantă sau altfel.

Cererea conține ref (ref/prompt cu name sau ref/resource cu uri, care poate fi un URI template), argument cu numele și valoarea curentă și, pentru argumente multiple, context.arguments cu valorile deja rezolvate. Răspunsul conține completion.values (cel mult 100, ordonate după relevanță), total opțional și hasMore.

Erori recomandate: -32601 dacă serverul nu suportă completarea, -32602 pentru un prompt inexistent sau argumente obligatorii lipsă, -32603 pentru erori interne. Serverele validează intrările, limitează rata și controlează accesul la sugestii sensibile; clienții folosesc debounce pentru cereri rapide.

Sintaxă și opțiuni

Opțiune / Parametru Descriere
ref {"type": "ref/prompt", "name": ...} sau {"type": "ref/resource", "uri": ...}.
argument.name / argument.value Argumentul completat și ce a tastat utilizatorul până acum.
context.arguments Valorile deja alese pentru celelalte argumente.
completion.values Sugestiile, cel mult 100.
completion.total Opțional: numărul total de potriviri.
completion.hasMore Dacă mai există rezultate.

Exemple practice

Exemplul 1: Sugestii pentru argumentul language

Câmpurile _meta obligatorii sunt omise, ca în exemplele din specificație.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "completion/complete",
  "params": {
    "ref": {
      "type": "ref/prompt",
      "name": "code_review"
    },
    "argument": {
      "name": "language",
      "value": "py"
    }
  }
}

Rezultat

{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "resultType": "complete",
    "completion": {
      "values": ["python", "pytorch", "pyside"],
      "total": 10,
      "hasMore": true
    }
  }
}

Exemplul 2: Completare cu context

Limbajul ales anterior restrânge sugestiile pentru framework.

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "completion/complete",
  "params": {
    "ref": {
      "type": "ref/prompt",
      "name": "code_review"
    },
    "argument": {
      "name": "framework",
      "value": "fla"
    },
    "context": {
      "arguments": {
        "language": "python"
      }
    }
  }
}

Greșeli frecvente și bune practici

  • Întorci mai mult de 100 de valori într-un răspuns. Folosește hasMore și total.
  • Trimiți o cerere la fiecare tastă. Specificația recomandă clienților debounce și cache pentru rezultate.

Comenzi înrudite