- Erste Schritte
- Best Practices
- Organisationsmodellierung im Orchestrator
- Beste Praktiken für die Automatisierung (Automation Best Practices)
- Optimieren von Unattended-Infrastruktur mithilfe von Maschinenvorlagen
- Organisieren von Ressourcen mit Tags
- Exportieren von Rastern im Hintergrund
- Durchsetzung der Governance der Integration Service-Verbindung auf Benutzerebene
- Mandant
- Über den Kontext „Mandant“
- Suche nach Ressourcen in einem Mandanten
- Verwaltung von Robotern
- Verbindung von Robotern mit Orchestrator
- Speicherung von Roboterzugangsdaten in CyberArk
- Speichern der Kennwörter von Unattended-Robotern im Azure Key Vault (schreibgeschützt)
- Speichern der Anmeldeinformationen von Unattended-Robotern im HashiCorp Vault (schreibgeschützt)
- Speichern der Anmeldeinformationen von Unattended-Robotern im AWS Secrets Manager (schreibgeschützt)
- Löschen von getrennten und nicht reagierenden Unattended-Sitzungen
- Roboter-Authentifizierung
- Roboter-Authentifizierung mit Client-Anmeldeinformationen
- Konfigurieren von Automatisierungsfunktionen
- Solutions (Lösungen)
- Audit
- Einstellungen
- Registrierung
- Cloud Robots
- Übersicht über Cloud Robots
- Ausführen von Unattended-Automatisierungen mit Cloud Robot – VM
- Hochladen Ihres eigenen Image
- Wiederverwenden von benutzerdefinierten Maschinen-Images (für manuelle Pools)
- Zurücksetzen der Anmeldeinformationen für eine Maschine (für manuelle Pools)
- Überwachung
- Sicherheitsupdates
- Testversion anfordern
- Häufig gestellte Fragen
- Konfigurieren einer VPN für Cloud-Roboter
- Konfigurieren einer ExpressRoute-Verbindung
- Live-Streaming und Remotesteuerung
- Events
- Anzeigen und Zugreifen auf Benachrichtigungen
- Anzeigen und Zugreifen auf E-Mail-Benachrichtigungen
- Es werden nur ungelesene Benachrichtigungen angezeigt
- Alle Benachrichtigungen als gelesen markieren
- Alle Benachrichtigungen löschen
- Löschen von Benachrichtigungen
- Abonnieren von Ereignissen
- Abbestellen von Ereignissen
- Automation Suite-Roboter
- Ordnerkontext
- Prozesse
- Jobs
- Apps
- Auslöser
- Protokolle
- Überwachung
- Indizes
- Warteschlangen
- Assets
- Über Assets
- Verwalten von Assets in Orchestrator
- Verwalten von Assets in Studio
- Speichern von Assets im Azure Key Vault (schreibgeschützt)
- Speichern von Assets im HashiCorp Vault (schreibgeschützt)
- Speichern von Assets im AWS Secrets Manager (schreibgeschützt)
- Speichern von Assets in Google Secret Manager (schreibgeschützt)
- Verbindungen
- Geschäftsregeln
- Speicher-Buckets
- MCP-Server
- Über MCP-Server
- MCP-Anwendungsfälle und -Flows
- Testen von MCP-Servern
- Fehlerbehebung für MCP-Server
- MCP-Compliance-Richtlinien
- Testverfahren in Orchestrator
- Ressourcenkatalogdienst
- Integrationen
- Fehlersuche und ‑behebung
Lösungen für häufige Probleme ohne Authentifizierung mit UiPath MCP-Servern, einschließlich Ordnerfehlern, Runtime-Verfügbarkeit, CLI- oder Client-Fehlern und Zuverlässigkeitsmustern für externe Apps und Tools.
Diese Seite behandelt häufige Fehler ohne Authentifizierung beim Ausführen oder Aufrufen von UiPath-MCP-Servern. Informationen zu Authentifizierungsfehlern (401, 403, OAuth) finden Sie unter Fehlerbehebung bei der MCP-Server-Authentifizierung.
400 Ungültige Anforderung: „Ordnerschlüssel ist erforderlich“ (Fehlercode 10500)
Dieser Fehler wird im MCP-Client (z. B. im MCP-Instanz) als HTTP 400 mit Fehlercode 10500 beim ersten Aufruf angezeigt.
Der Endpunkt erfordert einen Ordnerschlüssel, aber bei der MCP-Server-URL fehlt das {folderKey} -Segment.
Stellen Sie sicher, dass die URL den Ordnerschlüssel enthält:
https://cloud.uipath.com/{org}/{tenant}/agenthub_/mcp/{folderKey}/{slug}
https://cloud.uipath.com/{org}/{tenant}/agenthub_/mcp/{folderKey}/{slug}
Der Ordnerschlüssel ist eine GUID, z. B. dfac03c4-b7d6-44f6-86b9-6f61bdd2c681. Sie ist nicht direkt auf der Orchestrator-Benutzeroberfläche sichtbar. So finden Sie ihn:
- Aus dem Browser: Öffnen Sie die Entwicklertools, wählen Sie die Registerkarte Netzwerk aus, navigieren Sie zum Ordner im Orchestrator und suchen Sie nach API-Aufrufen, die das Feld
Keydes Ordners enthalten. - Über die API: Rufen Sie
GET /orchestrator_/api/FoldersNavigation/GetFoldersForCurrentUserauf. Die EigenschaftKeyin jedem Ordnerobjekt ist die GUID. - Auf der Seite „MCP-Server“ : Die angezeigte URL enthält bereits den Ordnerschlüssel.
400 Ungültige Anforderung: „Für diese Aktion ist ein Ordner erforderlich“ (Fehlercode 1101)
Dieser Fehler wird als HTTP 400 mit Fehlercode 1101 aus dem Orchestrator angezeigt, wenn ein Toolaufruf einen Auftrag startet. Er unterscheidet sich vom obigen Fehler beim Ordnerschlüssel.
Die externe Anwendung hat API-Zugriff, ist dem Ordner aber nicht zugewiesen.
- Öffnen Sie den Ordner mit dem MCP-Server in Orchestrator.
- Navigieren Sie zur Registerkarte Einstellungen des Ordners.
- Weisen Sie die externe Anwendung mit den entsprechenden Berechtigungen zu.
Für diesen MCP-Server (400)sind keine Runtimes verfügbar
Bei der ersten Anforderung einer Sitzung (der initialize -Aufruf) oder von Refresh-Tools auf einem codierten oder Befehlsserver gibt die Plattform HTTP 400 mit dem Text No runtimes available for this MCP server.zurück.
Nur codierte, Befehls- und selbst gehostete Server können diesen Fehler zurückgeben. UiPath-, Platform-, Swagger- und Remote-Server lösen immer eine Runtime auf.
| Servertyp | Ursache | Resolution |
|---|---|---|
| Codiert/Befehl | Der Server startet einen Auftrag auf die erste Anforderung. Dieser Fehler bedeutet, dass die Auftragsanforderung akzeptiert wurde, aber kein Auftrag zurückgegeben wurde. | Überprüfen Sie Aufträge im Serverordner auf einen fehlerhaften oder fehlenden Auftrag. |
| Selbst gehostet | Es ist keine lokale Runtime verbunden. | Starten Sie uipath run und bestätigen Sie, dass der Server aktiv angezeigt wird. Aktivieren Sie für die Einrichtung Selbst gehostete MCP-Server. |
Wenn eine etablierte Sitzung ihre Runtime mitten in der Sitzung verliert, gibt die Plattform 404 Not Found anstelle dieses Fehlers zurück.
403 Forbidden
Lizenz nicht verfügbar
Der Orchestrator gibt 403 mit Fehlercode 10000 zurück, wenn für die aufrufende Identität keine Lizenz verfügbar ist. Überprüfen Sie „Administrator“ > „Lizenzen“ in Ihrer Organisation, um zu bestätigen, dass eine Lizenz für die an MCP-Server gebundene Produktversion verfügbar ist.
Die uipath-Ausführung schlägt mit „Sie sind nicht autorisiert“ fehl (403)
Dieser Fehler wird in der uipath run -Befehlsausgabe in der CLI angezeigt.
Wenn Sie uipath run mit Client-Anmeldeinformationen (externe Anwendung) ausführen, ruft das SDK GetFoldersForCurrentUser auf, um UIPATH_FOLDER_PATH in einen Ordnerschlüssel aufzulösen. Dieser Orchestrator-Endpunkt unterstützt keine Client-Anmeldeinformationen-Authentifizierung und weist alle OAuth-Token zurück und akzeptiert nur die interaktive Benutzeranmeldung.
Option 1: Legen Sie den Ordnerschlüssel direkt fest
export UIPATH_FOLDER_KEY=<your-folder-key>
uipath run my-mcp
export UIPATH_FOLDER_KEY=<your-folder-key>
uipath run my-mcp
Das SDK überspringt den GetFoldersForCurrentUser -Aufruf vollständig.
Option 2: Verwenden Sie die interaktive Authentifizierung
uipath auth
uipath auth
Playwright MCP „Streamable HTTP Post Antwort ohne Antwort abgeschlossen“ Fehler
Wenn Sie den Playwright MCP-Server als Befehls-MCP-Server verwenden, kann der aufrufende Client (z. B. ChatGPT oder Claude) zeitweise angezeigt werden:
„Tool vom Typ MCP ist fehlgeschlagen, weil: Streamable HTTP Post-Antwort ohne Antwort auf Anforderung mit ID X abgeschlossen wurde“
Dies ist ein bekanntes Problem in der Streamable HTTP-Implementierung von Playwright MCP, kein UiPath-Problem. Bei Vorgängen mit langer Ausführungszeit, z. B. bei großen DOM-Snapshots oder Seitennavigationen mit Wartezeiten, kann der Playwright MCP-Server die Verbindung unterbrechen und die Sitzung vorzeitig beenden. Der UiPath-MCP-Client zeigt dies korrekt als Fehler gemäß der MCP-Protokollspezifikation an, und Folgeanforderungen schlagen mit „Sitzung nicht gefunden.“ fehl.
Häufige Muster
Die folgenden Muster helfen, die oben dokumentierten Fehler zu vermeiden.
Überprüfen externer App-Berechtigungen
Verwenden Sie diese Sequence, um zu bestätigen, dass eine externe Anwendung vollständig für den MCP-Serverzugriff konfiguriert ist, indem Sie Authentifizierung, Ordnerauflösung und einen Live-Tool-Aufruf kombinieren:
# 1. Authenticate
uipath auth \
--client-id "<client-id>" \
--client-secret "<client-secret>" \
--base-url "https://cloud.uipath.com/{org}/{tenant}" \
--scope "OR.Default OR.Execution OR.Jobs"
# 2. Set folder key to skip folder lookup issues
echo "UIPATH_FOLDER_KEY=<your-folder-key>" >> .env
# 3. Test with MCP Inspector or cURL
npx @modelcontextprotocol/inspector@0.22.0
# 1. Authenticate
uipath auth \
--client-id "<client-id>" \
--client-secret "<client-secret>" \
--base-url "https://cloud.uipath.com/{org}/{tenant}" \
--scope "OR.Default OR.Execution OR.Jobs"
# 2. Set folder key to skip folder lookup issues
echo "UIPATH_FOLDER_KEY=<your-folder-key>" >> .env
# 3. Test with MCP Inspector or cURL
npx @modelcontextprotocol/inspector@0.22.0
Das vollständige Setup der externen Anwendung, einschließlich Scopes und Ordnerzuweisung, finden Sie unter Authentifizierung mit einer externen Anwendung.
Fehlerbehandlung in Python-MCP-Servern
Behandeln Sie beim Erstellen codierter MCP-Server Fehler, damit sie nützliche Nachrichten für das aufrufende LLM generieren. FastMCP erkennt ausgelöste Ausnahmen und gibt sie als MCP-Fehlerantworten zurück:
from mcp.server.fastmcp import FastMCP
import httpx
import os
mcp = FastMCP("My Server")
@mcp.tool()
async def get_customer(customer_id: str) -> dict:
"""Retrieve customer by ID.
Args:
customer_id: Customer identifier (e.g., "CUST-12345")
"""
if not customer_id or not customer_id.startswith("CUST-"):
raise ValueError(f"Invalid customer_id format: '{customer_id}'. Expected 'CUST-XXXXX'.")
try:
async with httpx.AsyncClient(timeout=30) as client:
response = await client.get(
f"https://api.internal.com/customers/{customer_id}",
headers={"Authorization": f"Bearer {os.getenv('CRM_API_KEY')}"},
)
if response.status_code == 404:
raise RuntimeError(f"Customer {customer_id} not found.")
response.raise_for_status()
return response.json()
except httpx.TimeoutException:
raise RuntimeError("CRM API timed out. Try again.")
except httpx.HTTPStatusError as e:
raise RuntimeError(f"CRM API returned {e.response.status_code}.")
from mcp.server.fastmcp import FastMCP
import httpx
import os
mcp = FastMCP("My Server")
@mcp.tool()
async def get_customer(customer_id: str) -> dict:
"""Retrieve customer by ID.
Args:
customer_id: Customer identifier (e.g., "CUST-12345")
"""
if not customer_id or not customer_id.startswith("CUST-"):
raise ValueError(f"Invalid customer_id format: '{customer_id}'. Expected 'CUST-XXXXX'.")
try:
async with httpx.AsyncClient(timeout=30) as client:
response = await client.get(
f"https://api.internal.com/customers/{customer_id}",
headers={"Authorization": f"Bearer {os.getenv('CRM_API_KEY')}"},
)
if response.status_code == 404:
raise RuntimeError(f"Customer {customer_id} not found.")
response.raise_for_status()
return response.json()
except httpx.TimeoutException:
raise RuntimeError("CRM API timed out. Try again.")
except httpx.HTTPStatusError as e:
raise RuntimeError(f"CRM API returned {e.response.status_code}.")
Eine vollständige Anleitung für die ersten Schritte finden Sie im uipath-mcp -Schnellstart.
Wiederholungslogik für MCP-Clientcode
Wenn Sie MCP-Server von einem codierten Agent aus aufrufen, verwenden Sie die Wiederholungslogik für vorübergehende Fehler:
import asyncio
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async def call_with_retry(url: str, token: str, tool: str, args: dict, retries: int = 3):
"""Call an MCP tool with exponential backoff."""
for attempt in range(retries):
try:
async with streamablehttp_client(
url=url,
headers={"Authorization": f"Bearer {token}"},
timeout=60,
) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
result = await session.call_tool(tool, args)
if result.isError:
raise RuntimeError(result.content[0].text if result.content else "Unknown error")
return result
except Exception as e:
if attempt < retries - 1:
wait = 2 ** attempt
await asyncio.sleep(wait)
else:
raise
import asyncio
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
async def call_with_retry(url: str, token: str, tool: str, args: dict, retries: int = 3):
"""Call an MCP tool with exponential backoff."""
for attempt in range(retries):
try:
async with streamablehttp_client(
url=url,
headers={"Authorization": f"Bearer {token}"},
timeout=60,
) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
result = await session.call_tool(tool, args)
if result.isError:
raise RuntimeError(result.content[0].text if result.content else "Unknown error")
return result
except Exception as e:
if attempt < retries - 1:
wait = 2 ** attempt
await asyncio.sleep(wait)
else:
raise
- 400 Ungültige Anforderung: „Ordnerschlüssel ist erforderlich“ (Fehlercode 10500)
- 400 Ungültige Anforderung: „Für diese Aktion ist ein Ordner erforderlich“ (Fehlercode 1101)
- Für diesen MCP-Server (400)sind keine Runtimes verfügbar
- 403 Forbidden
- Lizenz nicht verfügbar
- Die uipath-Ausführung schlägt mit „Sie sind nicht autorisiert“ fehl (403)
- Playwright MCP „Streamable HTTP Post Antwort ohne Antwort abgeschlossen“ Fehler
- Häufige Muster
- Überprüfen externer App-Berechtigungen
- Fehlerbehandlung in Python-MCP-Servern
- Wiederholungslogik für MCP-Clientcode