Skip to main content
Glama
Degree-AS
by Degree-AS

degree-dynamicweb-mcp

MCP-сервер (Model Context Protocol) для DynamicWeb 10 Admin API. Дает Claude Code полный доступ к управлению типами элементов, полями, страницами, параграфами и обнаружению API DynamicWeb — без обращения к интерфейсу DW Admin.

Инструменты

Типы элементов

Инструмент

Описание

dw_itemtype_list

Перечислить все типы элементов

dw_itemtype_get

Получить сведения о типе элемента и его ограничениях

dw_itemtype_create

Создать тип элемента с полями, группами и ограничениями одним вызовом

dw_itemtype_update_settings

Обновить настройки (имя, категорию, иконку, доступность и т.д.)

dw_itemtype_update_restrictions

Обновить ограничения (разрешенные родительские, дочерние, сайты и т.д.)

dw_itemtype_delete

Удалить тип элемента

Обслуживание схемы

Развертывание XML типа элемента не затрагивает базу данных. Пока схема не синхронизирована, поле, для которого отсутствует колонка, сохраняется без ошибки и ничего не хранит.

Инструмент

Описание

dw_itemtype_health

Сообщает о полях, у которых отсутствует колонка в БД, и о колонках, которые XML больше не объявляет

dw_itemtype_sync_schema

Перезагрузить XML типа элемента и создать недостающие таблицы и колонки

dw_itemtype_usages

Перечислить страницы и параграфы, использующие тип элемента

dw_itemtype_clean_table

Разрушительное действие. Удалить осиротевшие строки из таблицы типа элемента

После развертывания нового XML: dw_itemtype_sync_schema, затем dw_itemtype_health. Конечная точка синхронизации отвечает «ok», даже если она прервалась на полпути, поэтому именно проверка здоровья показывает, сработало ли это, — а /Files/System/Log/items/ActivationWorkflow содержит настоящие ошибки. Тип элемента, у которого таблица отсутствует полностью, вообще не появляется в отчете о здоровье.

Поля

Инструмент

Описание

dw_field_list

Перечислить поля типа элемента

dw_field_save

Добавить или обновить поле

dw_field_delete

Удалить поле

dw_field_types

Перечислить все доступные типы редакторов из экземпляра DW (не захардкоженные)

Страницы

Инструмент

Описание

dw_page_list

Перечислить страницы, опционально отфильтрованные по области или родителю

dw_page_get

Получить страницу со всеми полями элементов

dw_page_create

Создать страницу внутри родительской

dw_page_set_fields

Задать значения полей элементов на странице

dw_page_delete

Удалить страницу

dw_area_list

Перечислить все области (сайты)

Параграфы

Инструмент

Описание

dw_paragraph_list

Перечислить параграфы на странице

dw_paragraph_get

Получить параграф со всеми полями элементов

dw_paragraph_create

Создать параграф на странице

dw_paragraph_set_fields

Задать значения полей элементов в параграфе

dw_paragraph_delete

Удалить параграф

dw_page_set_fields и dw_paragraph_set_fields проверяют собственную запись. Имя поля, отсутствующее в объявлениях типа элемента, вызывает ошибку, в которой перечисляются существующие имена, и после сохранения они читают элемент обратно и возвращают то, что он теперь содержит. DW отвечает «ok» независимо от того, было ли сохранено значение, поэтому опечатка в SystemName раньше была неотличима от успешной записи.

Товары

Инструмент

Описание

dw_product_list

Перечислить товары, опционально отфильтрованные по группе или поиску

dw_product_get

Получить один товар (полная модель, включая CustomFields/CategoryFields). Возвращает {found: false} для отсутствующего товара вместо ошибки API

dw_product_update

Обновить поля верхнего уровня, customFields и categoryFields товара

dw_product_delete

Удалить один или несколько товаров

dw_product_bulk_discount

Применить процентную скидку к DefaultPrice для группы или списка товаров

