OHMS
OHMS - 주문 허브 관리 시스템 (Order Hub Management System)
Flauraly Flowers and Plants - Replit Reserved VM에서 호스팅되는 Python FastMCP 서버.
목적
OHMS는 주문 및 재고 관련 도구의 작고 강화된 세트를 Model Context Protocol을 통해 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(Streamable 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