degree-dynamicweb-mcp
degree-dynamicweb-mcp
MCP-Server (Model Context Protocol) für die DynamicWeb 10 Admin API. Gibt Claude Code vollen Zugriff auf die Verwaltung von DynamicWeb-Item-Typen, -Feldern, -Seiten, -Absätzen und API-Discovery – ohne die DW-Admin-Oberfläche zu berühren.
Tools
Item-Typen
Tool | Description |
| Alle Item-Typen auflisten |
| Details und Einschränkungen eines Item-Typs abrufen |
| Item-Typ mit Feldern, Gruppen und Einschränkungen in einem Aufruf erstellen |
| Einstellungen aktualisieren (Name, Kategorie, Symbol, Verfügbarkeit usw.) |
| Einschränkungen aktualisieren (erlaubte Eltern, Kinder, Websites usw.) |
| Einen Item-Typ löschen |
Schema-Wartung
Das Bereitstellen von Item-Typ-XML berührt die Datenbank nicht. Bis das Schema synchronisiert ist, speichert ein Feld, dessen Spalte fehlt, ohne Fehler und behält nichts.
Tool | Description |
| Felder melden, deren DB-Spalte fehlt, sowie Spalten, die das XML nicht mehr deklariert |
| Item-Typ-XML neu laden und die fehlenden Tabellen und Spalten erstellen |
| Die Seiten und Absätze auflisten, die einen Item-Typ verwenden |
| Destruktiv. Verwaiste Zeilen aus der Tabelle eines Item-Typs löschen |
Nach dem Bereitstellen neuer XML: dw_itemtype_sync_schema, dann dw_itemtype_health. Der Sync-Endpunkt antwortet auch dann mit „ok“, wenn er mittendrin abgebrochen wurde. Der Health-Check verrät dir also, ob es funktioniert hat – und /Files/System/Log/items/ActivationWorkflow enthält die eigentlichen Fehler. Ein Item-Typ, dessen Tabelle vollständig fehlt, erscheint im Health-Bericht überhaupt nicht.
Felder
Tool | Description |
| Felder eines Item-Typs auflisten |
| Ein Feld hinzufügen oder aktualisieren |
| Ein Feld löschen |
| Alle verfügbaren Editor-Typen aus der DW-Instanz auflisten (nicht fest codiert) |
Seiten
Tool | Description |
| Seiten auflisten, optional nach Bereich oder übergeordneter Seite gefiltert |
| Eine Seite mit allen Item-Feldern abrufen |
| Eine Seite unter einer übergeordneten Seite erstellen |
| Item-Feldwerte auf einer Seite festlegen |
| Eine Seite löschen |
| Alle Bereiche (Websites) auflisten |
Absätze
Tool | Description |
| Absätze auf einer Seite auflisten |
| Einen Absatz mit allen Item-Feldern abrufen |
| Einen Absatz auf einer Seite erstellen |
| Item-Feldwerte auf einem Absatz festlegen |
| Einen Absatz löschen |
dw_page_set_fields und dw_paragraph_set_fields verifizieren ihren eigenen Schreibvorgang. Ein Feldname, den der Item-Typ nicht deklariert, ist ein Fehler, der die vorhandenen Namen auflistet. Nach dem Speichern lesen sie das Item erneut aus und geben zurück, was es jetzt enthält. DW antwortet mit „ok“, unabhängig davon, ob ein Wert gespeichert wurde. Ein Tippfehler in einem SystemName war daher früher nicht von einem erfolgreichen Schreibvorgang zu unterscheiden.
Produkte
Tool | Description |
| Produkte auflisten, optional nach Gruppe oder Suche gefiltert |
| Ein einzelnes Produkt abrufen (vollständiges Modell inkl. CustomFields/CategoryFields). Gibt für ein fehlendes Produkt |
| Top-Level-Felder, customFields und categoryFields eines Produkts aktualisieren |
| Ein oder mehrere Produkte löschen |
| Einen prozentualen Rabatt auf DefaultPrice für eine Gruppe oder Produktliste anwenden |
dw_product_update akzeptiert drei Eingabe-Maps:
fields– Top-Level-Produktfelder (Name, DefaultPrice, Stock usw.)customFields– globale Produkt-Custom-Field-Werte, mit SystemName als SchlüsselcategoryFields– Produktkategorie-Feldwerte, mit SystemName als Schlüssel
Produktschema
Verwalte das PIM-Datenmodell: Produktkategorien (Gruppen von Attributen) und Produktfelder (die Attribute selbst).
Tool | Description |
| Die 15 Produktfeldtypen auflisten (TypeId + Aliase) |
| Produktkategorien auflisten |
| Eine Produktkategorie erstellen oder aktualisieren |
| Kategorien löschen (3-stufiger DW-Workflow wird intern abgewickelt) |
| Felder auflisten, die zu einer Kategorie gehören |
| Ein Feld in einer Kategorie erstellen oder aktualisieren (akzeptiert Typ-Aliase) |
| Felder aus einer einzelnen Kategorie löschen |
Dateien
Tool | Description |
| Dateien in einem Verzeichnis auflisten, optional nach Erweiterung gefiltert |
| Unterverzeichnisse auflisten |
Delivery API (schreibgeschützt)
Tool | Description |
| Bereiche von der Delivery API abrufen |
| Seiten mit Inhalt abrufen |
| Absätze mit Inhalt abrufen |
API-Discovery
Tool | Description |
| Die Swagger-Spezifikation nach Endpunkten anhand eines Schlüsselworts durchsuchen |
| Anfrage-/Antwortschema für einen Endpunkt abrufen |
| Roher Aufruf eines beliebigen Admin-API-Endpunkts |
Related MCP server: TeamDesk MCP Server
Einrichtung
1. DW-API-Token abrufen
Gehe im DynamicWeb Admin zu Settings > Developer > API Keys und erstelle einen neuen Schlüssel mit vollem Zugriff.
2. KI-Client konfigurieren
Füge zu .mcp.json in deinem Projekt hinzu:
{
"mcpServers": {
"dynamicweb": {
"command": "npx",
"args": ["-y", "@degree-as/dynamicweb-mcp"],
"env": {
"DW_BASE_URL": "https://your-dw-instance",
"DW_API_TOKEN": "your-token"
}
}
}
}Bearbeite ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) oder %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"dynamicweb": {
"command": "npx",
"args": ["-y", "@degree-as/dynamicweb-mcp"],
"env": {
"DW_BASE_URL": "https://your-dw-instance",
"DW_API_TOKEN": "your-token"
}
}
}
}Füge zu ~/.cursor/mcp.json (global) oder .cursor/mcp.json (Projekt) hinzu:
{
"mcpServers": {
"dynamicweb": {
"command": "npx",
"args": ["-y", "@degree-as/dynamicweb-mcp"],
"env": {
"DW_BASE_URL": "https://your-dw-instance",
"DW_API_TOKEN": "your-token"
}
}
}
}Füge .vscode/mcp.json zu deinem Projekt hinzu (Hinweis: verwendet servers, nicht mcpServers):
{
"servers": {
"dynamicweb": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@degree-as/dynamicweb-mcp"],
"env": {
"DW_BASE_URL": "https://your-dw-instance",
"DW_API_TOKEN": "your-token"
}
}
}
}Bearbeite ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"dynamicweb": {
"command": "npx",
"args": ["-y", "@degree-as/dynamicweb-mcp"],
"env": {
"DW_BASE_URL": "https://your-dw-instance",
"DW_API_TOKEN": "your-token"
}
}
}
}Konfiguriere über die MCP-Einstellungen von Cline oder füge es zu dessen Konfiguration hinzu:
{
"mcpServers": {
"dynamicweb": {
"command": "npx",
"args": ["-y", "@degree-as/dynamicweb-mcp"],
"env": {
"DW_BASE_URL": "https://your-dw-instance",
"DW_API_TOKEN": "your-token"
}
}
}
}Füge zu Zeds settings.json hinzu (Hinweis: verwendet context_servers):
{
"context_servers": {
"dynamicweb": {
"source": "custom",
"command": "npx",
"args": ["-y", "@degree-as/dynamicweb-mcp"],
"env": {
"DW_BASE_URL": "https://your-dw-instance",
"DW_API_TOKEN": "your-token"
}
}
}
}Füge zu ~/.continue/config.yaml hinzu:
mcpServers:
- name: dynamicweb
command: npx
args:
- -y
- "@degree-as/dynamicweb-mcp"
env:
DW_BASE_URL: https://your-dw-instance
DW_API_TOKEN: your-token3. Client neu starten
Der MCP-Server startet automatisch, wenn dein KI-Client geladen wird.
Lokale Entwicklung
Wenn du statt des veröffentlichten Pakets aus dem Quellcode ausführen möchtest:
git clone https://github.com/Degree-AS/degree-dynamicweb-mcp.git
cd degree-dynamicweb-mcp
npm install
npm run buildVerwende dann "command": "node", "args": ["/path/to/degree-dynamicweb-mcp/dist/index.js"] in .mcp.json.
Feldtyp-Aliase
Item-Typ-Felder (dw_field_save, dw_itemtype_create)
Beim Erstellen von Feldern kannst du kurze Aliase anstelle der vollständigen .NET-Klassennamen verwenden:
Alias | Editor |
| TextEditor |
| LongTextEditor |
| RichTextEditor |
| RichTextEditorLight |
| FileEditor |
| FolderEditor |
| MediaEditor |
| LinkEditor |
| ItemLinkEditor |
| ItemRelationListEditor |
| IntegerEditor |
| DecimalEditor |
| DateEditor |
| DateTimeEditor |
| CheckboxEditor |
| CheckboxListEditor |
| DropDownListEditor |
| RadioButtonListEditor |
| EditableListEditor |
| ColorEditor |
| ColorSwatchEditor |
| ItemTypeEditor |
| ItemTypeTabEditor |
| UserEditor |
| SingleUserEditor |
| SingleUserGroupEditor |
| GeolocationEditor |
| GoogleFontEditor |
| HiddenFieldEditor |
| PasswordEditor |
Jeder vollständige .NET-Editor-Klassenname wird ebenfalls akzeptiert. Verwende dw_field_types, um alle verfügbaren Editoren aus deiner DW-Instanz zu ermitteln.
Wiederholbare Listen (itemrelation)
itemrelation (ItemRelationListEditor) erstellt eine wiederholbare Liste von Unterelementen – die generische Möglichkeit, FAQ-Einträge, Zeilen, Personen usw. zu modellieren (anstelle fester nummerierter Slots wie Question1..5). Es benötigt zwei zusätzliche Parameter:
Parameter | Erforderlich | Beschreibung |
| ja | systemName des untergeordneten Elementtyps, den die Liste enthält. Erstellen Sie ihn zuerst. |
| nein | wo die Elemente gespeichert sind. Standard: |
Erstellen Sie zuerst den untergeordneten Elementtyp, dann den übergeordneten:
// 1) child row
dw_itemtype_create { systemName: "OpeningHoursRow", fields: [
{ name: "Label", systemName: "Label", type: "text" },
{ name: "Value", systemName: "Value", type: "text" },
]}
// 2) parent with the repeatable list
dw_itemtype_create { systemName: "OpeningHours", fields: [
{ name: "Title", systemName: "Title", type: "text" },
{ name: "Rows", systemName: "Rows", type: "itemrelation", itemRelationType: "OpeningHoursRow" },
]}Das Tool generiert automatisch die erforderlichen EditorConfiguration- und EditorFields-Werte (Elementtyp / Elementquelle) sowie den zugrunde liegenden Int32-Typ.
Produktfelder (dw_product_field_save)
Produktfelder verwenden ein anderes System - eine ganzzahlige TypeId aus FieldTypeAll, keine Editor-Klassennamen:
Alias | TypeId | Name |
| 1 | Text (255) |
| 2 | Langtext |
| 3 | Kontrollkästchen |
| 4 | Datum |
| 5 | Datum/Uhrzeit |
| 6 | Ganzzahl |
| 7 | Dezimal |
| 8 | Link |
| 9 | Datei |
| 10 | Text (100) |
| 11 | Text (50) |
| 12 | Text (20) |
| 13 | Text (5) |
| 14 | Editor |
| 15 | Liste |
Eine numerische TypeId wird ebenfalls direkt akzeptiert. Verwenden Sie dw_product_field_type_list, um die aktuelle Liste von Ihrer DW-Instanz abzurufen.
Architektur
src/
index.ts Entry point - reads config from env, registers tools
client.ts DwClient - HTTP client for Admin API, Update API, Delivery API
utils.ts Shared Zod helpers (jsonParam, numParam) and response helpers (prop, pascal)
tools/
itemTypes.ts Item type CRUD, fields, restrictions, settings, editor discovery, schema health and sync
pages.ts Page and area management
paragraphs.ts Paragraph management (uses ParagraphNew + ParagraphSave)
products.ts Product CRUD, bulk discount, custom/category field value updates
productSchema.ts Product categories and product field schema management
files.ts File and directory browsing
delivery.ts Read-only Delivery API
discovery.ts Swagger search, endpoint schema, raw API callsDW-API-Schnittstellen
Die DynamicWeb Admin API hat drei Aufrufkonventionen:
Admin API (
GET /admin/api/{Endpoint}) - Abfragen mit URL-ParameternCommand API (
POST /admin/api/{Endpoint}) - Mutationen mit{ Model: {...} }-Body. Löschbefehle verwenden einen flachen Body (ohne Model-Wrapper).Update API (
POST /Admin/Api/{Endpoint}?Query.Type={Type}) - aktualisiert vorhandene Datensätze mit{ QueryData: {...}, model: {...} }-Body
DwClient bietet für jede Konvention dedizierte Methoden: get(), post(), command(), update(), delivery().
Entwicklung
npm run dev # Run with tsx (hot reload)
npm run build # Compile TypeScript
npm run start # Run compiled versionFühren Sie nach Änderungen npm run build aus und starten Sie Claude Code neu, um die neue Version zu übernehmen.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for Drupal sites via JSON:API, enabling CRUD operations on nodes, taxonomy terms, and users using natural language.8MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for TeamDesk databases, enabling CRUD operations, search, and document generation via natural language.3MIT
- AlicenseNot gradedqualityDmaintenanceMCP server for Shopify Admin API. Enables product, order, customer, and inventory management via natural language.191MIT
- AlicenseAqualityCmaintenanceMCP server for Microsoft Dynamics 365 Business Central that enables AI assistants to query and manage Business Central data via full CRUD operations.630MIT
Related MCP Connectors
MCP server for AI access to Swagger by SmartBear.
An MCP server that let you interact with Cycloid.io Internal Development Portal and Platform
GibsonAI MCP server: manage your databases with natural language
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Degree-AS/degree-dynamicweb-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server