OHMS
OHMS — Система управления заказами (Order Hub Management System)
Flauraly Flowers and Plants — сервер Python FastMCP, размещенный на зарезервированной виртуальной машине Replit.
Назначение
OHMS предоставляет небольшой, защищенный набор инструментов для работы с заказами и запасами для Violet (и любого другого авторизованного MCP-клиента) через протокол Model Context Protocol. Он централизует доступ к REST API администратора Shopify через шлюз с Bearer-авторизацией, чтобы агенты никогда не имели доступа к исходным учетным данным Shopify.
Архитектура
+-----------------+ Bearer +------------------------------+
| MCP Client | ---------------> | OHMS (Replit Reserved VM) |
| (Violet, etc.) | /mcp or /sse | |
+-----------------+ | Starlette parent app |
| +-- /health (open) |
| +-- /mcp (Streamable HTTP)|
| +-- /sse (SSE fallback) |
| +-- BearerAuthMiddleware |
+--------------+---------------+
|
v
+------------------------------+
| Shopify Admin REST API |
+------------------------------+И /mcp (потоковый HTTP), и /sse (резервный вариант Server-Sent Events) подключены одновременно, поэтому работает любой транспортный профиль MCP-клиента.
Переменные окружения
OHMS проходит аутентификацию в Shopify через предоставление учетных данных OAuth 2.0 client_credentials. Сервер никогда не хранит долгоживущий SHOPIFY_ACCESS_TOKEN; вместо этого он хранит пару SHOPIFY_CLIENT_ID + SHOPIFY_CLIENT_SECRET и по запросу создает краткосрочный токен доступа через https://{shop}.myshopify.com/admin/oauth/access_token. Созданный токен кэшируется в памяти с буфером синхронизации часов в 5 минут и автоматически пересоздается (или при получении 401/403 от любого последующего вызова). Все значения считываются через os.environ.get(...). Ничего не зашито в код.
Переменная | Назначение |
| TCP-порт для привязки (Replit вводит его автоматически; по умолчанию 8080). |
| Статический bearer-токен, требуемый для каждого запроса, кроме |
| Домен магазина, например |
| ID клиента приложения Shopify (используется для предоставления OAuth client_credentials). |
| Секрет клиента приложения Shopify (используется для предоставления OAuth client_credentials). Ротация согласно графику |
| Зафиксированная версия API Shopify, например |
| IP-адрес чекового принтера в локальной сети (используется заглушкой). |
См. .env.example для шаблона с заполнителями.
Локальная разработка (Windows)
OHMS считывает .env только при локальном запуске (через python-dotenv). Загрузите свой .env из хранилища секретов Windows, защищенного DPAPI, вместо ввода секретов в виде обычного текста:
# 1. Pull each secret from DPAPI into the local .env (PowerShell pseudocode)
$secrets = @("OHMS_API_TOKEN","SHOPIFY_STORE_URL","SHOPIFY_CLIENT_ID","SHOPIFY_CLIENT_SECRET","SHOPIFY_API_VERSION","PRINTER_IP")
foreach ($k in $secrets) {
$v = Unprotect-DpapiSecret -Name $k # your local helper
Add-Content .env "$k=$v"
}
# 2. Run the server
python -m venv .venv
.venv\Scripts\Activate.ps1
pip install -r requirements.txt
python main.pyСервер прослушивает http://0.0.0.0:8080 по умолчанию. Проверка:
curl http://localhost:8080/health
# => OHMS OKРазвертывание на Replit
Создайте проект Replit и импортируйте эту папку.
На панели Secrets установите все переменные из
.env.example(используя реальные значения — никогда не вставляйте их в какой-либо зафиксированный файл).Убедитесь, что в
.replitуказаноdeploymentTarget = "reserved_vm"и порт8080 -> 80.Разверните. Публичный URL:
https://ohms-server.crashzero9.replit.app.Проверьте оба транспорта:
curl https://ohms-server.crashzero9.replit.app/health
curl -H "Authorization: Bearer $OHMS_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}' \
https://ohms-server.crashzero9.replit.app/mcpРеестр инструментов
Инструмент | Источник | Примечания |
| Shopify Admin REST |
|
| Shopify Admin REST |
|
| Shopify Admin REST |
|
| Shopify Admin REST |
|
| Заглушка | Возвращает словарь маршрутизации для передачи автоматизации браузера. |
| Заглушка | Считывает |
Статус фаз
Фаза 1 (текущая): Каркас MVP, Bearer-авторизация, шесть инструментов (4 рабочих + 2 заглушки), развертывание на зарезервированной виртуальной машине Replit, базовый набор тестов pytest.
Фаза 2 (запланированная): Замена статического bearer на OAuth 2.1, полноценный драйвер DoorDash, реальный драйвер сетевого принтера, структурированное логирование с маскированием секретов, ограничение частоты запросов (rate limiting).
Примечания по безопасности
Никакие секретные значения не появляются ни в одном зафиксированном файле.
Заголовки
Authorizationи полные тела ответов Shopify никогда не логируются./healthвозвращает только буквальную строкуOHMS OK— никакой информации о версии, окружении или путях.Все вызовы
httpxимеют явный тайм-аут 30 секунд.
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/crashzero9/ohms-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server