com.goldpopcon/openapi-mcp Model Context Protocol (MCP) Server
금방 Open API MCP 서버로, OpenAPI 관련 스펙 조회와 JWT 서명 코드 생성을 지원하며 로컬 서명/검증 기능을 제공합니다. 이 서버는 Model Context Protocol 기반으로 동작하며, 금/트레이딩 맥락의 Open API 연동에 사용되는 것으로 설명됩니다.
엔드포인트 표 · 빠른 시작 · JWT 서명 규격 · 권한/한도 · 멱등성 · 에러 코드. 스펙에서 생성되는 공식 문서다.
요청·응답 스키마는 Redoc 에서 본다. MCP 없이 직접 연동할 사람도 여기부터 읽으면 된다.
(repo 안에서 바로 보려면 docs/index.md)
API 키 발급
Open API 키(gpk_ 액세스 키 + sk_ 시크릿 키)는 골드팝콘 앱에서만 발급된다. 웹 발급 경로는 없다.
이 API에서 개발자가 막히는 지점은 필드명이 아니라 요청 서명이다 — query_hash 입력이 메서드에 따라 갈리고(POST=raw body, GET=정규화 querystring) 업비트 예제를 그대로 옮기면 전부 401이 난다. 이 MCP는 그 절차를 코드로 생성하고 로컬에서 서명/검증까지 해준다.
도구
도구
용도
list_endpoints
엔드포인트 목록 — 권한 스코프·멱등성·rate 버킷 포함
get_endpoint
단일 엔드포인트 상세 — 파라미터·본문 스키마·요청/성공 응답 예제·응답 코드
list_error_codes
에러 코드 표 + 상태 코드별 재시도 판단 + 함정(잔액 부족=400 P0001, 인증 실패=401 error:null)
signing_guide
JWT 서명 절차 — query_hash 분기·시각 클레임·nonce·멱등성
generate_signed_request
언어별(python/javascript/go/curl) 완결형 서명 요청 코드 생성
sign_request
실제 키로 JWT를 로컬 계산(디버깅) — JWT·query_hash·바로 쓸 curl 반환
개발 중엔 command: "npx", args: ["tsx", "/절대경로/.../src/index.ts"].
환경변수
변수
기본
의미
GOLDPOPCON_OPENAPI_SPEC
번들 spec/openapi.yaml
스펙 파일 경로 재지정
GOLDPOPCON_MCP_ALLOW_LIVE
(없음)
true 면 call_api(조회 전용·production) 활성화
GOLDPOPCON_ACCESS_KEY
(없음)
call_api 액세스 키 기본값 — 인자 생략 시 사용
GOLDPOPCON_SECRET_KEY
(없음)
call_api 시크릿 키 기본값 — 반복 호출 자동화에서 권장
예시 대화
"sellAsset 을 파이썬으로 호출하는 코드 줘, 금 0.5g" → generate_signed_request(operationId=sellAsset, language=python, pathParams={asset:gold}, body={quantity:0.5})
"보유한 금 전부 팔려면?" → generate_signed_request(operationId=sellAsset, language=python, pathParams={asset:gold}, body={quantity:0.001, sell_all:true}) — sell_all 이 요청 수량을 무시하고 가용 잔량 전량을 체결한다
"이 JWT 가 왜 401 나?" → verify_signature(token=..., secretKey=..., method=POST, rawBody=...)
"잔액 부족이면 몇 번 에러야?" → list_error_codes — 400 P0001(500 아님). 상태 코드별 재시도 판단표도 같이 나온다
스펙 동기화
스펙 원본은 백엔드 repo 의 docs/openapi.yaml(이 repo 밖)이고, 이 repo 는 spec/openapi.yaml 사본을 번들한다. 원본이 바뀌면 SPEC_SRC 로 경로를 지정해 갱신한다:
bash
SPEC_SRC=/path/to/<backend-repo>/docs/openapi.yaml npm run sync-spec
SPEC_SRC 는 필수다. 생략하면 원본을 못 찾고 실패한다 — 백엔드 repo 명을 이 repo 에 남기지 않기 위해 기본 경로를 두지 않았다.
dist/ 가 있으면 sync-spec 이 문서 사이트(docs/index.md · docs/openapi.yaml)도 같이 다시 만든다. 스펙만 따로 갱신했다면 npm run docs 로 맞춘다 — 둘 다 생성물이라 직접 고치지 않는다. 문서 내용을 바꾸려면 백엔드 스펙의 info.description 을 고친다. 손으로 쓰는 파일은 docs/_config.yml 과 docs/redoc.html 둘뿐이다.
갱신 후 spec/openapi.yaml 과 docs/ 를 커밋한다. main 에 푸시되면 GitHub Pages 가 사이트를 다시 배포한다. 서명 규칙이 서버와 어긋나면 npm test(서버 검증 규칙 미러)가 잡는다.