degree-dynamicweb-mcp
degree-dynamicweb-mcp
Servidor MCP (Model Context Protocol) para DynamicWeb 10 Admin API. Da a Claude Code acceso completo para gestionar los tipos de elemento, campos, páginas, párrafos y descubrimiento de API de DynamicWeb, sin tocar la DW Admin UI.
Herramientas
Tipos de elemento
Tool | Description |
| Lista todos los tipos de elemento |
| Obtiene los detalles y restricciones de un tipo de elemento |
| Crea un tipo de elemento con campos, grupos y restricciones en una sola llamada |
| Actualiza la configuración (nombre, categoría, icono, disponibilidad, etc.) |
| Actualiza las restricciones (padres permitidos, hijos, sitios web, etc.) |
| Elimina un tipo de elemento |
Mantenimiento del esquema
La implementación del XML de tipo de elemento no toca la base de datos. Hasta que el esquema se sincronice, un campo cuya columna falta se guarda sin error y no conserva nada.
Tool | Description |
| Informa de los campos a los que les falta la columna en la base de datos y de las columnas que el XML ya no declara |
| Recarga el XML del tipo de elemento y crea las tablas y columnas que faltan |
| Lista las páginas y los párrafos que usan un tipo de elemento |
| Destructivo. Elimina las filas huérfanas de la tabla de un tipo de elemento |
Después de implementar el nuevo XML: dw_itemtype_sync_schema y luego dw_itemtype_health. El endpoint de sincronización responde "ok" incluso cuando se aborta a mitad, por lo que la comprobación de salud es lo que te dice si funcionó - y /Files/System/Log/items/ActivationWorkflow contiene los errores reales. Un tipo de elemento cuya tabla falta por completo no aparece en absoluto en el informe de salud.
Campos
Tool | Description |
| Lista los campos de un tipo de elemento |
| Añade o actualiza un campo |
| Elimina un campo |
| Lista todos los tipos de editor disponibles desde la instancia de DW (no codificados de forma fija) |
Páginas
Tool | Description |
| Lista las páginas, opcionalmente filtradas por área o página principal |
| Obtiene una página con todos los campos de elemento |
| Crea una página bajo una página principal |
| Establece los valores de los campos de elemento en una página |
| Elimina una página |
| Lista todas las áreas (sitios web) |
Párrafos
Tool | Description |
| Lista los párrafos de una página |
| Obtiene un párrafo con todos los campos de elemento |
| Crea un párrafo en una página |
| Establece los valores de los campos de elemento en un párrafo |
| Elimina un párrafo |
dw_page_set_fields y dw_paragraph_set_fields verifican su propia escritura. Un nombre de campo que el tipo de elemento no declara es un error que lista los nombres que sí tiene, y después de guardar leen el elemento de nuevo y devuelven lo que ahora contiene. DW responde "ok" tanto si se almacenó un valor como si no, por lo que un error tipográfico en un SystemName solía ser indistinguible de una escritura correcta.
Productos
Tool | Description |
| Lista los productos, opcionalmente filtrados por grupo o búsqueda |
| Obtiene un solo producto (modelo completo, incl. CustomFields/CategoryFields). Devuelve |
| Actualiza los campos de nivel superior, customFields y categoryFields de un producto |
| Elimina uno o más productos |
| Aplica un descuento porcentual a DefaultPrice en un grupo o lista de productos |
dw_product_update acepta tres mapas de entrada:
fields- campos de nivel superior del producto (Name, DefaultPrice, Stock, etc.)customFields- valores de campos personalizados globales del producto, claveados por SystemNamecategoryFields- valores de campos de categoría del producto, claveados por SystemName
Esquema de producto
Gestiona el modelo de datos de PIM: categorías de producto (grupos de atributos) y campos de producto (los propios atributos).
Tool | Description |
| Lista los 15 tipos de campo de producto (TypeId + alias) |
| Lista las categorías de producto |
| Crea o actualiza una categoría de producto |
| Elimina categorías (flujo de trabajo de DW de 3 pasos gestionado internamente) |
| Lista los campos que pertenecen a una categoría |
| Crea o actualiza un campo en una categoría (acepta alias de tipo) |
| Elimina campos de una sola categoría |
Archivos
Tool | Description |
| Lista los archivos de un directorio, opcionalmente filtrados por extensión |
| Lista los subdirectorios |
Delivery API (solo lectura)
Tool | Description |
| Obtiene las áreas desde Delivery API |
| Obtiene las páginas con contenido |
| Obtiene los párrafos con contenido |
Descubrimiento de API
Tool | Description |
| Busca en la especificación de Swagger endpoints por palabra clave |
| Obtiene el esquema de solicitud/respuesta de un endpoint |
| Llamada sin procesar a cualquier endpoint de la API de administración |
Related MCP server: TeamDesk MCP Server
Configuración
1. Obtén un token de API de DW
En DynamicWeb Admin, ve a Settings > Developer > API Keys y crea una nueva clave con acceso completo.
2. Configura tu cliente de IA
Añade a .mcp.json en tu proyecto:
{
"mcpServers": {
"dynamicweb": {
"command": "npx",
"args": ["-y", "@degree-as/dynamicweb-mcp"],
"env": {
"DW_BASE_URL": "https://your-dw-instance",
"DW_API_TOKEN": "your-token"
}
}
}
}Edita ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) o %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"
}
}
}
}Añade a ~/.cursor/mcp.json (global) o .cursor/mcp.json (proyecto):
{
"mcpServers": {
"dynamicweb": {
"command": "npx",
"args": ["-y", "@degree-as/dynamicweb-mcp"],
"env": {
"DW_BASE_URL": "https://your-dw-instance",
"DW_API_TOKEN": "your-token"
}
}
}
}Añade .vscode/mcp.json a tu proyecto (nota: usa servers, no 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"
}
}
}
}Edita ~/.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"
}
}
}
}Configúralo mediante la interfaz de configuración de MCP de Cline, o añádelo a su configuración:
{
"mcpServers": {
"dynamicweb": {
"command": "npx",
"args": ["-y", "@degree-as/dynamicweb-mcp"],
"env": {
"DW_BASE_URL": "https://your-dw-instance",
"DW_API_TOKEN": "your-token"
}
}
}
}Añade a settings.json de Zed (nota: usa 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"
}
}
}
}Añade a ~/.continue/config.yaml:
mcpServers:
- name: dynamicweb
command: npx
args:
- -y
- "@degree-as/dynamicweb-mcp"
env:
DW_BASE_URL: https://your-dw-instance
DW_API_TOKEN: your-token3. Reinicia tu cliente
El servidor MCP se inicia automáticamente cuando se carga tu cliente de IA.
Desarrollo local
Si quieres ejecutarlo desde el código fuente en lugar del paquete publicado:
git clone https://github.com/Degree-AS/degree-dynamicweb-mcp.git
cd degree-dynamicweb-mcp
npm install
npm run buildLuego usa "command": "node", "args": ["/path/to/degree-dynamicweb-mcp/dist/index.js"] en .mcp.json.
Alias de tipos de campo
Campos de tipo de elemento (dw_field_save, dw_itemtype_create)
Al crear campos, puedes usar alias cortos en lugar de los nombres de clase completos de .NET:
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 |
También se acepta cualquier nombre de clase de editor .NET completo. Usa dw_field_types para descubrir todos los editores disponibles desde tu instancia de DW.
Listas repetibles (itemrelation)
itemrelation (ItemRelationListEditor) crea una lista repetible de elementos secundarios — la forma genérica de modelar elementos de FAQ, filas, personas, etc. (en lugar de ranuras numeradas fijas como Question1..5). Necesita dos parámetros adicionales:
Parámetro | Obligatorio | Descripción |
| sí | systemName del tipo de elemento hijo que contiene la lista. Créelo primero. |
| no | dónde viven los elementos. Por defecto |
Cree primero el tipo de elemento hijo y luego el padre:
// 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" },
]}La herramienta emite automáticamente los EditorConfiguration + EditorFields requeridos (Tipo de elemento / Origen del elemento) y el tipo subyacente Int32.
Campos de producto (dw_product_field_save)
Los campos de producto usan un sistema diferente: el TypeId entero de FieldTypeAll, no los nombres de clase de editor:
Alias | TypeId | Nombre |
| 1 | Texto (255) |
| 2 | Texto largo |
| 3 | Casilla de verificación |
| 4 | Fecha |
| 5 | Fecha/Hora |
| 6 | Entero |
| 7 | Decimal |
| 8 | Enlace |
| 9 | Archivo |
| 10 | Texto (100) |
| 11 | Texto (50) |
| 12 | Texto (20) |
| 13 | Texto (5) |
| 14 | Editor |
| 15 | Lista |
El TypeId numérico también se acepta directamente. Use dw_product_field_type_list para obtener la lista actualizada de su instancia de DW.
Arquitectura
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 callsSuperficies de la API de DW
La API de administración de DynamicWeb tiene tres convenciones de llamada:
Admin API (
GET /admin/api/{Endpoint}) - consultas con parámetros de URLCommand API (
POST /admin/api/{Endpoint}) - mutaciones con cuerpo{ Model: {...} }. Los comandos de eliminación usan cuerpo plano (sin envoltorio Model).Update API (
POST /Admin/Api/{Endpoint}?Query.Type={Type}) - actualiza registros existentes con cuerpo{ QueryData: {...}, model: {...} }
DwClient tiene métodos dedicados para cada una: get(), post(), command(), update(), delivery().
Desarrollo
npm run dev # Run with tsx (hot reload)
npm run build # Compile TypeScript
npm run start # Run compiled versionDespués de los cambios, ejecute npm run build y reinicie Claude Code para que se cargue la nueva versión.
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