degree-dynamicweb-mcp
degree-dynamicweb-mcp
MCP-сервер (Model Context Protocol) для DynamicWeb 10 Admin API. Дает Claude Code полный доступ к управлению типами элементов, полями, страницами, параграфами и обнаружению API DynamicWeb — без обращения к интерфейсу DW Admin.
Инструменты
Типы элементов
Инструмент | Описание |
| Перечислить все типы элементов |
| Получить сведения о типе элемента и его ограничениях |
| Создать тип элемента с полями, группами и ограничениями одним вызовом |
| Обновить настройки (имя, категорию, иконку, доступность и т.д.) |
| Обновить ограничения (разрешенные родительские, дочерние, сайты и т.д.) |
| Удалить тип элемента |
Обслуживание схемы
Развертывание XML типа элемента не затрагивает базу данных. Пока схема не синхронизирована, поле, для которого отсутствует колонка, сохраняется без ошибки и ничего не хранит.
Инструмент | Описание |
| Сообщает о полях, у которых отсутствует колонка в БД, и о колонках, которые XML больше не объявляет |
| Перезагрузить XML типа элемента и создать недостающие таблицы и колонки |
| Перечислить страницы и параграфы, использующие тип элемента |
| Разрушительное действие. Удалить осиротевшие строки из таблицы типа элемента |
После развертывания нового XML: dw_itemtype_sync_schema, затем dw_itemtype_health. Конечная точка синхронизации отвечает «ok», даже если она прервалась на полпути, поэтому именно проверка здоровья показывает, сработало ли это, — а /Files/System/Log/items/ActivationWorkflow содержит настоящие ошибки. Тип элемента, у которого таблица отсутствует полностью, вообще не появляется в отчете о здоровье.
Поля
Инструмент | Описание |
| Перечислить поля типа элемента |
| Добавить или обновить поле |
| Удалить поле |
| Перечислить все доступные типы редакторов из экземпляра DW (не захардкоженные) |
Страницы
Инструмент | Описание |
| Перечислить страницы, опционально отфильтрованные по области или родителю |
| Получить страницу со всеми полями элементов |
| Создать страницу внутри родительской |
| Задать значения полей элементов на странице |
| Удалить страницу |
| Перечислить все области (сайты) |
Параграфы
Инструмент | Описание |
| Перечислить параграфы на странице |
| Получить параграф со всеми полями элементов |
| Создать параграф на странице |
| Задать значения полей элементов в параграфе |
| Удалить параграф |
dw_page_set_fields и dw_paragraph_set_fields проверяют собственную запись. Имя поля, отсутствующее в объявлениях типа элемента, вызывает ошибку, в которой перечисляются существующие имена, и после сохранения они читают элемент обратно и возвращают то, что он теперь содержит. DW отвечает «ok» независимо от того, было ли сохранено значение, поэтому опечатка в SystemName раньше была неотличима от успешной записи.
Товары
Инструмент | Описание |
| Перечислить товары, опционально отфильтрованные по группе или поиску |
| Получить один товар (полная модель, включая CustomFields/CategoryFields). Возвращает |
| Обновить поля верхнего уровня, customFields и categoryFields товара |
| Удалить один или несколько товаров |
| Применить процентную скидку к DefaultPrice для группы или списка товаров |
dw_product_update принимает три входные карты:
fields— поля товара верхнего уровня (Name, DefaultPrice, Stock и т.д.)customFields— значения глобальных пользовательских полей товара, ключ — SystemNamecategoryFields— значения полей категории товара, ключ — SystemName
Схема товаров
Управляйте моделью данных PIM: категории товаров (группы атрибутов) и поля товаров (сами атрибуты).
Инструмент | Описание |
| Перечислить 15 типов полей товара (TypeId + псевдонимы) |
| Перечислить категории товаров |
| Создать или обновить категорию товара |
| Удалить категории (трехшаговый рабочий процесс DW обрабатывается внутренне) |
| Перечислить поля, принадлежащие категории |
| Создать или обновить поле в категории (принимает псевдонимы типов) |
| Удалить поля из одной категории |
Файлы
Инструмент | Описание |
| Перечислить файлы в каталоге, опционально отфильтрованные по расширению |
| Перечислить подкаталоги |
Delivery API (только чтение)
Инструмент | Описание |
| Получить области из Delivery API |
| Получить страницы с содержимым |
| Получить параграфы с содержимым |
Обнаружение API
Инструмент | Описание |
| Искать конечные точки в спецификации Swagger по ключевому слову |
| Получить схему запроса/ответа для конечной точки |
| Прямой вызов любой конечной точки 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-token3. Перезапустите ваш клиент
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:
Псевдоним | Редактор |
| 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 |
Любое полное имя класса редактора .NET также принимается. Используйте dw_field_types, чтобы узнать все доступные редакторы из вашего экземпляра DW.
Повторяемые списки (itemrelation)
itemrelation (ItemRelationListEditor) создает повторяемый список дочерних элементов — универсальный способ моделировать элементы FAQ, строки, персоны и т.д. (вместо фиксированных нумерованных слотов, таких как Question1..5). Требует два дополнительных параметра:
Параметр | Обязателен | Описание |
| да | systemName дочернего типа элемента, содержащегося в списке. Сначала создайте его. |
| нет | где находятся элементы. По умолчанию |
Сначала создайте дочерний тип элемента, затем родительский:
// 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 | Название |
| 1 | Текст (255) |
| 2 | Длинный текст |
| 3 | Флажок |
| 4 | Дата |
| 5 | Дата/время |
| 6 | Целое число |
| 7 | Десятичное число |
| 8 | Ссылка |
| 9 | Файл |
| 10 | Текст (100) |
| 11 | Текст (50) |
| 12 | Текст (20) |
| 13 | Текст (5) |
| 14 | Редактор |
| 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 поддерживает три способа вызова:
Admin API (
GET /admin/api/{Endpoint}) — запросы с URL-параметрамиCommand API (
POST /admin/api/{Endpoint}) — изменения с телом{ Model: {...} }. Команды удаления используют плоское тело (без обёртки Model).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, чтобы он подхватил новую версию.
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