beta

Agent über MCP verbinden

Gemeinsame Aufgaben und Produktkontext für den eigenen Agenten — mit Ihren Rechten und einem Protokoll seiner Aktionen.

Serveradresse: https://hub.n1.team/mcp · Streamable HTTP · ohne Serversitzung.

Mit OAuth verbinden

  1. Fügen Sie in Claude, ChatGPT oder einem anderen entfernten MCP-Client mit OAuth einen eigenen Server mit der Adresse oben hinzu. Die Verfügbarkeit hängt vom Client und vom Tarif ab. Für Cursor nutzen Sie die Bearer-Einrichtung im Abschnitt Cursor.
  2. Melden Sie sich bei Ihrem bestehenden Hub-Konto an, prüfen Sie das angezeigte Team und erlauben Sie den Zugriff. Jede Person verbindet den eigenen Agenten. Einen Schlüssel müssen Sie nicht kopieren.
  3. Senden Sie die Prüfnachricht unten. Eine gespeicherte Verbindung allein beweist nicht, dass der Agent den Hub erreicht hat.

Für die Entwicklung eines Clients: die Erkennung läuft über resource_metadata im WWW-Authenticate der Antwort 401, die Metadaten der geschützten Ressource und des Autorisierungsservers. Authorization Code + PKCE S256, öffentliche Clients, dynamische Registrierung, Scope hub. Ein refresh_token-Grant wird nicht angeboten: verbinden Sie sich nach Ablauf der Autorisierung erneut.

Lokales Codex: verbinden Sie OAuth einmal im gemeinsamen Profil von Anwendung, CLI und IDE. Nutzen Sie eine vorhandene Verbindung, statt eine weitere anzulegen.

codex mcp add n1-hub --url https://hub.n1.team/mcp
codex mcp login n1-hub

Gehostetes ChatGPT / Work: installieren Sie Hub einmal über Plugins → + → Add custom MCP server mit der Adresse oben und OAuth. Wählen Sie das installierte Plugin bei Bedarf in einem neuen Chat. Ein gehosteter Chat übernimmt die lokale config.toml nicht.

ChatGPT Plugins

Cursor

Desktop-App: Settings → MCPs → New MCP Server öffnet ~/.cursor/mcp.json. Tragen Sie die Hub-URL und Authorization Bearer mit einem persönlichen Hub-Schlüssel ein. Bevorzugt den Schlüssel in N1_HUB_KEY belassen und den Header unten nutzen. Die Authenticate-Buttons unter Needs Attention gelten für andere Plugins, nicht für Hub.

{
  "mcpServers": {
    "n1-hub": {
      "url": "https://hub.n1.team/mcp",
      "headers": {
        "Authorization": "Bearer ${env:N1_HUB_KEY}"
      }
    }
  }
}

Cursor Cloud Agents erben weder ~/.cursor/mcp.json noch eine Projekt-.cursor/mcp.json. Auf cursor.com/agents öffnen Sie das MCP-Dropdown und fügen Hub mit derselben URL und einem persönlichen Hub-Schlüssel hinzu. Team-Admins können ihn unter Dashboard → Plugins & MCPs hinzufügen. Nutzen Sie HTTP. Cloud Agents unterstützen weder SSE noch mcp-remote.

cursor.com/agents · Cursor MCP · Cursor Cloud Agents · MCP in der Cursor-App

Mit einem persönlichen Schlüssel verbinden

Für Clients ohne OAuth, Skripte oder die optionale lokale Codex-Einrichtung für Aufgaben und Verbrauch verwenden Sie einen persönlichen Schlüssel unter Agenten → Meine Verbindungen. Nutzen Sie den gespeicherten Schlüssel in den Chats dieses Profils. Legen Sie ihn als N1_HUB_KEY in der Umgebung des Clients ab. Der Schlüssel wird einmal angezeigt; schreiben Sie ihn nicht ins Repository und nicht in eine URL. Ziehen Sie ihn bei einem Leak in Ihren eigenen Verbindungen zurück. Jeder Schlüssel gehört einer Person und einem Team.

Meine Schlüssel

Manuelle Einrichtung von lokalem Codex: führen Sie den Block mit der vorhandenen ~/.codex/config.toml zusammen, speichern Sie N1_HUB_KEY in ~/.codex/.env und starten Sie den Client neu. Wenn CODEX_HOME gesetzt ist, verwenden Sie das vorhandene Codex-Verzeichnis. Überschreiben Sie keine anderen Einstellungen. Das verbindet keinen gehosteten Chat.

