opinet-mcp
Provides access to Korea Petroleum Corporation's Opinet fuel price API for South Korea. Enables querying of current national and regional fuel averages, recent price trends, lowest-price stations, and nearby gas station details through natural language.
README
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.js
MCP 클라이언트 등록
Claude Desktop / Claude Code
설정 파일 위치:
| OS | 경로 |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
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 | 오피넷 엔드포인트 | 설명 |
|---|---|---|
get_national_average_price |
avgAllPrice.do |
전국 주유소 평균가격 (현재) |
get_sido_average_price |
avgSidoPrice.do |
시도별 주유소 평균가격 (현재) |
get_recent_7days_price |
avgRecentPrice.do |
최근 7일간 전국 일일 평균가격 (추세) |
get_lowest_price_top20 |
lowTop10.do |
전국/지역별 최저가 주유소 TOP20 |
search_stations_around |
aroundAll.do |
KATEC 좌표 기준 반경 내 주유소 검색 |
get_station_detail |
detailById.do |
주유소 ID(UNI_ID)로 상세정보 조회 |
공통 코드
제품코드 (prodcd)
| 코드 | 제품 |
|---|---|
B027 |
보통휘발유 |
D047 |
자동차경유 |
B034 |
고급휘발유 |
C004 |
실내등유 |
K015 |
자동차부탄 |
시도코드 (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.js
API 키가 있을 때, 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 publish
publish 후에는 누구나 npx -y opinet-mcp 로 즉시 사용 가능합니다.
prepare스크립트가 있어서npm install시 자동 빌드됩니다. 즉, GitHub에서 직접 설치 (npm i github:KimJintak/opinet-mcp) 해도 동작합니다.
라이선스
MIT.
데이터 출처는 한국석유공사 오피넷이며, 데이터 사용 시 오피넷 이용 약관을 따르시기 바랍니다.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。