opinet-mcp
opinet-mcp
한국석유공사 오피넷(Opinet) 유가정보 무료 API를 Claude / Claude Code 등 MCP 클라이언트에서 사용할 수 있게 해주는 MCP 서버입니다.
언어: TypeScript (ESM)
SDK:
@modelcontextprotocol/sdk전송: stdio
호출 제한: 1,500 call/일 (오피넷 정책)
사전 준비
오피넷 무료 API 에서 API Key 발급
Node.js 18 이상 (글로벌
fetch사용)
설치 & 실행 — 3가지 방법
방법 1. npx로 즉시 실행 (권장 · 별도 설치 불필요)
npm 레지스트리에 publish 후 사용 가능. publish는 아래 "배포" 섹션 참고.
OPINET_API_KEY=발급키 npx -y opinet-mcp방법 2. 글로벌 설치
npm install -g opinet-mcp
OPINET_API_KEY=발급키 opinet-mcp방법 3. 소스 클론 (개발 / private 사용)
git clone https://github.com/KimJintak/opinet-mcp.git
cd opinet-mcp
npm install
npm run build
OPINET_API_KEY=발급키 node dist/index.jsMCP 클라이언트 등록
Claude Desktop / Claude Code
설정 파일 위치:
OS | 경로 |
macOS |
|
Windows |
|
Linux |
|
A. npx 방식 (가장 간편 — publish 후 사용)
{
"mcpServers": {
"opinet": {
"command": "npx",
"args": ["-y", "opinet-mcp"],
"env": {
"OPINET_API_KEY": "발급받은_키"
}
}
}
}B. 글로벌 설치 방식
{
"mcpServers": {
"opinet": {
"command": "opinet-mcp",
"env": {
"OPINET_API_KEY": "발급받은_키"
}
}
}
}C. 로컬 빌드 방식 (소스 클론한 경우)
{
"mcpServers": {
"opinet": {
"command": "node",
"args": ["/절대/경로/opinet-mcp/dist/index.js"],
"env": {
"OPINET_API_KEY": "발급받은_키"
}
}
}
}⚠️ Claude Desktop은 PATH를 제한적으로 상속받습니다.
command: "node"또는"npx"로 실행 시 못 찾는다면 절대경로(/opt/homebrew/bin/node,/usr/local/bin/npx등)로 지정하세요. 터미널에서which node/which npx로 확인.
설정 후 Claude Desktop 완전 종료(Cmd+Q) → 재실행하면 도구 아이콘에서 6개 툴을 확인할 수 있습니다.
다른 MCP 클라이언트 (Cursor, Cline, Continue 등)
위 JSON 구조와 동일하게 각 클라이언트의 MCP 서버 설정 파일에 추가하면 됩니다.
제공 툴 (6종)
Tool name | 오피넷 엔드포인트 | 설명 |
|
| 전국 주유소 평균가격 (현재) |
|
| 시도별 주유소 평균가격 (현재) |
|
| 최근 7일간 전국 일일 평균가격 (추세) |
|
| 전국/지역별 최저가 주유소 TOP20 |
|
| KATEC 좌표 기준 반경 내 주유소 검색 |
|
| 주유소 ID(UNI_ID)로 상세정보 조회 |
공통 코드
제품코드 (prodcd)
코드 | 제품 |
| 보통휘발유 |
| 자동차경유 |
| 고급휘발유 |
| 실내등유 |
| 자동차부탄 |
시도코드 (sido / area 2자리)
코드 | 지역 | 코드 | 지역 |
01 | 서울 | 10 | 부산 |
02 | 경기 | 11 | 제주 |
03 | 강원 | 12 | 대구 |
04 | 충북 | 13 | 인천 |
05 | 충남 | 14 | 광주 |
06 | 전북 | 15 | 대전 |
07 | 전남 | 16 | 울산 |
08 | 경북 | 17 | 세종 |
09 | 경남 |
시군구 단위는 4자리 코드입니다 (예:
0207= 경기 광명시). 오피넷areaCode.do엔드포인트로 별도 조회 가능.
좌표계 주의사항
search_stations_around의 입력 좌표(x, y)와 모든 응답의 GIS_X_COOR / GIS_Y_COOR는 KATEC 좌표계입니다. WGS84(위경도)와 다르므로, 위경도를 입력으로 받으려면 클라이언트에서 KATEC으로 변환 후 호출하세요.
사용 예시 (자연어)
"오늘 전국 휘발유 평균가 알려줘" →
get_national_average_price"서울 시도 평균 경유 가격" →
get_sido_average_price(sido=01,prodcd=D047)"최근 7일간 휘발유 추세" →
get_recent_7days_price(prodcd=B027)"광명시에서 가장 싼 휘발유 주유소 5곳" →
get_lowest_price_top20(prodcd=B027,area=0207,cnt=5)"주유소 ID A0008322 상세정보" →
get_station_detail
동작 확인 (스모크 테스트)
API 키 없이 실행 → 환경변수 안내 후 종료되면 빌드 OK:
node dist/index.jsAPI 키가 있을 때, stdio로 직접 호출:
export OPINET_API_KEY=발급키
# 등록된 툴 목록 확인
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node dist/index.js
# 전국 평균가격 호출
echo '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"get_national_average_price","arguments":{}}}' | node dist/index.js개발
npm install
npm run dev # tsc --watch
npm run build # 한 번 빌드
npm start # dist/index.js 실행
npm run clean # dist 삭제프로젝트 구조:
opinet-mcp/
├── src/
│ └── index.ts # MCP 서버 본체
├── dist/ # 빌드 결과물 (배포 대상)
├── package.json
├── tsconfig.json
├── README.md
└── LICENSE배포 (npm publish)
처음 publish할 때:
# 1) npm 로그인
npm login
# 2) package.json의 author / repository / name 확인 (필요하면 scoped: @yourname/opinet-mcp)
# 3) 빌드 + publish (prepublishOnly에서 자동 빌드됨)
npm publish
# scoped 패키지면
npm publish --access public이후 버전 업:
npm version patch # 0.1.0 -> 0.1.1
npm publishpublish 후에는 누구나 npx -y opinet-mcp 로 즉시 사용 가능합니다.
prepare스크립트가 있어서npm install시 자동 빌드됩니다. 즉, GitHub에서 직접 설치 (npm i github:KimJintak/opinet-mcp) 해도 동작합니다.
라이선스
MIT.
데이터 출처는 한국석유공사 오피넷이며, 데이터 사용 시 오피넷 이용 약관을 따르시기 바랍니다.
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/KimJintak/opinet-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server