# MCP-Server

> Lass externe Agenten wie Claude Code oder Cursor über MCP deine Agenten nachschlagen und ihnen Arbeit geben. Ausführen lassen sich nur die Agenten, die du einschaltest.

Der **MCP-Server** ist die Adresse, über die ein externer Agent wie Claude Code oder Cursor per MCP deine endue-Agenten nachschlägt und ihnen Arbeit gibt. Neben einer [Unterhaltung](/de/docs/work/conversations/), einem [Kanal](/de/docs/automate/channels/) und der [Agent API](/de/docs/build/agent-api/) ist das der vierte Weg zum Agenten, und zwar der für andere Agenten.

```
https://platform.endue.ai/mcp
```

## Wann du ihn nutzt

Wenn ein Coding-Agent, den du schon verwendest, mitten in seiner Arbeit Hilfe von einem deiner endue-Agenten braucht: Claude Code korrigiert gerade Code und bittet deinen Support-Agenten, die Erstattungstickets der letzten Woche zusammenzufassen.

Ruft Code auf, den du selbst geschrieben hast, nimm die [Agent API](/de/docs/build/agent-api/). Sie streamt die Antwort.

## Verbinden

<Steps>

1. **Öffne Einstellungen → Konto → MCP-Verbindung** und wähle **Verbindung erstellen**. Im Bereich **MCP** im [Agent Builder](/de/docs/build/agent-builder/) gibt es dieselbe Schaltfläche.

2. **Erstelle einen Schlüssel.** Lege Namen und Ablaufdatum fest. Seine Berechtigungen sind fest auf **Lesen** und **MCP-Ausführung** eingestellt.

3. **Füge die Konfiguration ein.** Wähle deinen Client, und das Fenster zeigt eine Konfiguration, in der der Schlüssel schon eingetragen ist. Kopiere sie an die Stelle, die das Fenster nennt. Nach dem Schließen des Fensters lässt sich der Schlüssel nicht noch einmal anzeigen.

4. **Prüfe die Verbindung.** Sobald der externe Agent seine erste Anfrage sendet, wechselt das Fenster zu **Verbunden**.

5. **Schalte MCP für den Agenten ein, den du ausführen lassen willst.** Schalte im Bereich **MCP** im Agent Builder **Diesen Agenten über MCP ausführen** ein. Ein Agent, bei dem der Schalter aus ist, lässt sich lesen, aber nicht ausführen.

</Steps>

Das sind die Konfigurationen, die das Fenster zeigt. Dein Schlüssel steht dort, wo `sk_...` steht.

<Tabs syncKey="mcp-client">
  <TabItem label="Claude Code">
    Führe das in deinem Terminal aus.

    ```bash
    claude mcp add --transport http endue https://platform.endue.ai/mcp --header "Authorization: Bearer sk_..."
    ```
  </TabItem>
  <TabItem label="Cursor">
    Trage das in `~/.cursor/mcp.json` ein.

    ```json
    {
      "mcpServers": {
        "endue": {
          "url": "https://platform.endue.ai/mcp",
          "headers": { "Authorization": "Bearer sk_..." }
        }
      }
    }
    ```
  </TabItem>
  <TabItem label="VS Code">
    Trage das in `.vscode/mcp.json` ein.

    ```json
    {
      "servers": {
        "endue": {
          "type": "http",
          "url": "https://platform.endue.ai/mcp",
          "headers": { "Authorization": "Bearer sk_..." }
        }
      }
    }
    ```
  </TabItem>
  <TabItem label="Andere Clients">
    Gib Serveradresse und Header selbst ein. Der Transport ist HTTP.

    ```
    https://platform.endue.ai/mcp
    Authorization: Bearer sk_...
    ```
  </TabItem>
</Tabs>

Soll der Schlüssel nicht in der Konfigurationsdatei stehen, wähle im Fenster **Mit Umgebungsvariable anzeigen**. Die Konfiguration wechselt dann zu einer, die den Schlüssel aus `ENDUE_API_KEY` liest.

<Aside type="note" title="Mit einem vorhandenen Schlüssel verbinden">
  Ein Schlüssel, der unter **Einstellungen → Konto → API-Schlüssel** mit dem Zweck **MCP-Verbindung**
  erstellt wurde, funktioniert genauso. Ein Schlüssel aus der Zeit, bevor sich Berechtigungen auswählen
  ließen, wird als **Alle Berechtigungen** angezeigt und funktioniert ebenfalls über MCP.
</Aside>

## Tools für den externen Agenten

| Tool | Was es tut | Was es braucht |
| --- | --- | --- |
| `list_agents` | Gibt Namen und Beschreibung deiner Agenten zurück und ob sich jeder über MCP ausführen lässt. | Die Berechtigung **Lesen** |
| `get_agent` | Gibt eine Zusammenfassung der Einrichtung eines Agenten zurück: Modell, Skills, Connectors, Kanäle. | Die Berechtigung **Lesen** |
| `invoke_agent` | Gibt dem Agenten Arbeit und liefert seine Antwort zurück. | Die Berechtigung **MCP-Ausführung** und den MCP-Schalter des Agenten |
| `get_session` | Gibt Status und Antwort einer früher vergebenen Arbeit zurück. | Die Berechtigung **MCP-Ausführung** |

