io.github.jjlabsio/korea-stock-mcp
MCP server for korea stock
โ
95ISCdevtools
Install
Config snippet generator goes here (5 client tabs)
README
# Korea Stock MCP Server
[๐ฐ๐ท ํ๊ตญ์ด](#korea-stock-mcp-server) | [๐บ๐ธ English](#english-version)
ํ๊ตญ ์ฃผ์ ๋ถ์์ ์ํ MCP ์๋ฒ์
๋๋ค.
DART(์ ์๊ณต์์์คํ
)์ KRX(ํ๊ตญ๊ฑฐ๋์) ๊ณต์ API๋ฅผ ํตํด ์ฃผ๊ฐ ์ ๋ณด์ ๊ณต์ ์๋ฃ ๊ธฐ๋ฐ์ AI๋ถ์์ด ๊ฐ๋ฅํฉ๋๋ค.
> ๐ฌ **๊ฐ์ ์์ฒญ & ํผ๋๋ฐฑ ํ์ํฉ๋๋ค!**
> ์ฌ์ฉํ๋ฉด์ ๋ถํธํ ์ ์ด๋ ๊ฐ์ ์์ด๋์ด๊ฐ ์์ผ์๋ฉด ํธํ๊ฒ ์ด๋ฉ์ผ ์ฃผ์ธ์.
> ๋น ๋ฅด๊ฒ ํ์ธํ๊ณ ๋ฐ์ํ๊ฒ ์ต๋๋ค.
> ๐ง wowlxx28@gmail.com
## ๐ฏ ์ฃผ์ ๊ธฐ๋ฅ
- ๐ **๊ณต์๊ฒ์** - ํ์ฌ๋ณ, ๊ธฐ๊ฐ๋ณ ๊ณต์ ๊ฒ์
- ๐ **๊ณต์ ๋ฐ์ดํฐ** - ๊ณต์๋ณด๊ณ ์ ์๋ณธํ์ผ ํ์ฑํ ๋ฐ์ดํฐ ์ ๊ณต
- ๐ผ **์ฌ๋ฌด์ ํ ๋ถ์** - XBRL ๊ธฐ๋ฐ ์์ธ ์ฌ๋ฌด ๋ฐ์ดํฐ
- ๐ **์ฃผ์ ๋ฐ์ดํฐ** - KRX(์ฝ์คํผ/์ฝ์ค๋ฅ) ์ผ๋ณ ์ฃผ๊ฐ์ ๋ณด, ์ข
๋ชฉ ๊ธฐ๋ณธ์ ๋ณด
## โก ๋น ๋ฅธ ์์
### 1๏ธโฃ API KEY ๋ฐ๊ธ
๋จผ์ DART์ KRX์ API KEY๋ฅผ ๋ฐ๊ธ๋ฐ์์ผ ํฉ๋๋ค.
#### ๐ DART API KEY ๋ฐ๊ธ
1. **ํ์๊ฐ์
**: [OPEN DART](https://opendart.fss.or.kr) ํ์๊ฐ์
2. **ํค ์ ์ฒญ**: [์ธ์ฆํค ์ ์ฒญ ํ์ด์ง](https://opendart.fss.or.kr/uss/umt/EgovMberInsertView.do)์์ API KEY ์ ์ฒญ
3. **ํค ํ์ธ**: [์คํAPI ์ด์ฉํํฉ](https://opendart.fss.or.kr/mng/apiUsageStatusView.do)์์ ๋ฐ๊ธ๋ API KEY ํ์ธ
#### ๐ KRX API KEY ๋ฐ๊ธ
1. **ํ์๊ฐ์
**: [KRX OPEN API](https://openapi.krx.co.kr/contents/OPP/MAIN/main/index.cmd)์์ ํ์๊ฐ์
๋ฐ ๋ก๊ทธ์ธ
2. **ํค ์ ์ฒญ**: ๋ง์ดํ์ด์ง โ API ์ธ์ฆํค ์ ์ฒญ์์ ์ ์ฒญ
3. **์๋น์ค ์ ์ฒญ**: ์น์ธ ํ ์๋น์ค์ด์ฉ โ ์ฃผ์ ๋ฉ๋ด๋ก ์ด๋
4. **API ์ด์ฉ์ ์ฒญ**: ๋ค์ 6๊ฐ ํญ๋ชฉ์์ ๊ฐ๊ฐ "API ์ด์ฉ์ ์ฒญ" ํด๋ฆญ
- ์ ๊ฐ์ฆ๊ถ ์ผ๋ณ๋งค๋งค์ ๋ณด
- ์ฝ์ค๋ฅ ์ผ๋ณ๋งค๋งค์ ๋ณด
- ์ฝ๋ฅ์ค ์ผ๋ณ๋งค๋งค์ ๋ณด
- ์ ๊ฐ์ฆ๊ถ ์ข
๋ชฉ๊ธฐ๋ณธ์ ๋ณด
- ์ฝ์ค๋ฅ ์ข
๋ชฉ๊ธฐ๋ณธ์ ๋ณด
- ์ฝ๋ฅ์ค ์ข
๋ชฉ๊ธฐ๋ณธ์ ๋ณด
> โฑ๏ธ **์น์ธ๊น์ง ์ฝ 1์ผ ์์๋ฉ๋๋ค.**
5. **ํค ํ์ธ**: ์น์ธ ํ ๋ง์ดํ์ด์ง โ API ์ธ์ฆํค ๋ฐ๊ธ๋ด์ญ์์ API KEY ํ์ธ
### 2๏ธโฃ Claude Desktop ์ค์
1. **Claude Desktop** ์คํ
2. **์ค์ ** โ **๊ฐ๋ฐ์** โ **๊ตฌ์ฑํธ์ง** ํด๋ฆญ
3. `claude_desktop_config.json` ํ์ผ์ ๋ค์ ๋ด์ฉ ์ถ๊ฐ:
```json
{
"mcpServers": {
"korea-stock-mcp": {
"command": "npx",
"args": ["-y", "korea-stock-mcp@latest"],
"env": {
"DART_API_KEY": "<YOUR_DART_API_KEY>",
"KRX_API_KEY": "<YOUR_KRX_API_KEY>"
}
}
}
}
```
4. **์ฌ์์**: Claude Desktop์ ์ฌ์์ํ์ฌ ์ค์ ์ ์ฉ
> ์ด์ Claude์์ ํ๊ตญ ์ฃผ์ ๋ฐ์ดํฐ ๋ถ์์ ์์ํ ์ ์์ต๋๋ค.
## ๋์ฉ๋ ๊ณต์ ๋ฌธ์ ์ฒ๋ฆฌ
์ผ๋ถ ๊ณต์๋ณด๊ณ ์(์ฌ์
๋ณด๊ณ ์, ๋ถ๊ธฐ๋ณด๊ณ ์ ๋ฑ)๋ ์ MB์ ๋ฌํ๋ ๋์ฉ๋ XML ๋ฌธ์์
๋๋ค.
์ด๋ฐ ๋ฌธ์๋ฅผ ํ ๋ฒ์ ๋ชจ๋ ์ฒ๋ฆฌํ๋ฉด AI ์๋ต ํ๋๋ฅผ ์ด๊ณผํ๊ฑฐ๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
### ์ด๋ป๊ฒ ๋์ํ๋์?
๋ฌธ์ ํฌ๊ธฐ์ ๋ฐ๋ผ ์๋์ผ๋ก ์ฒ๋ฆฌ ๋ฐฉ์์ด ๋ฌ๋ผ์ง๋๋ค.
- **์์ฉ๋ ๋ฌธ์ (1MB ๋ฏธ๋ง)**: ๋ฌธ์ ์ ์ฒด๋ฅผ ๋ฐ๋ก ๋ฐํํฉ๋๋ค.
- **๋์ฉ๋ ๋ฌธ์ (1MB ์ด์)**: ๋ฌธ์ ์ ์ฒด ๋์ **๋ชฉ์ฐจ(TOC)**๋ฅผ ๋จผ์ ๋ฐํํฉ๋๋ค. Claude๊ฐ ๋ชฉ์ฐจ๋ฅผ ๋ณด๊ณ ์ง๋ฌธ๊ณผ ๊ด๋ จ๋ ์น์
์ ์๋์ผ๋ก ์ ํํด ๋ด์ฉ์ ๊ฐ์ ธ์ต๋๋ค.
### ์ ์ ์๋ด
> **๋ณ๋๋ก ์กฐ์ํ ํ์๊ฐ ์์ต๋๋ค.** Claude๊ฐ ๋์ฉ๋ ๋ฌธ์๋ฅผ ์๋์ผ๋ก ์ฒ๋ฆฌํฉ๋๋ค.
๋ฌธ์๊ฐ ํฌ๋ฉด Claude๊ฐ ์๋์ผ๋ก ๋ค์๊ณผ ๊ฐ์ด ๋์ํฉ๋๋ค:
1. ๋ฌธ์ ๋ชฉ์ฐจ๋ฅผ ํ์ธํฉ๋๋ค.
2. ์ง๋ฌธ๊ณผ ๊ด๋ จ๋ ์น์
์ ์๋์ผ๋ก ์ ํํด ๋ด์ฉ์ ์กฐํํฉ๋๋ค.
3. ๋ต๋ณ ํ ๋๋จธ์ง ์น์
๋ชฉ๋ก์ ์๋ดํ๋ฏ๋ก, ์ถ๊ฐ๋ก ๊ถ๊ธํ ์น์
์ด ์์ผ๋ฉด ์์ฒญํ ์ ์์ต๋๋ค.
์์:
- "์ฌ์
๋ณด๊ณ ์์์ ๋งค์ถ ํํฉ ์๋ ค์ค" โ Claude๊ฐ ๋งค์ถ ๊ด๋ จ ์น์
์ ์๋ ์ ํ
- "๋ฐฉ๊ธ ๋ชฉ์ฐจ์์ 3๋ฒ ์น์
๋ ์กฐํํด์ค" โ ํน์ ์น์
์ง์ ์์ฒญ ๊ฐ๋ฅ
### ๐ก ๋ณต์กํ ์ง๋ฌธ์ ๋จ๊ณ๋ณ๋ก ๋๋ ์ ์ง๋ฌธํ์ธ์
ํ ๋ฒ์ ์ํ๋ ๋ต์ ์ป์ง ๋ชปํ ๋๋, ์ง๋ฌธ์ ์ฌ๋ฌ ๋จ๊ณ๋ก ๋๋๋ฉด ๋ ์ ํํ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์์ต๋๋ค.
์๋ฅผ ๋ค์ด, "์ธ๋ฒคํ
๋ผ์ ์ฆ๊ถ์ ๊ณ ์์์ ์ธ๊ตญ์ธ ๋ฐฐ์ ๋ด์ญ ์๋ ค์ค"๊ฐ ํ ๋ฒ์ ์ ๋๋ค๋ฉด:
1. "์ธ๋ฒคํ
๋ผ์ ๊ณ ์ ๋ฒํธ(corp_code) ์๋ ค์ค"
2. "๊ทธ ํ์ฌ์ ์ฆ๊ถ๋ฐํ ๊ด๋ จ ๊ณต์ ๋ชฉ๋ก ๋ณด์ฌ์ค"
3. "ํด๋น ๊ณต์ ๋ณธ๋ฌธ์ ๊ฐ์ ธ์์ค"
4. "์ธ๊ตญ์ธ ๋ฐฐ์ ๋ด์ญ์ ์ฐพ์์ค"
์ด๋ ๊ฒ ๋จ๊ณ๋ณ๋ก ์งํํ๋ฉด ๊ฐ ๋จ๊ณ์ ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ๋ฉด์ ์ํ๋ ์ ๋ณด์ ๋๋ฌํ ์ ์์ต๋๋ค.
---
## ์ฌ์ฉ ๊ฐ๋ฅํ ๋๊ตฌ
### DART (์ ์๊ณต์์์คํ
)
1. **get_disclosure_list** - ๊ณต์๊ฒ์
- ๊ณต์ ์ ํ๋ณ, ํ์ฌ๋ณ, ๋ ์ง๋ณ ๊ณต์๋ณด๊ณ ์ ๊ฒ์
2. **get_corp_code** - ๊ณ ์ ๋ฒํธ ์กฐํ
- DART ๋ฑ๋ก ๊ณต์๋์ํ์ฌ์ ๊ณ ์ ๋ฒํธ, ํ์ฌ๋ช
, ์ข
๋ชฉ์ฝ๋ ์ ๊ณต
- ํ์ฌ๋ช
(`corp_name`) ๋๋ ์ข
๋ชฉ์ฝ๋(`stock_code`) ์ค ํ๋๋ก ์กฐํ ๊ฐ๋ฅ
- ํ์ฌ๋ช
๊ฒ์ ์คํจ ์ ์ข
๋ชฉ์ฝ๋๋ก ์ฌ์๋ ์๋ด
3. **get_disclosure** - ๊ณต์๋ณด๊ณ ์ ์๋ฌธ
- DART API๋ฅผ ํตํ ๊ณต์๋ณด๊ณ ์ ์๋ณธํ์ผ ํ์ฑ
- ๋์ฉ๋ ๋ฌธ์์ ๊ฒฝ์ฐ ๋ชฉ์ฐจ๋ฅผ ๋ฐํํ๋ฉฐ, `section_id`๋ก ํน์ ์น์
์กฐํ ๊ฐ๋ฅ
4. **get_financial_statement** - ์ฌ๋ฌด์ ํ
- ์์ฅ๋ฒ์ธ ๋ฐ ์ฃผ์ ๋น์์ฅ๋ฒ์ธ XBRL ์ฌ๋ฌด์ ํ
- ์ ๊ธฐ๋ณด๊ณ ์ ๋ด ๋ชจ๋ ๊ณ์ ๊ณผ๋ชฉ ๋ฐ์ดํฐ ์ ๊ณต
### KRX (ํ๊ตญ๊ฑฐ๋์)
1. **get_stock_base_info** - ์ข
๋ชฉ ๊ธฐ๋ณธ์ ๋ณด
- ์ฝ์คํผ, ์ฝ์ค๋ฅ, ์ฝ๋ฅ์ค ์์ฅ ์ข
๋ชฉ ๊ธฐ๋ณธ ์ ๋ณด
- ์ข
๋ชฉ๋ช
, ์ข
๋ชฉ์ฝ๋, ์์ฅ๊ตฌ๋ถ ๋ฑ ๊ธฐ๋ณธ ๋ฐ์ดํฐ
2. **get_stock_trade_info** - ์ผ๋ณ ๋งค๋งค์ ๋ณด
- ์ฝ์คํผ, ์ฝ์ค๋ฅ, ์ฝ๋ฅ์ค ์ข
๋ชฉ๋ณ ์ผ๋ณ ๊ฑฐ๋ ๋ฐ์ดํฐ
- ์ฃผ๊ฐ, ๊ฑฐ๋๋, ์๊ฐ์ด์ก ๋ฑ ์์ธ ๊ฑฐ๋ ์ ๋ณด
3. **get_market_type** - ์์ฅ๊ตฌ๋ถ ์กฐํ
- ์ข
๋ชฉ์ฝ๋๋ก ํด๋น ์ข
๋ชฉ์ ์์ฅ๊ตฌ๋ถ(์ฝ์คํผ/์ฝ์ค๋ฅ/์ฝ๋ฅ์ค) ์กฐํ
- ์ฃผ์ ๋ฐ์ดํฐ ์กฐํ ์ ํ์ํ ์์ฅ ์ ๋ณด ์ ๊ณต
### ๊ธฐํ ๋๊ตฌ
1. **get_today_date** - ์ค๋ ๋ ์ง ์กฐํ
- ํ์ฌ ๋ ์ง๋ฅผ YYYYMMDD ํ์์ผ๋ก ์ ๊ณต
- AI์ ์ ํํ ๋ ์ง ์กฐํ๋ฅผ ์ํ ๋๊ตฌ
## ์ค์ ์ฌ์ฉ ์์
### ๐ ์ฌ๋ฌด ๋ถ์ ์์
**ํ๋กฌํํธ**: "์ผ์์ํ์ 2023๋
, 2024๋
1~4๋ถ๊ธฐ, 2025๋
1,2๋ถ๊ธฐ ๋งค์ถ, ์์
์ด์ต ์กฐ์ฌํด์ฃผ๊ณ ์ฑ์ฅ๋ฅ ๋ ์กฐ์ฌํด์ค"
โ [์ผ์์ํ ๋ถ์ ๊ฒฐ๊ณผ ๋ณด๊ธฐ](./example/์ผ์์ํ.md)
**ํ๋กฌํํธ**: "์์ดํผ์์ 23๋
1๋ถ๊ธฐ๋ถํฐ 25๋
2๋ถ๊ธฐ๊น์ง์ ๋งค์ถ, ์์
์ด์ต ์ฑ์ฅ๊ณผ ์ฃผ๊ฐ, ์๊ฐ์ด์ก ํ๋ฆ์ ์กฐ์ฌํด์ค"
โ [์์ดํผ์ ๋ถ์ ๊ฒฐ๊ณผ ๋ณด๊ธฐ](./example/์์ดํผ์.md)
### ๐ข ๊ธฐ์
๋ถ์ ์์
**ํ๋กฌํํธ**: "HJ์ค๊ณต์
์ ๋ญ ํด์ ๋์ ๋ฒ๋ ํ์ฌ์ธ์ง๋ ์ฌ์
๋ถ๋ฌธ๋ณ ๋งค์ถ๊น์ง ๊ฐ์ด ์๋ ค์ค"
โ [HJ์ค๊ณต์
๋ถ์ ๊ฒฐ๊ณผ ๋ณด๊ธฐ](./example/HJ์ค๊ณต์
.md)
### ๐ ๊ณต์ ๋ถ์ ์์
**ํ๋กฌํํธ**: "Get the foreign allocation details for an IPO (e.g., Inventera / 0007J0)"
โ [์ธ๋ฒคํ
๋ผ IPO ์ธ๊ตญ์ธ ๋ฐฐ์ ๋ถ์ ๊ฒฐ๊ณผ ๋ณด๊ธฐ](./example/์ธ๋ฒคํ
๋ผ.md)
## API ๋ฐ์ดํฐ ์์ค
- **DART (์ ์๊ณต์์์คํ
)**: ์์ฅ๊ธฐ์
๊ณต์ ์ ๋ณด ๋ฐ ์ฌ๋ฌด์ ํ
- **KRX (ํ๊ตญ๊ฑฐ๋์)**: ์ข
๋ชฉ ๊ธฐ๋ณธ์ ๋ณด ๋ฐ ์ผ๋ณ ๋งค๋งค์ ๋ณด
## ๋ก์ปฌ ๊ฐ๋ฐ ๋ฐ ํ
์คํธ
์์ค๋ฅผ ์์ ํ๋ฉด์ ๋ฐ๋ก ํ
์คํธํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
### 1๏ธโฃ ์์กด์ฑ ์ค์น
```bash
npm install
```
### 2๏ธโฃ ํ๊ฒฝ๋ณ์ ์ค์
ํ๋ก์ ํธ ๋ฃจํธ์ `.env` ํ์ผ์ ์์ฑํฉ๋๋ค:
```bash
DART_API_KEY=your_dart_api_key
KRX_API_KEY=your_krx_api_key
```
### 3๏ธโฃ MCP Inspector ์คํ
```bash
npm run inspect
```
ํฐ๋ฏธ๋์ ์ถ๋ ฅ๋๋ ์ฃผ์(`http://localhost:6274` ๋ฑ)๋ฅผ ๋ธ๋ผ์ฐ์ ์์ ์ด๋ฉด MCP Inspector UI๊ฐ ์ด๋ฆฝ๋๋ค.
Inspector์์ **Connect** ๋ฒํผ์ ํด๋ฆญํ ํ, ์ข์ธก ํด ๋ชฉ๋ก์์ ์ํ๋ ํด์ ์ ํํด ์ง์ ํธ์ถํ ์ ์์ต๋๋ค.
### 4๏ธโฃ ์์ค ์์ ํ ์ฌํ
์คํธ
`src/` ํ์ผ์ ์์ ํ๊ณ ์ ์ฅํ๋ฉด ์๋ฒ๊ฐ ์๋์ผ๋ก ์ฌ์์๋ฉ๋๋ค.
Inspector์์ **Reconnect** ๋ฒํผ์ ํด๋ฆญํ๋ฉด ๋ณ๊ฒฝ์ฌํญ์ด ์ฆ์ ๋ฐ์๋ฉ๋๋ค.
> **์ฐธ๊ณ **: Node.js 18 ์ด์์ด ํ์ํฉ๋๋ค.
## ๊ธฐ์ฌํ๊ธฐ
๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค! Pull Request๋ฅผ ๋ณด๋ด์ฃผ์ธ์.
1. ์ด ์ ์ฅ์๋ฅผ ํฌํฌํ์ธ์
2. ๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ ๋ง๋์ธ์ (`git checkout -b feature/AmazingFeature`)
3. ๋ณ๊ฒฝ์ฌํญ์ ์ปค๋ฐํ์ธ์ (`git commit -m 'Add some AmazingFeature'`)
4. ๋ธ๋์น์ ํธ์ํ์ธ์ (`git push origin feature/AmazingFeature`)
5. Pull Request๋ฅผ ์ด์ด์ฃผ์ธ์
## ๋ผ์ด์ ์ค
ISC ๋ผ์ด์ ์ค
## ์ง์
- ๐ ์ด์๊ฐ ์๋ค๋ฉด GitHub Issues์