MCP-Server (nodepilot-mcp)
Ein Model-Context-Protocol-Server, mit dem ein KI-Agent
(Claude Desktop/Code oder ein beliebiger MCP-Client) NodePilot-Workflows steuern und bearbeiten
sowie Daten auslesen kann. Wie die np-CLI ist er ein reiner HTTP-Client gegen die bestehende
REST-API — kein neuer Backend-Pfad; jedes Tool ruft einen vorhandenen Endpoint auf oder rechnet
in-proc gegen NodePilot.Core. 116 Tools über 12 Gruppen, plus 3 MCP-Resources.
Agentenwerkzeuge
Die Agentengruppe bietet list_agent_runs, get_agent_events, list_agent_mcp_servers,
discover_agent_mcp_tools, save_agent_mcp_server, list_agent_skills,
import_agent_skill, set_agent_skill_enabled, delete_agent_mcp_server und
delete_agent_skill. Läufe/Ereignisse verwenden die Workflow-Leseberechtigung. Registry-
Lesen benötigt Admin/Operator, Änderungen Admin, Löschen zusätzlich das Destruktiv-Gate.
Discovery kann den registrierten stdio-Prozess starten. Die Transporte des Agenten-Clients
sind unabhängig von diesem stdio-Server.
Installation
Der Server ist kein .NET Global Tool: PackAsTool verträgt das geerbte
net10.0-windows-TFM nicht (NETSDK1146), dotnet pack scheitert also. Ausgeliefert wird per
dotnet publish; der MCP-Client zeigt auf die erzeugte .exe.
# Beide Installer liefern den Server bereits mit: <install>\tools\mcp\nodepilot-mcp.exe.
# Nur aus einem Source-Checkout selbst bauen:
dotnet publish src/NodePilot.Mcp -c Release -o C:\Tools\NodePilot-Mcp
np auth login # der MCP-Server nutzt diese CLI-Session weiter
// .mcp.json — Client auf den Server zeigen
{
"mcpServers": {
"nodepilot": {
"command": "C:\\Tools\\NodePilot-Mcp\\nodepilot-mcp.exe",
"env": { "NODEPILOT_MCP_SERVER": "https://nodepilot.example.com", "NODEPILOT_MCP_PROFILE": "default" }
}
}
}
Konfiguration & Auth
Headless (vom MCP-Client gestartet) → env-first, mit Fallback auf die CLI-Config/-Session:
| Was | Reihenfolge (erstes gewinnt) |
|---|---|
| Server-URL | NODEPILOT_MCP_SERVER › NODEPILOT_SERVER › CLI-config.json-Profil |
| Profil | NODEPILOT_MCP_PROFILE › NODEPILOT_PROFILE › CLI-Default › default |
| Token | NODEPILOT_MCP_TOKEN (Raw-Bearer, CI-Escape) › DPAPI-Session aus np auth login (Auto-Refresh) |
| TLS-Pin | NODEPILOT_MCP_TLS_THUMBPRINT › NODEPILOT_TLS_THUMBPRINT › CLI-Profil (tlsThumbprint) |
| TLS-Bypass | NODEPILOT_MCP_TLS_NO_VERIFY › NODEPILOT_TLS_NO_VERIFY (1/true) — Notnagel, nie gespeichert |
Ohne NODEPILOT_MCP_TOKEN liest der Server die Session aus np auth login bei jeder Anfrage neu.
Ein Login nach dem Start des MCP-Servers wirkt deshalb ab dem nächsten Tool-Aufruf, ohne Neustart.
TLS: Eine fehlerfreie Zertifikatsprüfung (Kette und Hostname) wird akzeptiert, auch wenn
zusätzlich ein Pin konfiguriert ist. Bei einem TLS-Prüffehler entscheidet ein gesetzter
SHA-256-Pin: passt er, wird das Zertifikat akzeptiert — ausdrücklich auch bei einem
Hostnamen-Mismatch; passt er nicht, hilft auch der Bypass nicht. Nur ohne Pin kann
NODEPILOT_MCP_TLS_NO_VERIFY einen Prüffehler übergehen. Ein passender Pin behebt den
Namensfehler nicht, sondern erlaubt dieses konkrete Zertifikat trotz des Fehlers.
Eine URL mit einem Namen aus dem Zertifikat bleibt der reguläre Weg.
Ein Pin aus dem CLI-Profil gilt nur für dessen Server-Origin. Ein ungültiges Fingerprint-Format
führt bei Tool-Aufrufen zu einem reparierbaren Konfigurationsfehler
(np config set tls-thumbprint <SHA256> beziehungsweise none zum Löschen).
Die generischen NODEPILOT_TLS_*-Variablen teilen sich CLI und MCP-Server.
Transport ist stdio (Streamable HTTP ist als spätere Option vorgesehen). Windows-only
(net10.0-windows, DPAPI).
Sicherheit
- Destructive-Gate:
delete_*,force_unlock_workflow,cancel_all_executions,restart_service,test_stepwerden nur beiNODEPILOT_MCP_ALLOW_DESTRUCTIVE=trueregistriert — sonst tauchen sie nicht einmal intools/listauf.get_safety_statuszeigt den Modus. - Secrets: Workflow-Definitionen werden vor Tool-Output redigiert (
secret/apiKey/password/authToken/bearer/connectionString→***). Beipublish/update/apply_workflow_patchwerden echte Secrets per Node-ID aus der gespeicherten Version wiederhergestellt — das***des Agenten überschreibt nie einen echten Wert. Ein***auf einer neuen Node- oder Edge-ID hat kein Original, deshalb wird der Aufruf abgelehnt und nichts gespeichert. Dasselbe gilt für eine Änderung an einem Bedingungs- oder Case-Array, das ein***enthält; diese Änderung erfolgt im Designer. Credentials/Globals geben Secrets nie aus. - Versionsprüfung:
publish_workflow/update_workflow_definitionverlangenexpectedVersion, die Version, dieget_workflow_definitiongeliefert hat. Hat zwischenzeitlich jemand gespeichert, antwortet der Server mit409 workflow_version_conflict, und der neuere Workflow bleibt unverändert. - Annotations: Read-Tools
readOnly, gated Toolsdestructive, enable/disable/lockidempotent.execute_workflowist nicht idempotent: ein erneuter Aufruf startet eine weitere Ausführung. Einen unklar beantworteten Start zuerst über die Ausführungen prüfen.
Tool-Gruppen
-
Abhängigkeiten (lesend):
list_dependency_objects,get_dependencies,get_dependency_evidence. Workflows, Maschinen, Zugangsdaten, globale Variablen und Custom Activities suchen, nach Problemen oder fehlender Verwendung filtern und nach Verwendung sortieren; direkte und mittelbare Verwendung, mögliche Agent-Aufrufe und Fundstellen untersuchen. Berichte berücksichtigen Ordnerrechte, enthalten keine Secret-Werte und weisen Analysegrenzen sowie an den gespeicherten Stand gebundene Folgeseiten aus. Sie beschreiben gespeicherte Konfiguration, keine Ausfallvorhersage. -
Discovery:
whoami,get_safety_status,list_activity_types,get_activity_config_reference,validate_cron -
Workflow lesen:
list_workflows,get_workflow,get_workflow_definition(redigiert),get_workflow_contract, Versionen,export_workflow -
Workflow editieren: lock/unlock/
publish_workflow/update_workflow_definition,validate_workflow_definition,preview/apply_workflow_patch(Merge-by-ID, Secret-Schutz, Validate-before-Save), create/duplicate/enable/disable/rollback/import (JSON viaimport_workflow, SCOrch-.ois_exportviaimport_scorch_workflow), step-test context -
Gated destructive:
test_step(führt eine echte Activity aus; Config-Override zusätzlich nur mit Edit + eigenem Lock), delete/force-unlock/cancel-all -
Executions: list/get/steps/paused-steps,
execute_workflow, cancel/retry/resume,trigger_external_workflow -
Telemetrie: dashboard, coverage/step-health/step-stats,
get_failure_causes,get_operations_graph,query_audit_log(Admin),get_support_diagnostics(Admin) -
DB / text2sql (Admin, nur lesend):
list_db_tables(Schema-Katalog; Secret-Spalten hidden,GlobalVariable.Valuemaskiert),get_db_info(Provider + Row-/Timeout-Limits),run_readonly_sql(ein Read-Only-Statement, Server erzwingt Keyword-Whitelist + Rollback; kein Write-Tool). Secret-Spalten sind auch über Raw-SQL unerreichbar — Ein direkter Verweis liefertprotected_column; Wildcard-Projektionen (SELECT *,alias.*, PostgreSQLTABLE t) und die Serialisierung einer ganzen Zeile (to_json/row_to_json/::text/FOR JSON) einer Tabelle mit Secret-Spalte liefernprotected_row_projection; Ergebnisspalten mit geschützten Namen werden zusätzlich als***maskiert.COUNT(*)funktioniert weiter, explizit benannte, ungeschützte Spalten funktionieren immer. Die Übersetzung natürlicher Sprache nach SQL übernimmt der Agent. -
Supporting: Machines, Credentials, Globals (Secrets nie ausgegeben)
-
Alerting:
get_alerting_catalog(Regel-Vokabular) +list/get/create/update/test_fire_alerting_rule+list_alerting_deliveries(Ledger) (+ gateddelete_alerting_rule; Route-Secrets nie ausgegeben, Webhook-URLs nur als Schema, Host und Port) -
System-Alerts (ADR 0008):
get_system_alert_catalog+list/get/create/update/enable/disable/test_fire_system_alert_policy(+ gateddelete_system_alert_policy) -
Canvas-Assistent (für den Designer-Chat, überwiegend in-proc):
analyze_workflow,get_available_variables,get_failure_context,find_unresolved_references,validate_edge_condition,validate_activity_config,preview_template_resolution,suggest_layout,diff_workflow_definition,get_workflow_node,check_styleguide
Resources
nodepilot://activity-catalog— alle Activity-/Trigger-Typen (Kategorie, isTrigger/isRemote, Output-Params)nodepilot://activity-config-reference— kuratierte per-Activity Config-Key-Schematanodepilot://styleguide— der Workflow-Layout-Styleguide
Vollständige Referenz im Repo: docs/mcp-server.md.