OHMS
OHMS - Order Hub Management System
Flauraly Flowers and Plants - Replit Reserved VM上でホストされるPython FastMCPサーバー。
目的
OHMSは、注文および在庫関連のツールを、Model Context Protocol(MCP)を介してViolet(およびその他の許可されたMCPクライアント)に公開します。Shopify Admin RESTアクセスを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は、OAuth 2.0の client_credentials 付与を使用してShopifyに対して認証を行います。サーバーは長期有効な 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)。 |
|
|
| ショップのドメイン(例: |
| ShopifyアプリのクライアントID(OAuth client_credentials付与に使用)。 |
| Shopifyアプリのクライアントシークレット(OAuth client_credentials付与に使用)。 |
| 固定されたShopify APIバージョン(例: |
| レシートプリンターのローカルネットワークIP(スタブが使用)。 |
プレースホルダーテンプレートについては .env.example を参照してください。
ローカル開発 (Windows)
OHMSはローカル実行時のみ(python-dotenv を介して).env を読み取ります。シークレットをプレーンテキストで入力するのではなく、WindowsのDPAPI保護されたシークレットストアから .env をブートストラップしてください:
# 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 OKReplitへのデプロイ
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認証、6つのツール(ライブ4つ + スタブ2つ)、Replit Reserved VMデプロイ、基本的なpytestスイート。
フェーズ2 (計画中): 静的Bearerを置き換えるOAuth 2.1、完全なDoorDashドライバー、実際のネットワークプリンタードライバー、シークレットを秘匿化した構造化ログ、レート制限。
セキュリティに関する注意
コミットされたファイルにはシークレット値は一切含まれません。
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