DQE One Standalone stellt einen Model-Context-Protocol-(MCP)-Endpoint bereit, über den KI-Assistenten wie Claude Ihre Processes auflisten, erstellen und ausführen, Runs prüfen und Dateien hochladen können — dieselben Operationen wie die REST API, gesteuert per Dialog.
POST https://{DOMAIN}/mcp, Protokollversion
2024-11-05, 18 Tools,
5 Prompts, keine Ressourcen. Einfache JSON-Antworten
(kein Streaming).
Einen KI-Assistenten verbinden
Der Assistent handelt als Sie und sieht nur Ihre eigenen Objekte. Im Hintergrund ruft jedes Tool die REST API mit Ihrem API token auf, daher müssen Sie einen API token generiert haben (My Account > API Token), auch wenn Sie sich per OAuth verbinden.
Option A — mit einem Header (Claude Code, Konfigurationsdatei von Claude Desktop)
Erstellen Sie die Basic-Zugangsdaten aus Ihrer E-Mail-Adresse und Ihrem Token:
Claude Code (starten Sie die Sitzung anschließend neu; MCP-Server werden beim Start geladen):
Claude Desktop — bearbeiten Sie
claude_desktop_config.json (macOS
~/Library/Application Support/Claude/, Windows
%APPDATA%\Claude\) und starten Sie neu:
Option B — OAuth (benutzerdefinierte Connectors, zum Beispiel in claude.ai)
Geben Sie nur die URL https://{DOMAIN}/mcp ein.
Der Assistent ermittelt dann alles Weitere selbst:
-
Der Server antwortet mit 401 und einem
WWW-Authenticate-Header, der auf/.well-known/oauth-protected-resourceverweist. -
Der Client liest
/.well-known/oauth-authorization-serverund registriert sich über/oauth/register. -
Er öffnet
/oauth/authorize. Sie müssen im selben Browser bei DQE One angemeldet sein; prüfen Sie den Client-Namen und klicken Sie auf Authorize. -
Der Client tauscht den Code bei
/oauth/tokenein (PKCES256erforderlich) und erhält ein Bearer-Token mit einer Gültigkeit von 1 Stunde sowie ein Refresh-Token.
Tools (18)
Mit * markierte Argumente sind erforderlich.
Ein Tool, das fehlschlägt, antwortet dennoch mit HTTP 200
und isError: true sowie der Meldung der zugrunde
liegenden REST API.
| Tool | Argumente | Rückgabe |
|---|---|---|
| list_processes | — |
[{id,name,type,isDraft,lastRunId}]
(Ihre Processes)
|
| get_process |
id*
|
Process-Details: Quelle, Datei, Credentials, ruleSet, lastRunId, Datumsangaben |
| list_runs |
processId, runId, kind
|
Ein Run (mit runId) oder
[{id,processId,type,startedOn,updatedOn,status,outputFile,count,error}].
processId hat Vorrang vor kind.
|
| list_files | — |
[{id,name,headers,rows,process_id}]
|
| get_file |
id*
|
Ein Dateieintrag |
| list_rulesets | — |
[{id,setId,label,updatedOn,source}].
Es wird kein Veröffentlichungsstatus zurückgegeben,
ungeachtet der Tool-Beschreibung.
|
| list_credentials | — |
[{id,name}]. Der Connector-Typ wird
nicht zurückgegeben.
|
| get_credential |
id*
|
{id,login,name,type,status,process};
niemals das Passwort oder der Schlüssel
|
| get_upload_status |
token*
|
{status: pending|done|expired, file_id, ttl_seconds}
|
| check_dataverse_table |
credential_id*, table_name*
|
{table,exists,record_count}. Erfordert
ein Dynamics-Credential.
|
| query_dataverse_table |
credential_id*, table_name*,
top (100, max. 5000)
|
{table,exists,total_count,returned_count,records}
—
gibt echte Kundendatensätze an den Assistenten zurück.
|
| start_marketing_campaign | — |
Der Text des Prompts marketing_campaign;
führt nichts aus.
|
| create_process WRITE |
name*, kind*, source*,
primaryKey*, fields*;
optional credential, ruleSet,
file, object,
input_file_path, output_dir_path,
description
|
{"status":"success","id":N}. Es
gelten dieselben Regeln wie bei
Processes → createProcess.
|
| run_process WRITE |
id*
|
{"status":"success","message":"Process Enqueue","run_id":"101"}
— asynchron
|
| upload_file WRITE | — |
{url, token, expires_in: 3600, instructions}
— ein Upload-Link für den Browser
|
| delete_file WRITE DESTRUCTIVE |
id*
|
Endgültig; wird abgelehnt, solange die Datei mit einem Process verknüpft ist |
| create_credential WRITE |
name*, type* (salesforce,
sftp, bigquery); login, client_id,
endpoint, port,
password, email, id,
key_id, pvt
|
{"status":"success","id":N}
|
| delete_credential WRITE DESTRUCTIVE |
id*
|
Wird abgelehnt, solange ein Process es verwendet |
Was von den Tool-Beschreibungen abweicht
-
create_processkannfilters,sync,autoMerge,mergeThreshold,metaToReparent,allowEmpty,nextoderreject_dir_pathnicht setzen — daher lassen sich SFTP-Processes nicht über MCP erstellen.fieldshat je nachkindeinen anderen Aufbau (siehe Processes), und fürcheck_duplicatelautet er{"<setId>": ["<matching rule label>"]}. -
create_credentialbietet 3 der 6 REST-Typen an. Die Secrets laufen durch den Kontext des Assistenten (und werden in die Debug-Logs des Servers geschrieben): Erstellen Sie Credentials stattdessen in der Weboberfläche. -
run_processkann ein normales Ergebnis zurückgeben, das{"status":"error"}enthält (Entwurfs-Process, keine SFTP-Datei, Fehler bei der Warteschlange): Lesen Sie den Body. - Kein Tool liest die Matching-Bezeichnungen eines RuleSets, bricht einen Run ab, lädt Ergebnisse herunter, führt zusammen oder synchronisiert. Prüfen Sie die Ergebnisse in der Weboberfläche.
Prompts (5)
prompts/list gibt fünf parameterlose Prompts
zurück. prompts/get gibt
{description, messages, instructions} zurück
(instructions ist eine nicht standardkonforme
Ergänzung). Es gibt keine MCP-Ressourcen.
| Prompt | Zweck |
|---|---|
| create_process_dedup |
Geführte Erstellung eines Deduplizierungs-Process
(er fragt weiterhin nach Filtern, Reparenting
und Sync, die create_process nicht
setzen kann).
|
| marketing_campaign |
Siebenstufiger Dynamics-Ablauf:
query_dataverse_table →
create_process + run_process
(check_email, check_phone,
check_duplicate) → list_runs.
Der SMS-Versand ist “demnächst verfügbar”.
|
| run_existing_process |
list_processes → get_process
→ run_process → list_runs.
|
| check_process_status | Den Status eines Process prüfen. |
| manage_credentials | Ablauf der Credential-Verwaltung. |
Eine Datei über MCP hochladen
-
Der Assistent ruft
upload_fileauf und erhälthttps://{DOMAIN}/upload/<token>/, gültig für 1 Stunde. -
Sie öffnen den Link in einem Browser
und legen eine
.csv-,.xlsx- oder.xls-Datei ab (eindeutige Spaltenüberschriften, keine Leerzeichen, eine Datei pro Link). -
Der Assistent fragt
get_upload_statusregelmäßig ab, bisdoneerscheint; damit erhält er diefile_id. -
create_processmit"source":"csv"und"file": <file_id>.
Durchgespieltes Beispiel — eine CSV-Datei deduplizieren
-
list_rulesets→ wählen Sie eines mitsource: "csv"; notieren Sie dessenid(7) undsetId(RS_ABC). -
upload_file, die URL an den Benutzer weitergeben, dannget_upload_statusbisdone(file_id12). -
get_file {"id":12}→ prüfen, ob der Primärschlüssel inheadersenthalten ist. -
Die Matching-Bezeichnungen des RuleSets ermitteln.
Kein MCP-Tool liefert sie: Fragen Sie
den Benutzer oder lesen Sie
matching.Labels[].valuemitgetRulesetin der REST API. -
create_process:
-
run_process {"id":42}→run_id"101". -
list_runs {"runId":101}, bisstatusden WertFinishedoderFailedhat. - Prüfen Sie die Duplikate in der DQE One Weboberfläche.
Einschränkungen und Sicherheitshinweise
Diese Punkte beschreiben das aktuelle Verhalten des Produkts.
- Keine Scopes, kein schreibgeschützter Modus: Ein verbundener Assistent kann alles tun, was Ihr Konto kann. Verbinden Sie nur Assistenten, denen Sie vertrauen.
- Die OAuth-Client-Registrierung ist offen (keine Authentifizierung): Jeder Client kann sich registrieren und den Namen wählen, der auf dem Zustimmungsbildschirm angezeigt wird. Prüfen Sie den Namen und die Weiterleitung, bevor Sie auf Authorize klicken. Sie müssen weiterhin angemeldet sein und zustimmen.
- Refresh-Tokens laufen nie ab und werden nicht rotiert; Tokens werden im Klartext in der Datenbank gespeichert; es gibt keinen Bildschirm zum Widerrufen. Administratoren können ein Token in der Datenbank widerrufen.
- Der Server schreibt Request-Bodys und Tool-Argumente — einschließlich der Geheimnisse von Credentials — in seine Debug-Ausgabe; ob diese in Logs landet, hängt von Ihrer Bereitstellung ab.
- Kein Rate Limiting; CORS ist für jeden Origin offen; der veraltete SSE-Transport hält Sitzungen im Arbeitsspeicher und funktioniert nur mit einem einzigen Worker.
Der einzige Einstiegspunkt: Senden Sie eine JSON-RPC-Nachricht und erhalten Sie ein JSON-Objekt zurück.
mcpRpc
Anfrage
Senden Sie einen JSON-RPC-2.0-Body. initialize
und ping erfordern keine Authentifizierung;
alles andere erfordert Basic oder Bearer.
{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"list_processes","arguments":{}}}.
Das Ergebnis ist
{"content":[{"type":"text","text":"<JSON as a string>"}]};
bei einem Fehler ist isError true,
aber der HTTP-Status bleibt 200.
-32700 Parse-Fehler
(HTTP 400); -32601 unbekannte Methode
oder unbekanntes Tool; -32602 unbekannter
Prompt. Nicht autorisiert ist ein HTTP 401 mit einem
WWW-Authenticate-Header, der die OAuth-Discovery
startet. Es gibt kein Batching, und resources/*
ist nicht implementiert.
Codebeispiele
Eine JSON-RPC-Anfrage senden
Parameter
| Feld | Beschreibung | Typ | Pflicht / Opt. |
|---|---|---|---|
| jsonrpc |
Werte:
2.0
|
String | Pflicht |
| id | Integer | Optional | |
| method |
initialize und ping
erfordern keine Authentifizierung. Alle anderen
Methoden erfordern sie. resources/*
ist nicht implementiert (-32601).
Werte:
initialize, ping,
tools/list, tools/call,
prompts/list, prompts/get
|
String | Pflicht |
| params | Object | Optional |
email:api_token)
oder ein OAuth-Bearer-Token. Die Konsole unten verwendet
Basic.
Antwort
JSON-RPC-Antwort. Ein fehlschlagendes Tool liefert dennoch HTTP 200 mit result.isError = true.. HTTP-Status 200.
| Schlüssel | Beschreibung | Typ |
|---|---|---|
| jsonrpc | String | |
| id | Integer | |
| result | Object | |
| error | Object |
Antwortbeispiel
Beispielantwort
Fehler
| HTTP | Body / Bedeutung |
|---|---|
| 400 | Parse-Fehler (-32700). |
| 401 | Nicht autorisiert. Enthält einen Header WWW-Authenticate: Bearer resource_metadata=..., der die OAuth-Discovery auslöst. |
API testen
Klicken Sie auf die Schaltfläche unten, um diesen Endpoint live in Ihrem Browser zu testen.
tools/call kann
Runs starten oder Daten löschen.
Konsole öffnen
Gibt grundlegende Server-Informationen ohne Authentifizierung
zurück. Mit Accept: text/event-stream wird stattdessen
der veraltete SSE-Transport geöffnet (nur Basic-Authentifizierung;
einzelner Worker).
mcpInfo
Anfrage
Senden Sie eine GET-Anfrage.
Codebeispiele
Server-Informationen oder veralteter SSE-Stream
Parameter
Dieser Endpoint benötigt keine Parameter.
Antwort
Server-Informationen oder Event-Stream.. HTTP-Status 200.
Antwortbeispiel
Beispielantwort
Fehler
| HTTP | Body / Bedeutung |
|---|---|
| Für diesen Endpoint ist keine Fehlerantwort dokumentiert. | |
API testen
Klicken Sie auf die Schaltfläche unten, um diesen Endpoint live in Ihrem Browser zu testen.
Konsole öffnen
RFC-9728-Metadaten, mit denen Clients den Autorisierungsserver ermitteln.
oauthProtectedResource
Anfrage
Senden Sie eine GET-Anfrage.
Codebeispiele
Metadaten der geschützten Ressource (RFC 9728)
Parameter
Dieser Endpoint benötigt keine Parameter.
Antwort
{resource, authorization_servers, bearer_methods_supported}. HTTP-Status 200.
Antwortbeispiel
Beispielantwort
Fehler
| HTTP | Body / Bedeutung |
|---|---|
| Für diesen Endpoint ist keine Fehlerantwort dokumentiert. | |
API testen
Klicken Sie auf die Schaltfläche unten, um diesen Endpoint live in Ihrem Browser zu testen.
Konsole öffnen
RFC-8414-Metadaten: Endpoints und unterstützte Abläufe.
oauthServerMetadata
Anfrage
Senden Sie eine GET-Anfrage.
Codebeispiele
Metadaten des Autorisierungsservers (RFC 8414)
Parameter
Dieser Endpoint benötigt keine Parameter.
Antwort
Endpoints, Grant Types (authorization_code, refresh_token), PKCE S256, Authentifizierungsmethoden none/client_secret_post.. HTTP-Status 200.
Antwortbeispiel
Beispielantwort
Fehler
| HTTP | Body / Bedeutung |
|---|---|
| Für diesen Endpoint ist keine Fehlerantwort dokumentiert. | |
API testen
Klicken Sie auf die Schaltfläche unten, um diesen Endpoint live in Ihrem Browser zu testen.
Konsole öffnen
Dynamische Client-Registrierung (RFC 7591). Offen: keine Authentifizierung.
oauthRegister
Anfrage
Senden Sie einen JSON-Body mit mindestens redirect_uris.
Codebeispiele
Dynamische Client-Registrierung (RFC 7591)
Parameter
| Feld | Beschreibung | Typ | Pflicht / Opt. |
|---|---|---|---|
| redirect_uris | Nicht leere Liste von Callback-URLs. | Array | Pflicht |
| client_name | Wird dem Benutzer auf der Zustimmungsseite angezeigt. | String | Optional |
| token_endpoint_auth_method |
client_secret_post gibt zusätzlich
einmalig ein client_secret zurück.
Werte:
none, client_secret_post
· Standardwert: "none"
|
String | Optional |
Antwort
Client registriert (client_secret wird bei client_secret_post einmalig zurückgegeben).. HTTP-Status 201.
Antwortbeispiel
Beispielantwort
Fehler
| HTTP | Body / Bedeutung |
|---|---|
| 400 | Ungültige Anfrage. |
Die Seite, auf der Sie einen Connector genehmigen. Sie wird
in einem Browser geöffnet und nicht aus
Code aufgerufen. Sie müssen im selben Browser bei DQE One
angemeldet sein; PKCE S256 ist verpflichtend;
der Code gilt 5 Minuten.
oauthAuthorize
Anfrage
Der Client leitet Ihren Browser auf diese URL weiter.
Beispiel-URL
Parameter
| Feld | Beschreibung | Typ | Pflicht / Opt. |
|---|---|---|---|
| client_id | Von /oauth/register zurückgegebene Client-ID. | String | Pflicht |
| redirect_uri | Muss exakt mit einer der registrierten Redirect-URIs übereinstimmen. | String | Pflicht |
| response_type |
code (Standard).
|
String | Optional |
| code_challenge | PKCE-Challenge. | String | Pflicht |
| code_challenge_method |
Muss S256 sein.
|
String | Pflicht |
| state | Opaker Wert, der an den Client zurückgegeben wird. | String | Optional |
Antwort
Zustimmungsseite (Allow / Deny).. HTTP-Status 200.
Antwortbeispiel
Beispielantwort
Fehler
| HTTP | Body / Bedeutung |
|---|---|
| 400 | Ungültige Anfrage. |
Tauscht einen Autorisierungscode gegen Tokens ein oder erneuert ein Access-Token. Das Access-Token gilt 1 Stunde; Refresh-Tokens laufen nicht ab und werden nicht rotiert.
oauthToken
Anfrage
Senden Sie einen formularcodierten POST.
Codebeispiele
Einen Code eintauschen oder ein Token erneuern
Parameter
| Feld | Beschreibung | Typ | Pflicht / Opt. |
|---|---|---|---|
| grant_type |
Werte:
authorization_code,
refresh_token
|
String | Pflicht |
| code | Autorisierungscode (5 Minuten, einmalig verwendbar). | String | Optional |
| redirect_uri | Derselbe Wert wie in der Autorisierungsanfrage. | String | Optional |
| code_verifier | PKCE-Verifier. | String | Optional |
| refresh_token | Für grant_type refresh_token. | String | Optional |
| client_id | String | Optional | |
| client_secret | Nur für Clients, die mit client_secret_post registriert wurden. | String | Optional |
Antwort
{access_token, token_type: Bearer, expires_in: 3600, refresh_token, scope}. HTTP-Status 200.
Antwortbeispiel
Beispielantwort
Fehler
| HTTP | Body / Bedeutung |
|---|---|
| 400 | invalid_grant / invalid_client. |
Die Browser-Seite hinter dem Link, den das Tool
upload_file zurückgibt. Das Token in der URL
ist das einzige Credential.
uploadPage
Anfrage
Sie öffnen den Link in einem Browser.
Beispiel-URL
Parameter
| Feld | Beschreibung | Typ | Pflicht / Opt. |
|---|---|---|---|
| token | String | Pflicht |
Antwort
HTML-Seite.. HTTP-Status 200.
Antwortbeispiel
Beispielantwort
Fehler
| HTTP | Body / Bedeutung |
|---|---|
| Für diesen Endpoint ist keine Fehlerantwort dokumentiert. | |
Was die Upload-Seite sendet, wenn Sie eine Datei ablegen. Sie rufen sie normalerweise nie selbst auf.
uploadFile
Anfrage
Ein multipart/form-data-POST mit
dem Feld file.
.csv, .xlsx, .xls;
Spaltenüberschriften eindeutig und ohne Leerzeichen. Keine
serverseitige Größenbeschränkung.
Codebeispiele
Die Datei hochladen
Parameter
| Feld | Beschreibung | Typ | Pflicht / Opt. |
|---|---|---|---|
| token | String | Pflicht | |
| file | String (file) | Pflicht |
Antwort
{status: success, file_id, name}. HTTP-Status 200.
Antwortbeispiel
Beispielantwort
Fehler
| HTTP | Body / Bedeutung |
|---|---|
| 400 | Falsche Dateiendung, ungültige Spaltenüberschriften oder Link bereits verwendet. |
Siehe auch
Verknüpfung mit