dw_product_update принимает три входные карты:

  • fields — поля товара верхнего уровня (Name, DefaultPrice, Stock и т.д.)

  • customFields — значения глобальных пользовательских полей товара, ключ — SystemName

  • categoryFields — значения полей категории товара, ключ — SystemName

Схема товаров

Управляйте моделью данных PIM: категории товаров (группы атрибутов) и поля товаров (сами атрибуты).

Инструмент

Описание

dw_product_field_type_list

Перечислить 15 типов полей товара (TypeId + псевдонимы)

dw_product_category_list

Перечислить категории товаров

dw_product_category_save

Создать или обновить категорию товара

dw_product_category_delete

Удалить категории (трехшаговый рабочий процесс DW обрабатывается внутренне)

dw_product_field_list

Перечислить поля, принадлежащие категории

dw_product_field_save

Создать или обновить поле в категории (принимает псевдонимы типов)

dw_product_field_delete

Удалить поля из одной категории

Файлы

Инструмент

Описание

dw_files_list

Перечислить файлы в каталоге, опционально отфильтрованные по расширению

dw_files_directories

Перечислить подкаталоги

Delivery API (только чтение)

Инструмент

Описание

dw_content_areas

Получить области из Delivery API

dw_content_pages

Получить страницы с содержимым

dw_content_paragraphs

Получить параграфы с содержимым

Обнаружение API

Инструмент

Описание

dw_api_search

Искать конечные точки в спецификации Swagger по ключевому слову

dw_api_endpoint_schema

Получить схему запроса/ответа для конечной точки

dw_api_call

Прямой вызов любой конечной точки Admin API

Related MCP server: TeamDesk MCP Server

Настройка

1. Получите токен DW API

В DynamicWeb Admin перейдите в Settings > Developer > API Keys и создайте новый ключ с полным доступом.

2. Настройте ваш ИИ-клиент

Добавьте в .mcp.json вашего проекта:

{
  "mcpServers": {
    "dynamicweb": {
      "command": "npx",
      "args": ["-y", "@degree-as/dynamicweb-mcp"],
      "env": {
        "DW_BASE_URL": "https://your-dw-instance",
        "DW_API_TOKEN": "your-token"
      }
    }
  }
}

Отредактируйте ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) или %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"
      }
    }
  }
}

Добавьте в ~/.cursor/mcp.json (глобально) или .cursor/mcp.json (для проекта):

{
  "mcpServers": {
    "dynamicweb": {
      "command": "npx",
      "args": ["-y", "@degree-as/dynamicweb-mcp"],
      "env": {
        "DW_BASE_URL": "https://your-dw-instance",
        "DW_API_TOKEN": "your-token"
      }
    }
  }
}

Добавьте .vscode/mcp.json в ваш проект (обратите внимание: используется servers, а не 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"
      }
    }
  }
}

Отредактируйте ~/.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"
      }
    }
  }
}

Настройте через интерфейс MCP-настроек Cline или добавьте в его конфигурацию:

{
  "mcpServers": {
    "dynamicweb": {
      "command": "npx",
      "args": ["-y", "@degree-as/dynamicweb-mcp"],
      "env": {
        "DW_BASE_URL": "https://your-dw-instance",
        "DW_API_TOKEN": "your-token"
      }
    }
  }
}

Добавьте в settings.json Zed (обратите внимание: используется 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"
      }
    }
  }
}

Добавьте в ~/.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-token

3. Перезапустите ваш клиент

MCP-сервер запускается автоматически при загрузке вашего ИИ-клиента.

Локальная разработка

Если вы хотите запускать из исходного кода вместо опубликованного пакета:

git clone https://github.com/Degree-AS/degree-dynamicweb-mcp.git
cd degree-dynamicweb-mcp
npm install
npm run build

Затем используйте "command": "node", "args": ["/path/to/degree-dynamicweb-mcp/dist/index.js"] в .mcp.json.

Псевдонимы типов полей

