SAP Commerce MCP Server
SAP Commerce MCP Server
Этот проект предоставляет MCP-сервер для SAP Commerce Cloud, ориентированный на рабочие процессы сотрудников ASM: поиск клиента, олицетворение (impersonation), привязка или управление корзиной, а также выполнение коммерческих действий через OCC с помощью инструментов MCP, ориентированных на задачи.
Репозиторий теперь рассматривается как local-first (локальный приоритет): ожидаемой целью по умолчанию является https://localhost:9002, при этом SAP_BASE_URL управляет фактическим хостом. Удаленные арендаторы (tenants) по-прежнему могут использоваться, но документация, тесты и процесс проверки должны рассматривать локальную среду выполнения SAP Commerce как основной источник истины.
Что делает этот сервер сейчас
Действия с клиентами в стиле ASM: поиск клиента, олицетворение клиента и продолжение действий от его имени
Управление корзиной с учетом сессии: создание, просмотр, обновление, удаление и очистка корзин без ручного управления ими
Процесс оформления заказа: адрес доставки, способ доставки, email гостя и размещение заказа
Инструменты для работы с продуктами и поиска: поиск продуктов, получение сведений, проверка наличия на складе, просмотр базовых сайтов/магазинов/каталогов/категорий
Два уровня инструментов: высокоуровневые инструменты для агентов и низкоуровневые обертки OCC/ASM
Ориентация на сессию:
get_session_statusпомогает агентам понять текущий контекст корзины/пользователя/базового сайтаТранспорт FastMCP: транспорты stdio и SSE для локальных или удаленных MCP-клиентов
Как проходит запрос
1. Обзор архитектуры

Источник: docs/diagrams/architecture.mmd
2. Пример дорожки запроса (swimlane)
Это типичный путь «агент олицетворяет клиента, а затем продолжает совершать покупки от его имени».

Источник: docs/diagrams/example-request.mmd
Инструменты MCP
Высокоуровневые инструменты
Это основной контракт для рабочих процессов сотрудников ASM.
Поиск и продукты
search_products— поиск продуктов по ключевым словамget_product— получение сведений об одном продуктеget_session_status— проверка состояния текущей сессии
Клиент / ASM
search_customer— быстрый поиск клиентаimpersonate_customer— начать действовать от имени клиентаend_impersonation— вернуться в анонимный режим
Корзина и оформление заказа
add_to_cart— добавить один продуктget_cart— прочитать текущую корзинуupdate_cart_entry— изменить количество позицииremove_from_cart— удалить одну позициюclear_cart— очистить корзинуset_delivery_address— прикрепить адрес доставкиset_delivery_mode— выбрать способ доставкиget_delivery_modes— список способов доставкиset_guest_email— установить email для оформления заказа гостемplace_order— разместить заказ
Низкоуровневые инструменты
Они предоставляют более узкие примитивы OCC / ASM для точного управления.
basesites.list— список доступных базовых сайтовcatalogs.list— список каталогов для сайтаcatalogs.get— получение одного каталогаcatalogVersions.get— получение одной версии каталогаcategories.products— просмотр продуктов по категориямstores.list— список магазинов для сайтаstores.get— получение одного базового магазинаproducts.get— получение одного продукта OCCproducts.stock— проверка данных о наличии на складеproducts.stockCount— подсчет количества на складахasm.customer360— получение фрагментов данных 360 о клиентеasm.customers.create— создание клиентаasm.customers.search— запуск поиска клиентов ASMasm.customers.suggest— получение предложений по клиентамcarts.list— список корзинcarts.create— создание или восстановление корзиныcarts.get— получение одной корзиныcarts.delete— удаление одной корзиныcartEntries.list— список позиций корзиныcartEntries.add— добавление одной позицииcartEntries.get— получение одной позицииcartEntries.update— замена данных позицииcartEntries.patch— частичное обновление позицииcartEntries.delete— удаление одной позиции
Конфигурация
Установите зависимости:
uv syncСкопируйте шаблон окружения:
cp .env.example .envДля локального экземпляра SAP Commerce установите:
SAP_BASE_URL=https://localhost:9002Сохраните или настройте эти фрагменты путей, если ваше развертывание SAP отличается:
OCC_API_PATH=/occ/v2OAUTH_PATH=/authorizationserver/oauth/tokenASM_PATH=/assistedservicewebservices
Настройте учетные данные OAuth для локального или удаленного арендатора, с которым вы работаете. Для стандартной локальной настройки с демонстрационными данными ожидаются следующие значения по умолчанию:
OAUTH_CLIENT_ID=mobile_android OAUTH_CLIENT_SECRET=secret OAUTH_USERNAME=asmagent OAUTH_PASSWORD=nimda OAUTH_SCOPE=basic
Запуск
Stdio:
python -m app.serverSSE:
fastmcp serve app/server.py --sse :8080
Тестирование
Полный набор проверок:
uv run ruff check app tests uv run mypy app uv run pytest -qДымовые тесты:
uv run pytest tests/integration/test_smoke.py -qПоток поиска в реальном времени:
uv run pytest tests/integration/test_integration_live.py -s
Примечание Живые тесты предназначены для проверки текущего контракта на реальной среде выполнения SAP Commerce. Когда
SAP_BASE_URL=https://localhost:9002, локальный экземпляр OCC/ASM должен быть основной целью проверки. Если данные OAuth или ASM настроены неверно, диагностируйте их локально, прежде чем расширять область поиска.
Предупреждение о локальном SAP Некоторые локальные стеки SAP 2211 включают
messagecentercsocc, чей позднийOauth2UserFilterможет перезаписать контекст/users/{customerId}от имени агента обратно на аутентифицированного агента. Если вызовы корзиныasmagentприводят к ошибкам приведенияEmployeeModel -> CustomerModel, исправьте этот фильтр так, чтобы он сохранял уже сопоставленного клиента, когда текущий пользователь OCC отличается от принципала OAuth.
Контроль качества
Ruff для линтинга и гигиены импортов
Mypy для практического статического контроля типов в
app/Pytest + coverage.xml, чтобы SonarQube мог использовать те же локальные данные, что и в CI
Локальный анализ SonarQube можно опубликовать с помощью:
uv run pytest -q
sonar-scannerФайл sonar-project.properties добавлен в репозиторий, поэтому локальные сканирования и сканирования в CI используют один и тот же ключ проекта и структуру исходного кода.
Документация
Рабочие процессы — практические последовательности вызовов инструментов
Архитектура Mermaid — исходный код для системной диаграммы
Запрос Mermaid — исходный код для диаграммы дорожек
Манифест MCP и регистрация инструментов:
app/server.pyРуководство по внесению вклада:
AGENTS.md
Будущие улучшения
добавить опциональное внешнее хранилище только в том случае, если проекту позже потребуется многопроцессность или горизонтально масштабируемая сессия
Поддерживаемое покрытие OCC / ASM
Текущий сервер охватывает конечные точки, необходимые для вышеуказанных процессов, включая базовые сайты, каталоги, магазины, продукты, корзины, позиции корзины, операции с адресом/доставкой при оформлении заказа, размещение заказа и поиск клиентов ASM / 360 о клиенте / операции привязки корзины.
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/commerce-cloud-integrations/sap-commerce-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server