`get_agent` gibt Namen und Zusammenfassungen zurück. Der Inhalt von Systemprompt und Gedächtnis sowie die Konten, die mit Connectors verknüpft sind, werden nicht gesendet.

Die Antwort von `invoke_agent` enthält eine Sitzungs-ID. Schick diese ID beim nächsten Aufruf mit, und der Agent macht in derselben Unterhaltung weiter. Ist eine Ausführung nach etwa 50 Sekunden nicht fertig, kommen zuerst der Status `running` und die Sitzungs-ID zurück, und der externe Agent holt die Antwort mit `get_session` ab. Die Ausführung läuft zu Ende, auch wenn der externe Agent die Verbindung vorher trennt.

## Was du für jeden Agenten festlegst

Der Bereich **MCP** im Agent Builder hat zwei Schalter. Beide sind anfangs aus.

- **Diesen Agenten über MCP ausführen.** `invoke_agent` funktioniert nur, wenn dieser Schalter an ist. Details wie Name und Beschreibung lassen sich in beiden Fällen lesen.
- **Auch Connectors und Outputs erlauben.** Ist der Schalter aus, nutzt Arbeit, die über MCP hereinkommt, weder [Connectors](/de/docs/connect/overview/) noch [Outputs](/de/docs/capabilities/outputs/). Ist er an, brauchen Senden und Löschen trotzdem jedes Mal deine [Freigabe](/de/docs/work/approvals/), und **Immer erlauben** gilt hier nicht.

**Letzte Aufrufe** im selben Bereich listet die MCP-Aufrufe auf, die diesen Agenten erreicht haben. Abgelehnte Aufrufe stehen dort mit dem Grund, etwa **Keine Berechtigung** oder **Ausgeschaltet**.

## Sehen, was hereingekommen ist

- **Benachrichtigung.** Du bekommst eine Benachrichtigung, wenn ein externer Agent eine neue Unterhaltung beginnt, und keine weitere, solange diese Unterhaltung weiterläuft.
- **Unterhaltung.** Sie steht in der Seitenleiste bei diesem Agenten unter **MCP**. Öffne sie, um zu sehen, welcher Schlüssel und welcher Client aufgerufen hat.
- **Freigabe.** Die Ausführung pausiert bei einer Aktion, die eine Freigabe braucht, und die Anfrage kommt zu dir. Nach deiner Freigabe läuft die Ausführung weiter, und der externe Agent holt die Antwort mit `get_session` ab.

Eine MCP-Unterhaltung ist schreibgeschützt. Sie geht nur über MCP-Aufrufe weiter.

## Einschränkungen

- Ein Client, der kein Token in einem Header senden kann (einer, der sich nur über OAuth verbindet), kann sich nicht verbinden.
- Arbeit, die über MCP hereinkommt, nutzt keine [Geräte](/de/docs/build/devices/). Das lässt sich mit keinem Schalter ändern.
- Der externe Agent kann weder das Modell noch die Anzahl der Schritte wählen. Die Ausführung nutzt, was beim Agenten eingestellt ist.
- Die Karten mit [Fragen](/de/docs/work/questions/) des Agenten werden nicht nach außen gesendet. Muss der Agent etwas fragen, fragt er im Text seiner Antwort.
- Der externe Aufrufer kann nicht in das [Gedächtnis](/de/docs/capabilities/memory/) des Agenten schreiben.
- Eine über MCP gestartete Sitzung wird nur über MCP fortgesetzt und gelesen. Sie vermischt sich nicht mit Sitzungen der Agent API.
- `list_agents` gibt bis zu 50 Agenten zurück.
- Die Berechtigungen eines Schlüssels lassen sich nach dem Ausstellen nicht ändern. Erstelle einen weiteren Schlüssel, wenn du andere brauchst.
- Ausführungen und Kosten laufen über das Konto, das den Schlüssel erstellt hat.

## Siehe auch

<CardGrid>
  <LinkCard
    title="Agent API"
    href="/de/docs/build/agent-api/"
    description="Wenn Code aufruft und kein Agent."
  />
  <LinkCard
    title="Freigaben"
    href="/de/docs/work/approvals/"
    description="Warum Senden und Löschen auf dich warten."
  />
  <LinkCard
    title="Direktverbindungen"
    href="/de/docs/connect/direct-connections/"
    description="Die umgekehrte Richtung: Dein Agent nutzt einen externen MCP-Server."
  />
  <LinkCard
    title="Sicherheit und Berechtigungen"
    href="/de/docs/account/security/"
    description="Worauf ein Schlüssel zugreifen kann und wie du ihn widerrufst."
  />
</CardGrid>
