krx-cli 1.3.1 → 1.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +119 -34
- package/SKILL.md +99 -4
- package/dist/cli.js +55096 -12356
- package/dist/cli.js.map +4 -4
- package/dist/mcp.js +1102 -144
- package/dist/mcp.js.map +4 -4
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -8,6 +8,12 @@ Claude Code, GPT, Cursor 등의 AI 에이전트가 Bash tool을 통해 한국
|
|
|
8
8
|
|
|
9
9
|
- **Agent-Native**: JSON 출력 기본, 시맨틱 exit code, 스키마 인트로스펙션
|
|
10
10
|
- **전체 시장 커버리지**: 지수, 주식, ETF/ETN/ELW, 채권, 파생상품, 일반상품, ESG (31개 엔드포인트)
|
|
11
|
+
- **종목 검색**: 종목명으로 검색 후 코드 조회 (`krx stock search`)
|
|
12
|
+
- **시장 요약**: 한 번의 호출로 지수/상승·하락/Top movers 확인 (`krx market summary`)
|
|
13
|
+
- **워치리스트**: 관심 종목 저장 및 일괄 시세 조회 (`krx watchlist`)
|
|
14
|
+
- **기간 조회**: `--from/--to`로 여러 날짜 데이터 병렬 조회
|
|
15
|
+
- **데이터 파이프라인**: `--sort`, `--limit`, `--code` 로 서버 사이드 필터링
|
|
16
|
+
- **파일 캐싱**: 과거 데이터 자동 캐싱으로 rate limit 절약
|
|
11
17
|
- **안전한 사용**: 입력 검증, rate limit 추적, dry-run 지원
|
|
12
18
|
- **서비스 승인 관리**: API별 승인 상태 자동 확인
|
|
13
19
|
|
|
@@ -70,6 +76,53 @@ krx index list --date 20260310 --market kosdaq
|
|
|
70
76
|
krx stock list --date 20260310 --market kospi
|
|
71
77
|
krx stock list --date 20260310 --market kosdaq
|
|
72
78
|
krx stock info --market kospi
|
|
79
|
+
krx stock search 삼성전자 # 종목 검색
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 시장 요약
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
krx market summary # 최근 거래일 시장 요약
|
|
86
|
+
krx market summary --date 20260310 # 특정 날짜
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 기간 조회
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
krx index list --market kospi --from 20260301 --to 20260310
|
|
93
|
+
krx stock list --market kospi --from 20260301 --to 20260305 --code KR7005930003
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### 정렬 및 제한
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
krx stock list --date 20260310 --market kospi --sort FLUC_RT --limit 10
|
|
100
|
+
krx stock list --date 20260310 --market kospi --sort ACC_TRDVAL --asc --limit 5
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 워치리스트
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
krx watchlist add 삼성전자 # 종목 검색 후 워치리스트 추가
|
|
107
|
+
krx watchlist remove 삼성전자 # 정확한 이름으로 제거
|
|
108
|
+
krx watchlist remove KR7005930003 # 종목코드로 제거
|
|
109
|
+
krx watchlist list # 워치리스트 조회
|
|
110
|
+
krx watchlist show # 워치리스트 종목 시세 조회
|
|
111
|
+
krx watchlist show --date 20260310 # 특정 날짜 시세
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
### 캐시 관리
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
krx cache status # 캐시 현황 조회
|
|
118
|
+
krx cache clear # 캐시 전체 삭제
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
### 버전 관리
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
krx version # 현재 버전 확인 및 최신 버전 비교
|
|
125
|
+
krx update # 최신 버전으로 업데이트
|
|
73
126
|
```
|
|
74
127
|
|
|
75
128
|
### ETF/ETN/ELW 조회
|
|
@@ -91,6 +144,10 @@ krx bond list --date 20260310 --market general
|
|
|
91
144
|
```bash
|
|
92
145
|
krx derivative list --date 20260310 --type futures
|
|
93
146
|
krx derivative list --date 20260310 --type options
|
|
147
|
+
krx derivative list --date 20260310 --type futures-kospi
|
|
148
|
+
krx derivative list --date 20260310 --type futures-kosdaq
|
|
149
|
+
krx derivative list --date 20260310 --type options-kospi
|
|
150
|
+
krx derivative list --date 20260310 --type options-kosdaq
|
|
94
151
|
```
|
|
95
152
|
|
|
96
153
|
### 일반상품 조회
|
|
@@ -116,12 +173,22 @@ krx schema stock.stk_bydd_trd
|
|
|
116
173
|
|
|
117
174
|
## 글로벌 옵션
|
|
118
175
|
|
|
119
|
-
| 옵션 | 설명
|
|
120
|
-
| ----------------------- |
|
|
121
|
-
| `-o, --output <format>` | 출력 형식: json, table, ndjson | json (파이프) / table (터미널) |
|
|
122
|
-
| `-f, --fields <fields>` | 출력 필드 필터 (쉼표 구분)
|
|
123
|
-
| `--
|
|
124
|
-
|
|
|
176
|
+
| 옵션 | 설명 | 기본값 |
|
|
177
|
+
| ----------------------- | ----------------------------------- | ------------------------------ |
|
|
178
|
+
| `-o, --output <format>` | 출력 형식: json, table, ndjson, csv | json (파이프) / table (터미널) |
|
|
179
|
+
| `-f, --fields <fields>` | 출력 필드 필터 (쉼표 구분) | 전체 |
|
|
180
|
+
| `--code <isuCd>` | 종목코드 필터 (ISU_CD) | - |
|
|
181
|
+
| `--sort <field>` | 결과 정렬 기준 필드 | - |
|
|
182
|
+
| `--asc` | 오름차순 정렬 (기본: 내림차순) | - |
|
|
183
|
+
| `--limit <n>` | 결과 개수 제한 | - |
|
|
184
|
+
| `--from <date>` | 기간 조회 시작일 (YYYYMMDD) | - |
|
|
185
|
+
| `--to <date>` | 기간 조회 종료일 (YYYYMMDD) | - |
|
|
186
|
+
| `--no-cache` | 캐시 무시하고 새로 조회 | - |
|
|
187
|
+
| `--filter <expression>` | 필터 표현식 (예: "FLUC_RT > 5") | - |
|
|
188
|
+
| `--save <path>` | 결과를 파일로 저장 | - |
|
|
189
|
+
| `--retries <n>` | 네트워크 에러 시 재시도 (기본: 3) | - |
|
|
190
|
+
| `--dry-run` | API 호출 없이 요청 내용 출력 | - |
|
|
191
|
+
| `-v, --verbose` | 상세 로그 (stderr) | - |
|
|
125
192
|
|
|
126
193
|
## Exit Codes
|
|
127
194
|
|
|
@@ -224,16 +291,19 @@ mkdir -p ~/.claude/skills && cp SKILL.md ~/.claude/skills/krx-cli.md
|
|
|
224
291
|
mkdir -p ~/.cursor/skills && cp SKILL.md ~/.cursor/skills/krx-cli.md
|
|
225
292
|
```
|
|
226
293
|
|
|
227
|
-
## MCP 서버
|
|
294
|
+
## MCP 서버
|
|
228
295
|
|
|
229
|
-
CLI 외에 MCP(Model Context Protocol) 서버도 제공합니다.
|
|
296
|
+
CLI 외에 MCP(Model Context Protocol) 서버도 제공합니다. 두 가지 전송 방식을 지원합니다:
|
|
230
297
|
|
|
231
|
-
|
|
298
|
+
| 전송 방식 | 바이너리 | 지원 클라이언트 |
|
|
299
|
+
| --------------- | ----------- | --------------- |
|
|
300
|
+
| stdio | `krx-mcp` | Claude Desktop |
|
|
301
|
+
| Streamable HTTP | `krx serve` | ChatGPT 웹 |
|
|
232
302
|
|
|
233
303
|
API 키는 `krx auth set <key>`로 등록한 것이 자동으로 사용됩니다.
|
|
234
304
|
`krx-mcp`는 `npm install -g krx-cli`로 설치하면 함께 설치됩니다.
|
|
235
305
|
|
|
236
|
-
### Claude Desktop
|
|
306
|
+
### Claude Desktop (stdio)
|
|
237
307
|
|
|
238
308
|
설정 파일 위치:
|
|
239
309
|
|
|
@@ -250,38 +320,52 @@ API 키는 `krx auth set <key>`로 등록한 것이 자동으로 사용됩니다
|
|
|
250
320
|
}
|
|
251
321
|
```
|
|
252
322
|
|
|
253
|
-
|
|
323
|
+
설정 후 앱을 재시작하면 MCP 도구가 활성화됩니다.
|
|
254
324
|
|
|
255
|
-
|
|
325
|
+
### ChatGPT 웹 (Streamable HTTP)
|
|
256
326
|
|
|
257
|
-
|
|
258
|
-
- **Windows**: `%LOCALAPPDATA%\OpenAI\ChatGPT\mcp.json`
|
|
327
|
+
ChatGPT 웹은 원격 MCP 서버만 지원하므로, HTTP 서버를 실행한 뒤 ngrok으로 외부에 노출해야 합니다.
|
|
259
328
|
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
}
|
|
267
|
-
}
|
|
329
|
+
```bash
|
|
330
|
+
# 터미널 1: MCP 서버 실행
|
|
331
|
+
krx serve --port 3000 --host 0.0.0.0
|
|
332
|
+
|
|
333
|
+
# 터미널 2: ngrok으로 외부 노출
|
|
334
|
+
ngrok http 3000
|
|
268
335
|
```
|
|
269
336
|
|
|
270
|
-
|
|
337
|
+
1. ngrok 출력에서 `https://xxxx.ngrok.io` URL 복사
|
|
338
|
+
2. ChatGPT 웹 → Settings → Developer → MCP Server 추가
|
|
339
|
+
3. URL: `https://xxxx.ngrok.io/mcp`
|
|
340
|
+
|
|
341
|
+
Health check: `http://localhost:3000/health`
|
|
271
342
|
|
|
272
343
|
### 제공 Tool
|
|
273
344
|
|
|
274
|
-
| Tool
|
|
275
|
-
|
|
|
276
|
-
| `krx_index`
|
|
277
|
-
| `krx_stock`
|
|
278
|
-
| `krx_etp`
|
|
279
|
-
| `krx_bond`
|
|
280
|
-
| `krx_derivative`
|
|
281
|
-
| `krx_commodity`
|
|
282
|
-
| `krx_esg`
|
|
283
|
-
| `
|
|
284
|
-
| `
|
|
345
|
+
| Tool | 설명 |
|
|
346
|
+
| -------------------- | -------------------------------------------- |
|
|
347
|
+
| `krx_index` | 지수 일별시세 (KOSPI/KOSDAQ/KRX/채권/파생) |
|
|
348
|
+
| `krx_stock` | 주식 일별매매정보 + 종목 기본정보 |
|
|
349
|
+
| `krx_etp` | ETF/ETN/ELW 일별매매정보 |
|
|
350
|
+
| `krx_bond` | 채권 일별매매정보 (국채/일반/소액) |
|
|
351
|
+
| `krx_derivative` | 선물/옵션 일별매매정보 |
|
|
352
|
+
| `krx_commodity` | 금/석유/배출권 일별매매정보 |
|
|
353
|
+
| `krx_esg` | ESG 지수/채권/ETP 정보 |
|
|
354
|
+
| `krx_search` | 종목명 검색 (KOSPI + KOSDAQ) |
|
|
355
|
+
| `krx_market_summary` | 시장 요약 (지수/상승·하락/Top movers/거래량) |
|
|
356
|
+
| `krx_watchlist` | 관심종목 관리 (추가/제거/조회/시세) |
|
|
357
|
+
| `krx_schema` | 엔드포인트 응답 필드 스키마 조회 |
|
|
358
|
+
| `krx_rate_limit` | 일일 API 호출 현황 조회 |
|
|
359
|
+
|
|
360
|
+
### 제공 Resource
|
|
361
|
+
|
|
362
|
+
MCP Resource로 읽기 전용 상태 데이터를 노출합니다.
|
|
363
|
+
|
|
364
|
+
| Resource | 설명 |
|
|
365
|
+
| ---------------------- | ---------------------------------- |
|
|
366
|
+
| `krx://watchlist` | 워치리스트 종목 목록 (JSON) |
|
|
367
|
+
| `krx://rate-limit` | 일일 API 호출 현황 (JSON) |
|
|
368
|
+
| `krx://service-status` | 카테고리별 서비스 승인 상태 (JSON) |
|
|
285
369
|
|
|
286
370
|
### 사용 예시
|
|
287
371
|
|
|
@@ -304,6 +388,7 @@ MCP 클라이언트에서 자연어로 요청하면 됩니다:
|
|
|
304
388
|
pnpm install
|
|
305
389
|
pnpm build
|
|
306
390
|
pnpm test
|
|
391
|
+
pnpm test:e2e
|
|
307
392
|
pnpm typecheck
|
|
308
393
|
pnpm lint
|
|
309
394
|
```
|
package/SKILL.md
CHANGED
|
@@ -7,7 +7,7 @@ install: npm install -g krx-cli
|
|
|
7
7
|
binary: krx
|
|
8
8
|
metadata:
|
|
9
9
|
author: kyo504
|
|
10
|
-
version: "1.
|
|
10
|
+
version: "1.6.0"
|
|
11
11
|
invariants:
|
|
12
12
|
- Always use YYYYMMDD format for --date (e.g., 20260310)
|
|
13
13
|
- Data is T-1 (previous trading day), available from 2010 onwards
|
|
@@ -118,6 +118,55 @@ krx esg list --date 20260310 --type etp # ESG ETP
|
|
|
118
118
|
krx esg list --date 20260310 --type sri-bond # SRI bonds
|
|
119
119
|
```
|
|
120
120
|
|
|
121
|
+
### Stock Search (종목 검색)
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
krx stock search 삼성전자 # Search by name (KOSPI + KOSDAQ)
|
|
125
|
+
krx stock search SK # Partial match
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Market Summary (시장 요약)
|
|
129
|
+
|
|
130
|
+
```bash
|
|
131
|
+
krx market summary # Today's market overview
|
|
132
|
+
krx market summary --date 20260310 # Specific date
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Returns: KOSPI/KOSDAQ indices, top 5 gainers/losers, advancing/declining/unchanged counts, total volume/value.
|
|
136
|
+
|
|
137
|
+
### Watchlist (관심종목)
|
|
138
|
+
|
|
139
|
+
```bash
|
|
140
|
+
krx watchlist add 삼성전자 # Search and add to watchlist
|
|
141
|
+
krx watchlist remove 삼성전자 # Remove by exact name
|
|
142
|
+
krx watchlist remove KR7005930003 # Remove by ISU_CD
|
|
143
|
+
krx watchlist list # List all watchlist entries
|
|
144
|
+
krx watchlist show # Show prices for watchlist stocks
|
|
145
|
+
krx watchlist show --date 20260310 # Specific date
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Cache Management
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
krx cache status # Show cache size, files, dates
|
|
152
|
+
krx cache clear # Clear all cached data
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Version & Update
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
krx version # Show current version and check for updates
|
|
159
|
+
krx update # Update to the latest version (npm install -g krx-cli)
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
### MCP HTTP Server
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
krx serve # Start on http://127.0.0.1:3000/mcp
|
|
166
|
+
krx serve --port 8080 # Custom port
|
|
167
|
+
krx serve --host 0.0.0.0 # Bind to all interfaces (for ngrok)
|
|
168
|
+
```
|
|
169
|
+
|
|
121
170
|
### Schema (introspection)
|
|
122
171
|
|
|
123
172
|
```bash
|
|
@@ -128,9 +177,19 @@ krx schema index.kospi_dd_trd # Specific endpoint schema
|
|
|
128
177
|
## Global Flags
|
|
129
178
|
|
|
130
179
|
```
|
|
131
|
-
--output, -o <format> json (default) | table | ndjson
|
|
180
|
+
--output, -o <format> json (default) | table | ndjson | csv
|
|
132
181
|
--fields, -f <fields> Filter output fields: --fields ISU_NM,TDD_CLSPRC,FLUC_RT
|
|
182
|
+
--code <isuCd> Filter by stock code (ISU_CD)
|
|
183
|
+
--sort <field> Sort results by field name
|
|
184
|
+
--asc Sort ascending (default: descending)
|
|
185
|
+
--limit <n> Limit number of results
|
|
186
|
+
--from <date> Start date for range query (YYYYMMDD)
|
|
187
|
+
--to <date> End date for range query (YYYYMMDD)
|
|
188
|
+
--no-cache Bypass cache and fetch fresh data
|
|
189
|
+
--filter <expression> Filter results (e.g. "FLUC_RT > 5", "MKT_NM == KOSPI")
|
|
133
190
|
--dry-run Show request details without calling API
|
|
191
|
+
--save <path> Save output to file instead of stdout
|
|
192
|
+
--retries <n> Max retries on network error (default: 3)
|
|
134
193
|
--verbose, -v Verbose logging to stderr
|
|
135
194
|
```
|
|
136
195
|
|
|
@@ -154,10 +213,36 @@ krx schema index.kospi_dd_trd # Specific endpoint schema
|
|
|
154
213
|
krx index list --date 20260310 --market kospi --fields IDX_NM,CLSPRC_IDX,FLUC_RT
|
|
155
214
|
```
|
|
156
215
|
|
|
157
|
-
### Get Samsung Electronics stock price
|
|
216
|
+
### Get Samsung Electronics stock price (by search)
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
krx stock search 삼성전자 # Find ISU_CD first
|
|
220
|
+
krx stock list --date 20260310 --market kospi --code KR7005930003
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
### Top 5 gainers
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
krx stock list --date 20260310 --market kospi --sort FLUC_RT --limit 5 --fields ISU_NM,TDD_CLSPRC,FLUC_RT
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Date range query (multi-day)
|
|
158
230
|
|
|
159
231
|
```bash
|
|
160
|
-
krx
|
|
232
|
+
krx index list --market kospi --from 20260301 --to 20260310 --fields IDX_NM,BAS_DD,CLSPRC_IDX
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### Quick market overview
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
krx market summary --date 20260310
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
### Track and monitor stocks
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
krx watchlist add 삼성전자 # Add to watchlist
|
|
245
|
+
krx watchlist show --date 20260310 # View prices for all watchlist stocks
|
|
161
246
|
```
|
|
162
247
|
|
|
163
248
|
### Check API availability before querying
|
|
@@ -294,3 +379,13 @@ krx schema index.kospi_dd_trd # Shows params + responseFields
|
|
|
294
379
|
krx schema stock.stk_bydd_trd # Stock endpoint fields
|
|
295
380
|
krx schema --all # All 31 endpoints
|
|
296
381
|
```
|
|
382
|
+
|
|
383
|
+
## MCP Resources
|
|
384
|
+
|
|
385
|
+
Read-only state data exposed as MCP Resources (for MCP clients):
|
|
386
|
+
|
|
387
|
+
| Resource | Description |
|
|
388
|
+
| ---------------------- | ----------------------------------- |
|
|
389
|
+
| `krx://watchlist` | Watchlist entries (JSON) |
|
|
390
|
+
| `krx://rate-limit` | Daily API call status (JSON) |
|
|
391
|
+
| `krx://service-status` | Per-category approval status (JSON) |
|