OHMS
OHMS - Order Hub Management System
Flauraly Flowers and Plants - Python FastMCP-Server, gehostet auf einer Replit Reserved VM.
Zweck
OHMS stellt eine kleine, gehärtete Auswahl an Tools für Bestellungen und Bestandsverwaltung für Violet (und jeden anderen autorisierten MCP-Client) über das Model Context Protocol bereit. Es zentralisiert den Zugriff auf die Shopify Admin REST-API hinter einer Bearer-Authentifizierung, sodass Agenten niemals mit rohen Shopify-Anmeldedaten in Berührung kommen.
Architektur
+-----------------+ 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 |
+------------------------------+Sowohl /mcp (Streamable HTTP) als auch /sse (Server-Sent Events Fallback) sind gleichzeitig eingebunden, sodass jedes MCP-Client-Transportprofil funktioniert.
Umgebungsvariablen
OHMS authentifiziert sich bei Shopify über den OAuth 2.0 client_credentials-Grant. Der Server speichert niemals ein langlebiges SHOPIFY_ACCESS_TOKEN; stattdessen hält er ein SHOPIFY_CLIENT_ID + SHOPIFY_CLIENT_SECRET-Paar und erstellt bei Bedarf ein kurzlebiges Zugriffstoken über https://{shop}.myshopify.com/admin/oauth/access_token. Das erstellte Token wird im Arbeitsspeicher mit einem 5-Minuten-Puffer für die Uhrzeit-Abweichung zwischengespeichert und automatisch (oder bei einem 401/403-Fehler eines nachfolgenden Aufrufs) neu erstellt. Alle Werte werden über os.environ.get(...) gelesen. Nichts ist fest codiert.
Variable | Zweck |
| TCP-Port für die Bindung (wird von Replit injiziert; Standard ist 8080). |
| Statisches Bearer-Token, das bei jeder Anfrage außer |
| Shop-Domain, z. B. |
| Shopify App Client ID (verwendet für OAuth client_credentials Grant). |
| Shopify App Client Secret (verwendet für OAuth client_credentials Grant). Rotation gemäß Zeitplan in |
| Fixierte Shopify API-Version, z. B. |
| Lokale Netzwerk-IP des Bondruckers (wird vom Stub verwendet). |
Siehe .env.example für die Platzhalter-Vorlage.
Lokale Entwicklung (Windows)
OHMS liest .env nur bei lokaler Ausführung (über python-dotenv). Bootstrappen Sie Ihre .env aus dem Windows DPAPI-geschützten Secrets-Speicher, anstatt Geheimnisse im Klartext einzugeben:
# 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.pyDer Server lauscht standardmäßig auf http://0.0.0.0:8080. Testen mit:
curl http://localhost:8080/health
# => OHMS OKReplit-Bereitstellung
Erstellen Sie ein Replit-Projekt und importieren Sie diesen Ordner.
Setzen Sie im Bereich „Secrets“ jede Variable aus
.env.example(unter Verwendung der echten Werte – fügen Sie diese niemals in eine committete Datei ein).Bestätigen Sie, dass
.replitdeploymentTarget = "reserved_vm"und Port8080 -> 80anzeigt.Bereitstellen. Die öffentliche URL lautet
https://ohms-server.crashzero9.replit.app.Überprüfen Sie beide Transporte:
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/mcpTool-Registrierung
Tool | Quelle | Hinweise |
| Shopify Admin REST |
|
| Shopify Admin REST |
|
| Shopify Admin REST |
|
| Shopify Admin REST |
|
| Stub | Gibt Routing-Dict für Browser-Automatisierungsübergabe zurück. |
| Stub | Liest |
Phasenstatus
Phase 1 (aktuell): MVP-Gerüst, Bearer-Authentifizierung, sechs Tools (4 live + 2 Stubs), Replit Reserved VM-Bereitstellung, grundlegende pytest-Suite.
Phase 2 (geplant): OAuth 2.1 als Ersatz für statische Bearer-Token, vollständiger DoorDash-Treiber, echter Netzwerkdruckertreiber, strukturierte Protokollierung mit Schwärzung von Geheimnissen, Ratenbegrenzung.
Sicherheitshinweise
In keiner committeten Datei erscheinen geheime Werte.
Authorization-Header und vollständige Shopify-Antwortkörper werden niemals protokolliert./healthgibt nur die ZeichenfolgeOHMS OKzurück – keine Versions-, Umgebungs- oder Pfadinformationen.Alle
httpx-Aufrufe haben ein explizites Timeout von 30 Sekunden.
Related MCP Connectors
Shopify MCP Pack — wraps the Shopify Admin REST API (2024-01)
Unified MCP Server is a remote MCP connector for AI agents and vertical AI products that provides access to 22,000+ authorized SaaS tools across 400+ integrations and 24 categories directly inside LLMs (Claude, GPT, Gemini, Cohere). Tools operate only on explicitly authorized customer connections, enabling agents to safely read and write against live third-party systems.
Unified MCP server for 70+ eCommerce platforms: products, orders, customers, and more.
Hosted MCP for e-commerce: live product catalog, stock, and pricing for AI agents.