[mcp_servers.n1-hub]
url = "https://hub.n1.team/mcp"
bearer_token_env_var = "N1_HUB_KEY"

Andere Clients: wählen Sie HTTP / Streamable HTTP und richten Sie den Autorisierungsheader ein. Setzen Sie den Schlüssel über den Geheimspeicher des Clients ein; die Syntax der Variablen hängt von der Anwendung ab.

Authorization: Bearer <your-personal-key>

Verbindung prüfen

Rufe get_status auf. Sag, für welche Person und welchen Arbeitsbereich du arbeitest. Danach list_products und get_product_context für mein Produkt. Ändere noch nichts.

Die Antwort muss Ihre Person und Ihr Team nennen. Prüfen Sie den ersten erfolgreichen Aufruf unter Agenten. Der Agent sieht dieselben Produkte wie Sie; Vorgänge nur für den Inhaber bleiben eingeschränkt. Das Entfernen einer Person oder der Widerruf eines Schlüssels beendet die folgenden Aufrufe.

Wiederholen Sie in einem neuen Chat über die gespeicherte Verbindung get_status und lesen Sie die gewünschte Aufgabe mit get_task. Ein Schlüssel pro Chat ist nicht nötig. Fehlen Werkzeuge, prüfen Sie das installierte Plugin, das aktive Client-Profil oder die gespeicherte Cloud-Umgebung, bevor Sie neu verbinden. Ein früherer Aufruf beweist den Zugriff in diesem Chat nicht. OAuth-Zugriff allein zeigt den Tokenverbrauch nicht.

Eigenen Client bauen: erste Protokollanfrage

Verwenden Sie ein MCP SDK: vereinbaren Sie eine unterstützte Protokollversion, rufen Sie initialize auf, senden Sie notifications/initialized und danach tools/list und tools/call. Dieses curl prüft nur die Initialisierung und startet kein Werkzeug. Übergeben Sie die vereinbarte Version in den folgenden Anfragen im Header MCP-Protocol-Version. Der zustandslose Transport vergibt keine Mcp-Session-Id und bietet keinen dauerhaften Ereignisstrom über GET.

curl --fail-with-body 'https://hub.n1.team/mcp' \
  -H "Authorization: Bearer $N1_HUB_KEY" \
  -H 'Content-Type: application/json' \
  -H 'Accept: application/json, text/event-stream' \
  --data '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"my-client","version":"1.0.0"}}}'

So funktioniert ein MCP-Client · Streamable HTTP

Funktionen entdecken

Die vollständige aktuelle Referenz ist die Antwort von tools/list nach der Autorisierung: Namen, Beschreibungen, JSON Schema der Argumente und Anmerkungen. Über denselben Client erreichen Sie resources/list, resources/templates/list und prompts/list. Legen Sie die Zahl der Werkzeuge nicht fest und behandeln Sie eine gefundene Operation nicht als für jede Rolle erlaubt.

SzenarioBeginnen Sie mit
Person und Kontextget_status, list_products, get_product_context
Aufgaben und Übergabelist_tasks, get_task, create_task, update_task, review_task
Teamprozess: Spalten und optionale Aufgabentypenget_workflow, update_workflow · Der Inhaber schreibt mit expectedVersion und reason; die Konfiguration startet keinen Agenten.
Warteschlange des Agentennext_task, get_agent_work
Produktdatenquery_metric, get_overview, get_sources
Was sich geändert hatget_digest, daily_digest (Prompt)

Der Produktkontext steht auch als n1://products/{slug}/context bereit; plan_week ist ein Planungs-Prompt. Lesen Sie vor einer Änderung die Serveranweisungen und agentPolicy. Das Schließen einer Aufgabe braucht eine genannte Begründung; das Aufnehmen der Arbeit kann eine Schätzung verlangen. Eine Verbindung gibt Zugriff, startet aber keinen Hintergrundagenten und führt keinen Code aus. next_task ruft Ihr Agent selbst auf.

Wie Agenten Aufgaben aufnehmen

Das hängt von der Anwendung ab, nicht von der Modellmarke: Gemini, GPT und Claude brauchen einen laufenden Client, der den Hub aufruft. Eine Zuweisung und eine MCP-Verbindung starten diesen Client nicht. Der Hub sendet externen Agenten derzeit kein Aufwachsignal.

