Skip to content

MCP-Tools verwenden

Agents sind nicht auf die von Ihnen geschriebenen Schritte und das von Ihnen indizierte Wissen beschränkt – sie können auch Tools auf externen MCP-Servern aufrufen. Das Model Context Protocol ist ein offener Standard zum Bereitstellen von Tools und Daten für KI-Anwendungen. Ein Agent verbindet sich mit jedem MCP-Server und lässt sein LLM die von ihm angebotenen Tools aufrufen: ein Ticket erstellen, eine Datenbank abfragen, eine Nachricht senden.

Die Verbindungskonfiguration

McpClientConfig beschreibt eine einzelne MCP-Server-Verbindung. Es ist eine StepConfig, sodass der Dispatcher sie in jeden Schritt injiziert, der sie als Parameter deklariert – fügen Sie sie Ihrer Agent-Konfiguration hinzu, und sie wird in Ihrem Workflow verfügbar.

FeldZweck
nameEin logischer Name für die Verbindung.
urlDer MCP-Server-Endpunkt – FastMCP leitet den Transport ab.
auth_modeWie authentifiziert werden soll: none, api_key oder user_token.
api_keyDer statische Schlüssel, der nur verwendet wird, wenn auth_mode api_key ist.
timeoutClient-Timeout in Sekunden.

Authentifizierungsmodi

ModusVerhalten
noneEs werden keine Anmeldeinformationen gesendet.
api_keyEin auf der Verbindung konfigurierter statischer Schlüssel wird als Bearer-Token gesendet.
user_tokenDas Token des anfragenden Benutzers wird weitergeleitet, sodass die externe Aktion diesem Benutzer zugeschrieben wird.

Der user_token-Modus funktioniert nur für vom Benutzer initiierte Chat-Läufe, die das Token des Benutzers enthalten. Geplante, prozessinitiierte, Bot-Kanal- und Agent-zu-Agent-Läufe leiten kein Benutzer-Token weiter und schlagen in diesem Modus fehl – verwenden Sie api_key oder none für diese.

MCP-Tools von einem Schritt aus aufrufen

Fügen Sie ein McpClientConfig-Feld zu Ihrer Agent-Konfiguration hinzu und öffnen Sie dann einen Client innerhalb eines Schritts mit McpClientFactory. McpAuthResolver liest das weitergeleitete Benutzer-Token aus dem Run-Kontext, sodass eine auf den user_token-Modus eingestellte Verbindung im Namen des anfragenden Benutzers agiert.

python
from swiss_ai_hub.core.mcp import McpClientConfig
from swiss_ai_hub.agent.mcp import McpAuthResolver, McpClientFactory


class ResearchAgentConfig(AgentConfig):
    mcp: McpClientConfig


class ResearchAgent(Agent):
    @step()
    async def call_tools(
        self,
        event: UserMessageEvent,
        mcp_config: McpClientConfig,
        run_context: RunContext,
    ) -> StopEvent:
        user_token = await McpAuthResolver.resolve_user_token(run_context)
        async with McpClientFactory.create(mcp_config, user_token=user_token) as mcp_client:
            tools = await mcp_client.list_tools()
            result = await mcp_client.call_tool("create_ticket", {"title": "..."})
        ...

WARNING

McpClientFactory löst einen Fehler aus, wenn auth_mode api_key oder user_token ist, aber die Anmeldeinformationen fehlen. Eine falsch konfigurierte Verbindung schlägt laut fehl, anstatt den Server stillschweigend unauthentifiziert oder mit der falschen Identität aufzurufen.

Der vorgefertigte McpReactAgent

Wenn Sie lediglich einen Agent benötigen, der über die Tools eines MCP-Servers nachdenkt, liefert das SDK den McpReactAgent – einen vollständigen ReAct-Stil-Agent, der die Tools und Ressourcen eines MCP-Servers entdeckt, das LLM sie in einer Schleife auswählen und aufrufen lässt und das Ergebnis streamt. Richten Sie dessen McpClientConfig auf Ihren Server, wählen Sie einen auth_mode und führen Sie ihn aus. Er ist auch die Referenzimplementierung für das obige Muster.

Gebaut mit ❤️ in der Schweiz 🇨🇭