OpenDART MCP Server
by Dayoooun
README.md
# OpenDART MCP Server ๐ฐ๐ท
[](https://opensource.org/licenses/MIT)
[](https://www.python.org/downloads/)
[](https://vercel.com)
ํ๊ตญ ๊ธ์ต๊ฐ๋
์ ์ ์๊ณต์์์คํ
(DART) API๋ฅผ MCP(Model Context Protocol)๋ก ์ ๊ณตํ๋ ์๋ฒ์
๋๋ค.
> **AI ์ด์์คํดํธ๊ฐ ํ๊ตญ ์์ฅ๊ธฐ์
์ ๊ณต์, ์ฌ๋ฌด์ ๋ณด, ๊ธฐ์
์ ๋ณด๋ฅผ ์ค์๊ฐ์ผ๋ก ์กฐํํ ์ ์์ต๋๋ค.**
>
> ๐
**์ง์ ๋ฐ์ดํฐ**: 2023๋
~ 2025๋
์ต์ (3๋ถ๊ธฐ) ๋ชจ๋ ์กฐํ ๊ฐ๋ฅ!
## ๐ฌ ์์ฐ ์์
[](https://www.youtube.com/watch?v=7U9Go4PiFxA)
> ๐ฅ ํด๋ฆญํ๋ฉด YouTube์์ ์์ฐ ์์์ ๋ณผ ์ ์์ต๋๋ค!
## โจ ์ฃผ์ ๊ธฐ๋ฅ (14๊ฐ ๋๊ตฌ)
### ๐ ๊ธฐ์
๊ฒ์
| ๊ธฐ๋ฅ | ์ค๋ช
|
|------|------|
| `find_company` | **๊ธฐ์
๋ช
์ผ๋ก corp_code ๊ฒ์** (114,951๊ฐ ์ ์ฒด ๊ธฐ์
) |
### ๐ ๊ณต์/๊ธฐ์
์ ๋ณด
| ๊ธฐ๋ฅ | ์ค๋ช
|
|------|------|
| `search_disclosures` | ๊ณต์ ๊ฒ์ (๊ธฐ๊ฐ, ๊ธฐ์
, ์์ฅ ํํฐ๋ง) |
| `get_company_info` | ๊ธฐ์
๊ธฐ๋ณธ์ ๋ณด (ํ์ฌ๋ช
, ๋ํ์, ์
์ข
๋ฑ) |
### ๐ฐ ์ฌ๋ฌด์ ๋ณด
| ๊ธฐ๋ฅ | ์ค๋ช
|
|------|------|
| `get_financial_account` | ์ฃผ์ ์ฌ๋ฌด๊ณ์ (์์ฐ, ๋ถ์ฑ, ๋งค์ถ, ์์
์ด์ต ๋ฑ) |
| `get_full_financial_statement` | ์ ์ฒด ์ฌ๋ฌด์ ํ (BS, IS, CF ๋ฑ) |
| `get_financial_index` | โญ **์ฃผ์ ์ฌ๋ฌด์งํ** (ROE, ROA, ๋ถ์ฑ๋น์จ, PER, PBR ๋ฑ) |
| `get_dividend_info` | ๋ฐฐ๋น ์ ๋ณด |
### ๐ฅ ์ธ์ ์ ๋ณด
| ๊ธฐ๋ฅ | ์ค๋ช
|
|------|------|
| `get_executives` | ์์ ํํฉ |
| `get_employees` | ์ง์ ํํฉ (ํ๊ท ๊ธ์ฌ, ๊ทผ์์ฐ์ ๋ฑ) |
### ๐ ์ง๋ถ์ ๋ณด
| ๊ธฐ๋ฅ | ์ค๋ช
|
|------|------|
| `get_largest_shareholders` | ์ต๋์ฃผ์ฃผ ํํฉ |
| `get_major_stock` | โญ **๋๋๋ณด์ ์ํฉ๋ณด๊ณ ** (5%๋ฃฐ - 5% ์ด์ ์ฃผ์ฃผ ๋ณ๋) |
| `get_executive_stock` | โญ **์์ยท์ฃผ์์ฃผ์ฃผ ์ง๋ถ ๋ณ๋** |
### ๐ต ์๋ณธ/์ฃผ์์ ๋ณด
| ๊ธฐ๋ฅ | ์ค๋ช
|
|------|------|
| `get_capital_change` | โญ **์ฆ์/๊ฐ์ ํํฉ** |
| `get_treasury_stock` | โญ **์๊ธฐ์ฃผ์ ์ทจ๋/์ฒ๋ถ ํํฉ** |
---
## ๐ ๋น ๋ฅธ ์์
### ๋ฐฉ๋ฒ 1: ๋ฐฐํฌ๋ ์๋ฒ ์ฌ์ฉ (๊ถ์ฅ) โก
**๋ณ๋ ์ค์ ์์ด ๋ฐ๋ก ์ฌ์ฉ ๊ฐ๋ฅ!**
```
https://dart-mcp-self.vercel.app/sse
```
MCP ํด๋ผ์ด์ธํธ์ ์ URL๋ง ์ถ๊ฐํ๋ฉด ๋!
### ๋ฐฉ๋ฒ 2: ์ง์ Vercel ๋ฐฐํฌ
[](https://vercel.com/new/clone?repository-url=https://github.com/Dayoooun/dart-mcp)
Fork ํ Vercel์ ์ฐ๊ฒฐํ๋ฉด ์๋ ๋ฐฐํฌ๋ฉ๋๋ค.
### ๋ฐฉ๋ฒ 3: ๋ก์ปฌ ์คํ
```bash
git clone https://github.com/Dayoooun/dart-mcp.git
cd dart-mcp
# ์์กด์ฑ ์ค์น ๋ฐ ์คํ
pip install -e .
opendart-mcp
```
---
## โ๏ธ MCP ํด๋ผ์ด์ธํธ ์ค์
### Cursor IDE
`~/.cursor/mcp.json` ํ์ผ์ ์ถ๊ฐ:
```json
{
"mcpServers": {
"opendart": {
"type": "http",
"url": "https://dart-mcp-self.vercel.app/sse"
}
}
}
```
### Claude Desktop
`claude_desktop_config.json`์ ์ถ๊ฐ:
```json
{
"mcpServers": {
"opendart": {
"url": "https://dart-mcp-self.vercel.app/sse"
}
}
}
```
### ๋ก์ปฌ ์คํ ์ (stdio)
```json
{
"mcpServers": {
"opendart": {
"command": "opendart-mcp"
}
}
}
```
---
## ๐ ์ฌ์ฉ ์์
### ๐ก ํต์ฌ: ๊ธฐ์
๋ช
์ผ๋ก ๊ฒ์ํ๊ธฐ
**corp_code๋ฅผ ๋ชฐ๋ผ๋ ๋ฉ๋๋ค!** `find_company`๋ก ๊ฒ์ํ์ธ์:
> "์ธ์ฐ๊ฐ๋ผ๋ ํ์ฌ ์ฌ๋ฌด์ ํ ๋ณด์ฌ์ค"
AI๊ฐ ์๋์ผ๋ก:
1. `find_company("์ธ์ฐ๊ฐ")` โ corp_code ํ๋
2. `get_financial_account(corp_code=...)` โ ์ฌ๋ฌด์ ๋ณด ์กฐํ
### ๊ธฐ๋ณธ ์ฌ์ฉ
```
"์ผ์ฑ์ ์ ๊ธฐ์
์ ๋ณด ์๋ ค์ค"
"๋ค์ด๋ฒ์ 2023๋
์ฐ๊ฐ ์ฌ๋ฌด์ ํ ๋ณด์ฌ์ค"
"์นด์นด์ค ์ง์ ํํฉ๊ณผ ํ๊ท ๊ธ์ฌ ์๋ ค์ค"
```
### ์ ๋ชจ๋ฅด๋ ๊ธฐ์
์กฐํ
```
"์ค๋ฅด๋นํ
์ด๋ผ๋ ํ์ฌ์ ์ง์ ํํฉ ์๋ ค์ค"
"๋๋
ธ์จ์ ์์ค ์์ ํํฉ ๋ณด์ฌ์ค"
"๋์ฐ๋ก๋ณดํฑ์ค ์ฌ๋ฌด์ ๋ณด ์กฐํํด์ค"
```
### ์๋ฌธ/ํ๊ธ ๋์ ๊ฒ์ ์ง์
```
"NAVER ์ฌ๋ฌด์ ๋ณด" โ ๋ค์ด๋ฒ ์ฐพ์
"๋ค์ด๋ฒ ์ฌ๋ฌด์ ๋ณด" โ NAVER ์ฐพ์
"LG ๊ณ์ด์ฌ ๋ชฉ๋ก" โ LG์ ์, LGํํ, LG์๋์ง์๋ฃจ์
๋ฑ ์ฐพ์
```
---
## ๐ข ์ฃผ์ ๊ธฐ์
๊ณ ์ ๋ฒํธ
์์ฃผ ์ฌ์ฉ๋๋ ๋๊ธฐ์
์ corp_code๋ฅผ ์ง์ ์ฌ์ฉํด๋ ๋ฉ๋๋ค:
| ๊ธฐ์
๋ช
| corp_code | ์ข
๋ชฉ์ฝ๋ |
|--------|-----------|----------|
| ์ผ์ฑ์ ์ | 00126380 | 005930 |
| SKํ์ด๋์ค | 00164779 | 000660 |
| LG์ ์ | 00401731 | 066570 |
| ํ๋์๋์ฐจ | 00164742 | 005380 |
| ๋ค์ด๋ฒ | 00266961 | 035420 |
| ์นด์นด์ค | 00258801 | 035720 |
| ์ผ์ฑSDI | 00126371 | 006400 |
| LGํํ | 00356361 | 051910 |
| ์
ํธ๋ฆฌ์จ | 00421045 | 068270 |
| ํฌ์ค์ฝํ๋ฉ์ค | 00126186 | 005490 |
**๊ทธ ์ธ ๊ธฐ์
**: `find_company`๋ก ๊ฒ์ํ์ธ์! (114,951๊ฐ ๊ธฐ์
์ง์)
---
## ๐ API ํ๋ผ๋ฏธํฐ ๊ฐ์ด๋
### ๋ณด๊ณ ์ ์ฝ๋ (reprt_code)
| ์ฝ๋ | ์ค๋ช
| ํน์ง |
|------|------|------|
| 11011 | ์ฌ์
๋ณด๊ณ ์ (์ฐ๊ฐ) | ๊ฐ์ฅ ์์ธ, ์ง์ํํฉ ํฌํจ |
| 11012 | ๋ฐ๊ธฐ๋ณด๊ณ ์ | 6๊ฐ์ ์ค์ |
| 11013 | 1๋ถ๊ธฐ๋ณด๊ณ ์ | 3๊ฐ์ ์ค์ |
| 11014 | 3๋ถ๊ธฐ๋ณด๊ณ ์ | 9๊ฐ์ ์ค์ |
### ์ฌ๋ฌด์ ํ ๊ตฌ๋ถ (fs_div)
| ๊ฐ | ์ค๋ช
|
|----|------|
| CFS | ์ฐ๊ฒฐ์ฌ๋ฌด์ ํ (์ํ์ฌ ํฌํจ, ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉ) |
| OFS | ๊ฐ๋ณ์ฌ๋ฌด์ ํ (ํด๋น ๋ฒ์ธ๋ง) |
### ์์ฅ ๊ตฌ๋ถ (corp_cls)
| ๊ฐ | ์ค๋ช
|
|----|------|
| Y | ์ ๊ฐ์ฆ๊ถ์์ฅ (์ฝ์คํผ) |
| K | ์ฝ์ค๋ฅ์์ฅ |
| N | ์ฝ๋ฅ์ค์์ฅ |
| E | ๊ธฐํ (๋น์์ฅ ๋ฑ) |
### ์ฌ๋ฌด์งํ ๋ถ๋ฅ์ฝ๋ (idx_cl_code)
`get_financial_index` API์์ ์ฌ์ฉ **(ํ์)**:
| ์ฝ๋ | ์ค๋ช
| ํฌํจ ์งํ |
|------|------|----------|
| M210000 | ์์ต์ฑ์งํ | ROE, ROA, ์์
์ด์ต๋ฅ , ์์ด์ต๋ฅ ๋ฑ |
| M220000 | ์์ ์ฑ์งํ | ๋ถ์ฑ๋น์จ, ์ ๋๋น์จ, ๋น์ข๋น์จ ๋ฑ |
| M230000 | ์ฑ์ฅ์ฑ์งํ | ๋งค์ถ์ฆ๊ฐ์จ, ์์
์ด์ต์ฆ๊ฐ์จ ๋ฑ |
| M240000 | ํ๋์ฑ์งํ | ์ด์์ฐํ์ ์จ, ์ฌ๊ณ ์์ฐํ์ ์จ ๋ฑ |
---
## ๐ง find_company ์์ธ
๊ธฐ์
๋ช
์ผ๋ก corp_code๋ฅผ ๊ฒ์ํฉ๋๋ค. **114,951๊ฐ ์ ์ฒด ๊ธฐ์
** ๋ฐ์ดํฐ์์ ์ฆ์ ๊ฒ์!
**ํน์ง:**
- ๐ ๋น ๋ฅธ ๊ฒ์ (~50ms) - ๋ฏธ๋ฆฌ ๋ก๋๋ ๋ฐ์ดํฐ ์ฌ์ฉ
- ๐ ํ๊ธ/์๋ฌธ ๋์ ๊ฒ์ - "๋ค์ด๋ฒ" ๊ฒ์ ์ "NAVER"๋ ์ฐพ์
- โญ ์์ฅ๊ธฐ์
์ฐ์ ์ ๋ ฌ
**์์ฒญ:**
```json
{
"query": "๋ค์ด๋ฒ"
}
```
**์๋ต:**
```json
{
"status": "000",
"companies": [
{
"corp_code": "00266961",
"corp_name": "NAVER",
"stock_code": "035420"
},
{
"corp_code": "01246715",
"corp_name": "๋ค์ด๋ฒ๋ฉ์ค",
"stock_code": ""
}
]
}
```
---
## ๐ ๏ธ ๊ฐ๋ฐ
### ํ๋ก์ ํธ ๊ตฌ์กฐ
```
dart-mcp/
โโโ api/
โ โโโ index.py # Vercel ์๋ฒ๋ฆฌ์ค ํจ์ (SSE)
โ โโโ companies.json # ๊ธฐ์
๋ฐ์ดํฐ (114,951๊ฐ)
โโโ scripts/
โ โโโ update_companies.py # ๊ธฐ์
๋ฐ์ดํฐ ์
๋ฐ์ดํธ ์คํฌ๋ฆฝํธ
โโโ src/opendart_mcp/
โ โโโ server.py # MCP ์๋ฒ ํต์ฌ ๋ก์ง
โ โโโ api/ # API ๋ชจ๋
โ โโโ models/ # Pydantic ๋ชจ๋ธ
โโโ vercel.json # Vercel ์ค์
โโโ pyproject.toml # ํจํค์ง ์ค์
```
### ๋ก์ปฌ ๊ฐ๋ฐ
```bash
# uv ์ฌ์ฉ (๊ถ์ฅ)
uv sync
uv run opendart-mcp
# ๋๋ pip ์ฌ์ฉ
pip install -e ".[dev]"
opendart-mcp
```
### ๊ธฐ์
๋ฐ์ดํฐ ์
๋ฐ์ดํธ
`find_company`๋ `api/companies.json` ํ์ผ์ ์ฌ์ฉํฉ๋๋ค. ์๋ก์ด ๊ธฐ์
์ด ๋ฑ๋ก๋๋ฉด ์ 1ํ ์ ๋ ์
๋ฐ์ดํธ๋ฅผ ๊ถ์ฅํฉ๋๋ค:
```bash
# ๊ธฐ์
๋ฐ์ดํฐ ์
๋ฐ์ดํธ (114,000+ ๊ธฐ์
)
python scripts/update_companies.py
# ๋ณ๊ฒฝ์ฌํญ ๋ฐฐํฌ
git add api/companies.json
git commit -m "Update companies data"
git push
```
---
## ๐ค ๊ธฐ์ฌํ๊ธฐ
๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค!
1. Fork
2. Feature branch ์์ฑ (`git checkout -b feature/amazing-feature`)
3. Commit (`git commit -m 'Add amazing feature'`)
4. Push (`git push origin feature/amazing-feature`)
5. Pull Request
---
## ๐ ๋ผ์ด์ ์ค
MIT License - ์์ ๋กญ๊ฒ ์ฌ์ฉ, ์์ , ๋ฐฐํฌ ๊ฐ๋ฅํฉ๋๋ค.
---
## ๐ ๊ด๋ จ ๋งํฌ
- [OpenDART ๊ณต์ ์ฌ์ดํธ](https://opendart.fss.or.kr/)
- [OpenDART API ๋ฌธ์](https://opendart.fss.or.kr/guide/detail.do?apiGrpCd=DS001)
- [MCP (Model Context Protocol)](https://modelcontextprotocol.io/)
---
## โญ Star History
์ด ํ๋ก์ ํธ๊ฐ ๋์์ด ๋์
จ๋ค๋ฉด โญ Star๋ฅผ ๋๋ฌ์ฃผ์ธ์!