Für die automatische Aufnahme richten Sie die Anwendung oder einen externen Planer so ein, dass er die Warteschlange prüft und next_task aufruft, wenn der Client arbeiten kann. Dieser Aufruf kann eine Aufgabe übernehmen; er ist kein nur lesender Beobachter. Verwenden Sie die ausgegebene Laufkennung und die Stufenrevision und halten Sie die Teamregeln ein. Ohne Aufgabe nennt die Antwort den Grund (code: empty, paused, daily_runs, daily_tokens, needs_estimate, busy), und pollAfterSec sagt, nach wie vielen Sekunden Sie erneut fragen; REST wiederholt das im Header Retry-After. busy bedeutet, dass ein anderer Lauf desselben Schlüssels vor weniger als 90 Minuten an seiner Aufgabe gehandelt hat: beenden Sie diesen Lauf, statt die Aufgabe parallel zu bearbeiten. Um zu entscheiden, ob ein Agent überhaupt starten soll, kann der Planer peek_queue aufrufen (REST: GET /api/v1/agents/queue): der Aufruf übernimmt nichts und antwortet mit pending, queued, holding, code und pollAfterSec. Starten Sie das Modell nur, wenn pending über 0 liegt: eine leere Warteschlange verbraucht keine Tokens. Gibt es keinen Hintergrundmodus und keinen Zeitplan, bitten Sie den Agenten, die Aufgaben von Hand zu prüfen. Eine erfolgreiche Verbindung oder eine kürzliche Anfrage beweist nicht, dass der Agent die Warteschlange dauernd abhört.

Eine bestehende Verbindung wiederherstellen

Eine gewöhnliche Hub-Ausgabe verlangt nicht, jedes Modell zu aktualisieren oder neu zu verbinden. Bei einer bekannten Änderung der Werkzeuge erscheint in Agenten ein persönlicher Hinweis für die betroffene gespeicherte Verbindung. Nur deren Inhaber bestätigt ihn. Die Bestätigung blendet den Hinweis aus; sie beweist nicht, dass der Client aktualisiert hat oder dass ein alter Chat Aufgaben ändern kann. get_status.mcp nennt die Serverrevision und persönliche Hinweise, nicht den Cache des Clients.

Autorisierung und die vom Client gemerkten Werkzeuge werden getrennt aktualisiert. Nach einer Hub-Ausgabe kann die Verbindung funktionieren, während die Anwendung alte Werkzeug-Metadaten hält. Hub kann eine andere Anwendung nicht aktualisieren und einen Abbruch vor MCP nicht sehen. Eine frühere Aufrufzeit bestätigt die Wiederherstellung nicht.

ChatGPT Plugins · OpenAI: Metadaten von custom MCP aktualisieren · Hilfe zur Wiederherstellung der Verbindung

Prüfen Sie im selben Client nur das Lesen: get_status muss die vorgesehene Person und das Team nennen, danach muss get_task eine echte Aufgabe lesen, auf die sie zugreifen darf. Übergeben Sie den echten Aufgabenschlüssel, kein erfundenes Beispiel. Ändern Sie bei der Prüfung nichts: next_task kann Arbeit übernehmen und ist keine passive Prüfung. Nach der Aktualisierung einer gehosteten Verbindung führen Sie diese Leseaufrufe in einem neuen Gespräch mit der bisherigen Autorisierung aus.

Prüfen Sie das Werkzeugergebnis einschließlich isError, bevor Sie Erfolg melden. Nach einer Zeitüberschreitung oder einem unklaren Schreibergebnis lesen Sie das betroffene Objekt zuerst erneut: die Änderung kann gespeichert sein und die Antwort verloren. Wiederholen Sie die Aktion nur, wenn das Lesen bestätigt, dass die Änderung nicht angewendet wurde. Bleibt das Ergebnis unklar, halten Sie an und bitten Sie um Hilfe. Gelingt die Wiederherstellung nicht, notieren Sie Client, Umgebung, Werkzeug, Zeitpunkt und den bereinigten Fehlertext ohne Schlüssel, Cookies und OAuth-Codes.

Grenzen und Fehler

Für gewöhnliche HTTP-Skripte verwenden Sie die versionierte REST API.