Поля типов элементов (dw_field_save, dw_itemtype_create)

При создании полей можно использовать короткие псевдонимы вместо полных имен классов .NET:

Псевдоним

Редактор

text

TextEditor

longtext

LongTextEditor

richtext

RichTextEditor

richtextlight

RichTextEditorLight

file / image

FileEditor

folder

FolderEditor

media

MediaEditor

link

LinkEditor

itemlink

ItemLinkEditor

itemrelation

ItemRelationListEditor

number

IntegerEditor

decimal

DecimalEditor

date

DateEditor

datetime

DateTimeEditor

checkbox

CheckboxEditor

checkboxlist

CheckboxListEditor

dropdown

DropDownListEditor

radiolist

RadioButtonListEditor

editablelist

EditableListEditor

color

ColorEditor

colorswatch

ColorSwatchEditor

itemtype

ItemTypeEditor

itemtab

ItemTypeTabEditor

user

UserEditor

singleuser

SingleUserEditor

usergroup

SingleUserGroupEditor

geolocation

GeolocationEditor

googlefont

GoogleFontEditor

hidden

HiddenFieldEditor

password

PasswordEditor

Любое полное имя класса редактора .NET также принимается. Используйте dw_field_types, чтобы узнать все доступные редакторы из вашего экземпляра DW.

Повторяемые списки (itemrelation)

itemrelation (ItemRelationListEditor) создает повторяемый список дочерних элементов — универсальный способ моделировать элементы FAQ, строки, персоны и т.д. (вместо фиксированных нумерованных слотов, таких как Question1..5). Требует два дополнительных параметра:

Параметр

Обязателен

Описание

itemRelationType

да

systemName дочернего типа элемента, содержащегося в списке. Сначала создайте его.

itemSource

нет

где находятся элементы. По умолчанию CurrentParagraph (строки хранятся у владельца).

Сначала создайте дочерний тип элемента, затем родительский:

// 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" },
]}

Инструмент автоматически генерирует необходимые EditorConfiguration + EditorFields (тип элемента / источник элемента) и базовый тип Int32.

Поля продукта (dw_product_field_save)

Поля продукта используют другую систему — целочисленный TypeId из FieldTypeAll, а не имена классов редактора:

Псевдоним

TypeId

Название

text / text255

1

Текст (255)

longtext

2

Длинный текст

checkbox

3

Флажок

date

4

Дата

datetime

5

Дата/время

number / integer

6

Целое число

decimal

7

Десятичное число

link

8

Ссылка

file

9

Файл

text100

10

Текст (100)

text50

11

Текст (50)

text20

12

Текст (20)

text5

13

Текст (5)

richtext / editor

14

Редактор

list / dropdown

15

Список

Числовой TypeId также принимается напрямую. Используйте dw_product_field_type_list, чтобы получить актуальный список из вашего экземпляра DW.

Архитектура

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 calls

Способы вызова DW API

DynamicWeb Admin API поддерживает три способа вызова:

  1. Admin API (GET /admin/api/{Endpoint}) — запросы с URL-параметрами

  2. Command API (POST /admin/api/{Endpoint}) — изменения с телом { Model: {...} }. Команды удаления используют плоское тело (без обёртки Model).

  3. Update API (POST /Admin/Api/{Endpoint}?Query.Type={Type}) — обновление существующих записей с телом { QueryData: {...}, model: {...} }

DwClient предоставляет отдельные методы для каждого: get(), post(), command(), update(), delivery().

Разработка

npm run dev      # Run with tsx (hot reload)
npm run build    # Compile TypeScript
npm run start    # Run compiled version

После изменений выполните npm run build и перезапустите Claude Code, чтобы он подхватил новую версию.

A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for TeamDesk databases, enabling CRUD operations, search, and document generation via natural language.
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for Shopify Admin API. Enables product, order, customer, and inventory management via natural language.
    19
    1
    MIT

View all related MCP servers

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

View all MCP Connectors

Latest Blog Posts

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