shoplazza-mcp
shoplazza-mcp
Реализация на Python, которая оборачивает Shoplazza OpenAPI (REST) в сервис MCP (Model Context Protocol), позволяющая клиентам с поддержкой MCP, таким как Claude, Cursor, DSH, напрямую читать и записывать данные магазина Shoplazza (товары, заказы, клиенты, остатки, скидки, подписка на webhook и т.д.).
Каталог конечных точек (
data/endpoints.json) автоматически собирается из официальной документации скриптомtools/scrape_endpoints.pyи охватывает 311 реальных конечных точек и 46 групп ресурсов версии 2026-01.
Возможности
Возможность | Описание |
61 инструмент для часто используемых конечных точек | Товары / варианты / заказы / отгрузки / клиенты / адреса / коллекции / скидки / купоны / остатки / магазины / страницы / блоги / статьи / metafield / webhook / подарочные карты / поставщики / отчёты / OAuth scope и т.д.; входные параметры автоматически генерируются из официальной документации |
Поддержка нескольких магазинов | Один экземпляр службы может обслуживать несколько магазинов ( |
Полное покрытие 311 конечных точек | При включении |
Универсальный прокси-инструмент |
|
Инструменты каталога конечных точек |
|
Два способа транспорта | stdio (по умолчанию для локальных клиентов) / Streamable HTTP (удалённый сервис, |
Надёжность | Автоматическая обработка: авторизация через заголовок запроса, единый пакет ответа |
Установка
Требования: Python ≥ 3.10, uv (рекомендуется) или pip.
cd shoplazza-mcp
uv sync # 创建 .venv 并安装依赖(mcp、httpx)Если не используете uv:
python -m venv .venv
.venv\Scripts\activate # Windows
pip install -e .Конфигурация
Предоставляйте учётные данные через переменные окружения (не записывайте ключи в код и не коммитьте их в репозиторий):
# PowerShell / cmd
set SHOPLAZZA_SHOP_DOMAIN=your-store.myshoplazza.com
set SHOPLAZZA_ACCESS_TOKEN=your-access-tokenПеременная | Обязательно | По умолчанию | Описание |
| ✅* | — | Домен по умолчанию/для одного магазина, например |
| ✅* | — | Токен доступа по умолчанию/для одного магазина, соответствует заголовку |
| Необязательно | — | JSON для нескольких магазинов: |
|
| Версия API, например | |
|
| При | |
|
| Максимальное количество запросов в секунду от клиента (схема «дырявое ведро», независимо для каждого магазина) | |
|
| Максимальное время ожидания при 429 (секунды) | |
|
| Таймаут одного запроса (секунды) | |
| внутри пакета | Расположение пользовательского каталога конечных точек |
* Достаточно одного из вариантов: конфигурация для одного магазина SHOPLAZZA_SHOP_DOMAIN + SHOPLAZZA_ACCESS_TOKEN или конфигурация для нескольких магазинов SHOPLAZZA_STORES; если заданы оба, SHOPLAZZA_SHOP_DOMAIN является магазином по умолчанию.
Полный пример см. в .env.example.
Использование с несколькими магазинами
После настройки нескольких магазинов каждый API-инструмент в сервисе получает дополнительный необязательный параметр shop_domain:
export SHOPLAZZA_STORES='{"us.myshoplazza.com":"token-us","de.myshoplazza.com":"token-de"}'Без
shop_domain→ используется магазин по умолчанию (SHOPLAZZA_SHOP_DOMAINили первый элемент STORES)С
shop_domain→ используется указанный магазин (для неизвестного магазина будет ошибка с перечнем настроенных магазинов)shoplazza_list_shops→ просмотр всех настроенных магазинов и магазина по умолчаниюДля каждого магазина действуют отдельные Access-Token и отдельное ведро ограничения частоты (в соответствии с официальным правилом лимита на магазин); магазины не блокируют друг друга
Пример диалога:
«Проверь количество заказов в магазине US за сегодня и посмотри топ-5 товаров по продажам в магазине DE» → модель вызовет
shoplazza_orders/shoplazza_productsсshop_domain=us.myshoplazza.comиshop_domain=de.myshoplazza.comсоответственно.
Пример конфигурации Claude Desktop (несколько магазинов):
{
"mcpServers": {
"shoplazza": {
"command": "uv",
"args": ["run", "--directory", "D:/projects/DSH-projects/shoplazza-mcp", "shoplazza-mcp"],
"env": {
"SHOPLAZZA_STORES": "{\"us.myshoplazza.com\":\"token-us\",\"de.myshoplazza.com\":\"token-de\"}"
}
}
}
}Требуемые разрешения API (scope)
При создании/установке приложения в партнёрском центре или авторизации магазина запрашивайте только те scope, которые нужны, следуя принципу минимальных привилегий. Для чтения данных указывайте read_*, для изменений добавляйте одноимённый write_*:
Данные | Запрашиваемый scope |
Информация о магазине |
|
Товары / варианты / остатки |
|
Категории / коллекции |
|
Заказы / платёжная информация |
|
Возвраты / послепродажное обслуживание |
|
Клиенты |
|
Промокоды / купоны / правила цен |
|
Подарочные карты |
|
Страницы / блоги / статьи / редиректы |
|
Комментарии |
|
Управление webhook | требует |
Данные о средствах Shoplazza Pay |
|
Аналитические отчёты |
|
Рекомендуемый набор для сценариев только чтения: read_shop, read_product, read_order, read_customer, read_price_rules, read_gift_cards, read_shop_navigation, read_data. После авторизации можно вызвать инструмент shoplazza_oauth_access_scopes, чтобы проверить, какие scope фактически выданы при этой установке. Полную официальную таблицу соответствия см. в области доступа.
Как получить Access Token
Публичные приложения: используйте процесс OAuth 2.0 Authorization Code, обменяйте
codeнаaccess_token(срок действия 1 год, можно обновить с помощьюrefresh_token).Частные / внутренние интеграции: создайте соответствующий токен доступа для приложения и магазина в панели администратора Shoplazza.
Запуск
stdio (локальный MCP-клиент, по умолчанию)
uv run shoplazza-mcpHTTP (удалённый сервис)
uv run shoplazza-mcp --transport http --host 0.0.0.0 --port 8765Путь конечной точки по умолчанию — /mcp, его можно изменить с помощью --http-path.
Подключение к MCP-клиентам
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"shoplazza": {
"command": "uv",
"args": ["run", "--directory", "D:/projects/DSH-projects/shoplazza-mcp", "shoplazza-mcp"],
"env": {
"SHOPLAZZA_SHOP_DOMAIN": "your-store.myshoplazza.com",
"SHOPLAZZA_ACCESS_TOKEN": "your-access-token"
}
}
}
}Cursor: добавьте сервер в настройках → MCP, конфигурация — в examples/mcp-cursor.json.
Удалённый HTTP (любой клиент): укажите url на http://host:8765/mcp.
Также можно запустить напрямую (debug для просмотра списка инструментов и JSON-RPC взаимодействия):
uv run mcp dev shoplazza-mcpПримеры использования (диалоги в Claude / Cursor и т.п.)
«Покажи 10 последних заказов в магазине»
«Проверь остатки товара
abcd-1234»«Отмени заказ
order-xxx, причина —customer requested»«Создай скидку: при покупке от 100 скидка 20»
«Каким API можно сделать возврат? Поищи конечные точки» → модель вызовет
shoplazza_search_endpoints("refund")и затем автоматически вызовет соответствующий endpoint.
Все ответы возвращают исходный пакет API: {code, message, data, api_call_limit}; ответы со списками содержат cursor / pre_cursor в data, для постраничной навигации используйте параметры page_size / per_page.
Разработка и сопровождение
tools/scrape_endpoints.py: извлекает данные со страницы официальной документации конечных точек и генерируетdata/endpoints.json(содержит method/path/параметры/поля тела запроса/структуру ответа для каждой конечной точки).Поддержка: чтобы добавить или удалить «часто используемые инструменты», достаточно изменить список
CURATED_SLUGSвshoplazza_mcp/tools.py.scripts/smoke_test.py: офлайн-смоук-тест (stdio);scripts/http_smoke_test.py: HTTP-смоук-тест.
Безопасность
Access Token следует передавать только через переменные окружения / конфигурацию клиента, не записывайте его в репозиторий кода.
Сервис работает только через HTTPS (официальное требование: все конечные точки доступны только по HTTPS).
При публикации HTTP-сервиса во внешнюю сеть размещайте его в доверенной внутренней сети или добавьте собственную аутентификацию (например, шлюз, межсетевой экран).
Лицензия
MIT
This server cannot be installed
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 Connectors
Manage your NanoCart store from any AI agent: products, orders, coupons, subscribers, reports.
Shopify MCP Pack — wraps the Shopify Admin REST API (2024-01)
Manage your Savanto store from your AI: catalog, content, prompts, and analytics, by chat.
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/ThinkPro-GZ/shoplazza-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server