OHMS
Provides a stub for browser-automation handoff to retrieve DoorDash orders via browser (pending full implementation).
Centralizes Shopify Admin REST API access for order management (retrieving orders, listing pending orders, updating order status) and inventory management (getting inventory snapshot).
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@OHMSlist pending orders"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
OHMS - Order Hub Management System
Flauraly Flowers and Plants - Python FastMCP server hosted on Replit Reserved VM.
Purpose
OHMS exposes a small, hardened set of order- and inventory-related tools to Violet (and any other authorized MCP client) over the Model Context Protocol. It centralizes Shopify Admin REST access behind a Bearer-auth gate so agents never touch raw Shopify credentials.
Architecture
+-----------------+ 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 |
+------------------------------+Both /mcp (Streamable HTTP) and /sse (Server-Sent Events fallback) are
mounted simultaneously so any MCP client transport profile works.
Environment Variables
OHMS authenticates to Shopify via the OAuth 2.0 client_credentials grant.
The server never holds a long-lived SHOPIFY_ACCESS_TOKEN; instead it holds a
SHOPIFY_CLIENT_ID + SHOPIFY_CLIENT_SECRET pair and mints a short-lived
access token on demand against https://{shop}.myshopify.com/admin/oauth/access_token.
The minted token is cached in-memory with a 5-minute clock-skew buffer and
re-minted automatically (or on a 401/403 from any subsequent call). All values
are read via os.environ.get(...). Nothing is hardcoded.
Var | Purpose |
| TCP port to bind (Replit injects this; defaults to 8080). |
| Static bearer token required on every non- |
| Shop domain, e.g. |
| Shopify app client ID (used for OAuth client_credentials grant). |
| Shopify app client secret (used for OAuth client_credentials grant). Rotate per |
| Pinned Shopify API version, e.g. |
| Local network IP of the receipt printer (stub uses this). |
See .env.example for the placeholder template.
Local Dev (Windows)
OHMS reads .env only when running locally (via python-dotenv). Bootstrap
your .env from the Windows DPAPI-protected secrets store rather than typing
secrets in plaintext:
# 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.pyThe server listens on http://0.0.0.0:8080 by default. Probe with:
curl http://localhost:8080/health
# => OHMS OKReplit Deploy
Create a Replit project and import this folder.
In the Secrets pane, set every variable from
.env.example(using the real values - never paste them into any committed file).Confirm
.replitshowsdeploymentTarget = "reserved_vm"and port8080 -> 80.Deploy. The public URL is
https://ohms-server.crashzero9.replit.app.Verify both transports:
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
Tool Registry
Tool | Source | Notes |
| Shopify Admin REST |
|
| Shopify Admin REST |
|
| Shopify Admin REST |
|
| Shopify Admin REST |
|
| Stub | Returns routing dict for browser-automation handoff. |
| Stub | Reads |
Phase Status
Phase 1 (current): MVP scaffold, Bearer auth, six tools (4 live + 2 stubs), Replit Reserved VM deploy, basic pytest suite.
Phase 2 (planned): OAuth 2.1 replacing static bearer, full DoorDash driver, real network printer driver, structured logging with secret redaction, rate limiting.
Security Notes
No secret values appear in any committed file.
Authorizationheaders and full Shopify response bodies are never logged./healthreturns only the literal stringOHMS OK- no version, env, or path info.All
httpxcalls have an explicit 30-second timeout.
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