MCP-Server-Endpunkt

QAnswer stellt die darin konfigurierten Remote-MCP-Server als standardkonforme MCP-Endpunkte über Streamable HTTP bereit. Jeder MCP-Client — Claude Code, Cursor, VS Code, ein MCP-SDK — kann die Tools eines Servers dann mit einem QAnswer-API-Schlüssel nutzen: QAnswer prüft den Schlüssel und leitet jeden Aufruf an den Server weiter.

Er ist das MCP-Gegenstück zum Endpunkt Chat Completions, der dasselbe für LLM-Anbieter leistet.

Endpunkt

Jeder Server hat eine eigene URL, die mit der Kennung des Servers endet. Der API-Tab des Servers in QAnswer zeigt sie zum Kopieren an.

POST https://app.qanswer.ai/backend/api/v1/mcp/YOUR_SERVER_UID

Authentifizierung

Senden Sie mit jeder Anfrage einen QAnswer-API-Schlüssel, in einem dieser Header:

  • Authorization: Bearer <Schlüssel> — der Header, den MCP-Clients standardmäßig senden.
  • QAnswer-Api-Key: <Schlüssel>

Erstellen Sie einen Schlüssel auf der Seite API Access. Ihr Tarif muss den API-Zugang enthalten.

Der Schlüssel bleibt in QAnswer: Er wird nie an den MCP-Server gesendet.

Welche Server ein Schlüssel erreicht

  • Ein Benutzer-, Team- oder Organisationsschlüssel erreicht jeden MCP-Server, den sein Inhaber in QAnswer nutzen kann.
  • Ein an einen MCP-Server gebundener Schlüssel erreicht nur diesen Server. Ein solcher Schlüssel wird über die API erstellt, mit POST /api/api-key/resource/mcp/{id}, von jemandem, der den Server mindestens lesen darf.
  • Ein an einen KI-Assistenten oder einen LM-Anbieter gebundener Schlüssel wird abgelehnt.
  • Bereitgestellt werden nur Server, deren Authentifizierung auf None steht: Ein Server mit API Key oder OAuth antwortet mit 400.
  • Die integrierten Server von QAnswer — Web, Image Generation, Code Execution, Document Search, Assistants und Zimbra — laufen innerhalb von QAnswer und werden hier nie bereitgestellt.

Einen Client verbinden

Ersetzen Sie die URL durch die aus dem API-Tab des Servers und YOUR_API_KEY durch Ihren Schlüssel.

In claude_desktop_config.json (Settings → Developer → Edit Config), über mcp-remote, das auf Ihrem Rechner läuft und an den Endpunkt weiterleitet. Erfordert Node.js 18 oder neuer; starten Sie Claude Desktop nach dem Speichern neu:

{
  "mcpServers": {
    "qanswer-my-server": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://app.qanswer.ai/backend/api/v1/mcp/YOUR_SERVER_UID",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": { "AUTH_HEADER": "Bearer YOUR_API_KEY" }
    }
  }
}

Einschränkungen

  • Nur Tools: Ressourcen, Prompts und Vervollständigungen werden nicht angeboten.
  • Angeboten werden die in QAnswer synchronisierten und vom Inhaber des Servers aktivierten Tools, mit den in QAnswer festgelegten Beschreibungen.
  • Der Endpunkt ist zustandslos und antwortet in JSON: keine Sitzung, kein Ereignisstrom, keine Fortschrittsmeldungen. Ein Tool-Aufruf antwortet, sobald der MCP-Server geantwortet hat.
  • Die Bestätigungseinstellung von QAnswer gilt nur für den eigenen Chat; ob Tool-Aufrufe bestätigt werden, entscheidet Ihr Client.
  • Tool-Aufrufe verbrauchen keine Credits.
  • Clients, die sich mit Remote-Servern nur über OAuth verbinden, etwa ChatGPT, können den Endpunkt nicht nutzen, da er einen statischen API-Schlüssel erwartet.

Fehler

Probleme mit der Anfrage sind HTTP-Fehler. Probleme eines einzelnen Aufrufs kommen in einer normalen 200-Antwort zurück, damit der Client seine Verbindung behält.

  • 401 / 403 — kein Schlüssel, ein ungültiger oder abgelaufener Schlüssel, ein an eine andere Ressource gebundener Schlüssel oder kein Zugriff auf den Server
  • 404 — kein Server mit dieser Kennung
  • 400 — ein integrierter Server, ein Server mit Authentifizierung, ein Body, der nicht genau eine JSON-RPC-Nachricht ist, oder ein nicht unterstützter MCP-Protocol-Version-Header
  • 200, JSON-RPC -32601 — eine andere Methode als initialize, ping, tools/list und tools/call
  • 200, JSON-RPC -32602 — ungültige Parameter oder ein Tool, das der Server nicht anbietet
  • 200, isError — das Tool ist fehlgeschlagen oder der MCP-Server war nicht erreichbar