Skip to main content
Glama
diogoferacruz-dev

Hey Harper multi-store Shopify MCP server

Сервер Hey Harper multi-store Shopify MCP

Крошечный удалённый MCP-сервер, хранящий постоянные токены Admin API всех пяти магазинов Hey Harper и получающий невыполненные / требующие внимания заказы-кандидаты из каждого магазина за одно подключение — без switch-shop и без повторной авторизации через OAuth для каждого магазина. Именно это позволяет ежедневному отчёту «заказы, требующие внимания» выполняться без участия человека.

Зачем это нужно

Официальный коннектор Shopify работает с одним магазином за раз и требует повторной авторизации через OAuth при каждом переключении магазина — это невозможно автоматизировать для плановой задачи. Этот сервер полностью обходит это, используя токены Admin API из кастомных приложений (постоянные, без OAuth) и напрямую запрашивая все магазины.

Related MCP server: Shopify MCP

Доступные инструменты

Инструмент

Что делает

heyharper_list_stores

Показывает список настроенных магазинов (domain + token заданы).

heyharper_pull_store_orders

Получает невыполненные заказы для одного магазина (store, since_days).

heyharper_pull_all_stores

Главный. Получает невыполненные заказы из ВСЕХ магазинов одним вызовом, с изоляцией ошибок по каждому магазину.

Каждый заказ возвращается нормализованным и обогащённым (парсинг released_hold_at, флаги тегов Everstox, oos по каждой строке), но сервер намеренно не решает, «требует ли внимания» — порог задержки по рабочим дням, правило OOS (только EU/UK/BR/MX) и исключения Everstox остаются в вашей задаче Cowork, чтобы вы могли менять пороги и добавлять календари праздников без повторного развёртывания.


Настройка — пошагово

1. Создайте кастомное приложение + токен в КАЖДОМ магазине

В админке каждого магазина Hey Harper (US, EU, UK, BR, MX):

  1. Settings → Apps and sales channels → Develop apps → Create an app (назовите его, например, cowork-unfulfilled-reader).

  2. Настройте Admin API scopes и включите (достаточно только чтения):

    • read_orders

    • read_all_orders (позволяет запрашивать заказы старше 60 дней)

    • read_products

    • read_inventory

    • read_fulfillments

    • read_merchant_managed_fulfillment_orders

  3. Установите приложение, затем в разделе API credentials откройте Admin API access token (shpat_…). Скопируйте его.

  4. Запишите домен myshopify магазина (например, hey-harper-shop-uk.myshopify.com).

В итоге у вас будет пять пар (domain, token). Никогда не коммитьте их и не вставляйте в чат — они попадают прямо в хранилище секретов хостинга на шаге 3.

2. Разверните сервер

В репозитории есть Dockerfile, поэтому подойдёт любой контейнерный хостинг (Render, Railway, Fly.io, VPS). Нужен обычный доступ в интернет и публичный HTTPS URL.

Render (пример, самый простой):

  • Web Service → New → подключите этот репозиторий (или «Deploy from a Dockerfile»).

  • Render автоматически определяет Dockerfile. Команды сборки/запуска не нужны.

  • Он сам предоставляет HTTPS и публичный URL.

Fly.io / Railway: укажите им Dockerfile аналогично.

Локальный тест:

npm install
npm run build
MCP_AUTH_TOKEN=$(openssl rand -hex 32) HH_UK_DOMAIN=hey-harper-shop-uk.myshopify.com HH_UK_TOKEN=shpat_xxx npm start
# health check:
curl localhost:3000/health

3. Задайте секреты окружения на хостинге

Скопируйте .env.example для справки и задайте эти переменные в env/секретах вашего хостинга:

  • MCP_AUTH_TOKEN — длинная случайная строка (openssl rand -hex 32). Обязательно задайте — это bearer-токен, защищающий вашу конечную точку.

  • HH_US_DOMAIN / HH_US_TOKEN, HH_EU_*, HH_UK_*, HH_BR_*, HH_MX_* — пары из шага 1.

Магазин становится активным только когда оба его параметра (домен и токен) заданы, так что можно начать с UK, а остальные добавлять по мере создания токенов.

4. Добавьте его в Claude как кастомный коннектор

В claude.ai → Settings → Connectors → Add custom connector:

  • URL: https://<your-host>/mcp

  • Auth: укажите bearer-токен (MCP_AUTH_TOKEN), чтобы запросы отправлялись с заголовком Authorization: Bearer <токен>.

Если интерфейс коннектора не позволяет прикрепить статический заголовок, установите MCP_PATH на непредсказуемый путь (например, /mcp/9f3c…) — тогда секретный путь выступает в роли учётных данных. После подключения инструменты heyharper_list_stores, heyharper_pull_store_orders и heyharper_pull_all_stores появятся как доступные.

5. Подключите к ежедневной задаче

Направьте ежедневную задачу Cowork на 9 утра на heyharper_pull_all_stores, затем примените логику классификации (порог опоздания по рабочим дням, правило OOS (только EU/UK/BR/MX), исключения Everstox) в соответствии со спецификацией передачи задач:

clock    = releasedHoldAt if hasReleasedHold else processedAt
late     = business_days_since(clock) >= 2      (weekends excluded, warehouse TZ)
shop_oos = anyLineOos                            (only where storeAppliesOos)
excluded = hasOosEverstox OR (hasHoldEverstox AND NOT hasReleasedHold)
           OR (hasSetOnHold AND NOT hasReleasedHold)
needs_attention = (late OR shop_oos) AND NOT excluded

Отправляйте результат в #daily-unfulfilled.


Переменные окружения

Переменная

Обязательна

По умолчанию

Примечания

MCP_AUTH_TOKEN

желательно

—

Bearer-токен для эндпоинта. Если не задан, эндпоинт открыт.

MCP_PATH

нет

/mcp

Путь к эндпоинту.

PORT

нет

3000

Порт.

SHOPIFY_API_VERSION

нет

2024-10

Версия Admin API.

HH_<KEY>_DOMAIN

для каждого

—

Домен магазина, где KEY ∈ US, EU, UK, BR, MX.

HH_<KEY>_TOKEN

для каждого

—

Admin API access token (shpat_…).


Локальный запуск

npm install
npm run build
MCP_AUTH_TOKEN=$(openssl rand -hex 32) HH_UK_DOMAIN=hey-harper-shop-uk.myshopify.com HH_UK_TOKEN=shpat_xxx npm start
# health check:
curl localhost:3000/health

3. Задайте секреты окружения на хостинге

Скопируйте .env.example для справки и задайте в окружении хостинга (секреты):

  • MCP_AUTH_TOKEN — длинная случайная строка (openssl rand -hex 32). Обязательно задайте — это bearer-токен для вашей конечной точки.

  • HH_US_DOMAIN / HH_US_TOKEN, HH_EU_*, HH_UK_*, HH_BR_*, HH_MX_* — пары из шага 1.

Магазин становится активным только когда заданы оба его домен и токен, так что можно начать с UK, а остальные добавить по мере генерации токенов.

4. Добавьте в Claude как пользовательский коннектор

В claude.ai → Settings → Connectors → Add custom connector:

  • URL: https://<ваш-хост>/mcp

  • Auth: укажите bearer-токен (MCP_AUTH_TOKEN).

Если в вашем тарифе интерфейс коннектора не позволяет прикрепить статический заголовок, задайте MCP_PATH — непредсказуемый путь (например, /9f3c…), и тогда секретный путь выступит как учётные данные.

После подключения инструменты heyharper_list_stores, heyharper_pull_store_orders и heyharper_pull_all_stores появятся в Claude.

5. Настройте ежедневный отчёт

Укажите в задаче вызов heyharper_pull_all_stores и примените логику классификации (она лежит в задаче Cowork, не в сервере), чтобы решить, какие заказы требуют внимания. Затем опубликуйте результат в канале.


Зачем это нужно

Официальный коннектор Shopify держит один магазин за раз и требует повторной OAuth-авторизации при каждом переключении — это делает невозможной автоматическую ежедневную выгрузку. Данный сервер полностью обходит это, используя токены Admin API кастомного приложения и запрашивая все магазины напрямую.

Переменные окружения

Переменная

Обязательна

По умолчанию

Описание

MCP_AUTH_TOKEN

рекомендовано

—

Bearer-токен для конечной точки. Если не задан, эндпоинт открыт.

MCP_PATH

нет

/mcp

Путь конечной точки.

PORT

нет

3000

Порт для HTTP-сервера.

SHOPIFY_API_VERSION

нет

2024-10

Версия Admin API.

HH_<KEY>_DOMAIN

для каждого

—

Домен магазина (KEY = US, EU, UK, BR, MX).

HH_<KEY>_TOKEN

для каждого

—

Admin API access token магазина.


Требования к хостингу

  • Обычный доступ в интернет.

  • Публичный HTTPS URL.

  • Возможность запуска Docker-контейнера.

Render (пример, самый простой): New → Web Service → подключите репозиторий (или "Deploy from a Dockerfile"). Render сам определит Dockerfile, выдаст HTTPS и публичный URL.

Fly.io / Railway: укажите Dockerfile так же, как обычно.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    A read-only MCP server that exposes the full Shopify Admin GraphQL API through 6 universal tools, with multi-store support and mutation rejection at the parser level for safety.
    6
    49 PyPI
    1
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    MCP server for Shopify Admin API. Enables product, order, customer, and inventory management via natural language.
    14
    4 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Hosted MCP server connecting Shopify, Klaviyo, GA4, Meta Ads, Google Ads, Xero, Gorgias and 20+ e-commerce data sources so AI assistants can answer merchant questions that span every source at once.
    -