Skip to main content
Glama
SongHyojun0228

opendart-mcp-server

README.md
# πŸ‡°πŸ‡· OpenDART MCP Server

> AI μ—μ΄μ „νŠΈλ₯Ό μœ„ν•œ ν•œκ΅­ κΈ°μ—… κ³΅μ‹œ 데이터 β€” powered by DART

![npm](https://img.shields.io/npm/v/opendart-mcp)
![license](https://img.shields.io/badge/license-MIT-blue)
![MCP](https://img.shields.io/badge/MCP-compatible-green)
![node](https://img.shields.io/badge/node-18%2B-brightgreen)

**DART(μ „μžκ³΅μ‹œμ‹œμŠ€ν…œ) 데이터λ₯Ό AIμ—κ²Œ λ„˜κΈ°λŠ” κ°€μž₯ μ‰¬μš΄ 방법.**

Claude Desktop, Cursor λ“± MCP 지원 AIμ—κ²Œ "μ‚Όμ„±μ „μž μž¬λ¬΄μ œν‘œ λ³΄μ—¬μ€˜"라고 λ§ν•˜λ©΄ λ°”λ‘œ 닡을 받을 수 μžˆμŠ΅λ‹ˆλ‹€.

<!-- TODO: 데λͺ¨ GIF μΆ”κ°€ -->
<!-- ![demo](./assets/demo.gif) -->

---

## ⚑ λΉ λ₯Έ μ‹œμž‘

### npm으둜 λ°”λ‘œ μ‚¬μš© (ꢌμž₯)

```bash
npx opendart-mcp
```

> Claude Desktopμ΄λ‚˜ Cursor μ„€μ •μ—μ„œ λ°”λ‘œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. κΈ°μ—… κ³ μœ λ²ˆν˜ΈλŠ” 졜초 μ‹€ν–‰ μ‹œ μžλ™ λ‹€μš΄λ‘œλ“œλ©λ‹ˆλ‹€.

### μ†ŒμŠ€ μ½”λ“œμ—μ„œ μ„€μΉ˜

```bash
git clone https://github.com/SongHyojun0228/opendart-mcp-server.git
cd opendart-mcp-server
npm install
npm run build && npm start
```

> DART API ν‚€λŠ” [OpenDART](https://opendart.fss.or.kr) μ—μ„œ 무료둜 λ°œκΈ‰λ°›μ„ 수 μžˆμŠ΅λ‹ˆλ‹€ (일 10,000건).

---

## πŸ”§ μ œκ³΅ν•˜λŠ” 도ꡬ

| 도ꡬ | μ„€λͺ… | μž…λ ₯ μ˜ˆμ‹œ |
|------|------|----------|
| `search_company` | κΈ°μ—… 검색 및 κΈ°λ³Έ 정보 쑰회 | `"μ‚Όμ„±μ „μž"`, `"005930"` |
| `search_disclosures` | κ³΅μ‹œ λ³΄κ³ μ„œ 검색 | `company: "카카였", type: "annual"` |
| `get_financial_summary` | μ£Όμš” 재무 데이터 쑰회 (맀좜, μ˜μ—…μ΄μ΅, 순이읡 λ“±) | `company: "μ‚Όμ„±μ „μž", year: 2024` |
| `compare_financials` | 닀쀑 νšŒμ‚¬ 재무 비ꡐ | `companies: ["μ‚Όμ„±μ „μž", "SKν•˜μ΄λ‹‰μŠ€"]` |
| `get_full_financial_statements` | 전체 μž¬λ¬΄μ œν‘œ 상세 쑰회 | `company: "카카였", statement_type: "IS"` |

---

## πŸ’¬ μ‚¬μš© μ˜ˆμ‹œ

### "μ‚Όμ„±μ „μž κΈ°λ³Έ 정보 μ•Œλ €μ€˜"

```
μ‚Όμ„±μ „μž(μ£Ό) (SAMSUNG ELECTRONICS CO,.LTD)
────────────────────────────────────────
μ’…λͺ©μ½”λ“œ: 005930 (μœ κ°€μ¦κΆŒμ‹œμž₯상μž₯법인)
λŒ€ν‘œμ΄μ‚¬: μ „μ˜ν˜„, λ…Ένƒœλ¬Έ
법인ꡬ뢄: μœ κ°€μ¦κΆŒμ‹œμž₯상μž₯법인
섀립일: 1969-01-13
κ²°μ‚°μ›”: 12μ›”
ν™ˆνŽ˜μ΄μ§€: https://www.samsung.com/sec
μ£Όμ†Œ: 경기도 μˆ˜μ›μ‹œ μ˜ν†΅κ΅¬ μ‚Όμ„±λ‘œ 129 (맀탄동)
```

### "였늘 λ‚˜μ˜¨ κ³΅μ‹œ μžˆμ–΄?"

```
전체 κ³΅μ‹œ 검색 κ²°κ³Ό (2026-01-14 ~ 2026-02-13)
────────────────────────────────────────

[κΈ°νƒ€κ³΅μ‹œ] νˆ¬μžνŒλ‹¨κ΄€λ ¨μ£Όμš”κ²½μ˜μ‚¬ν•­ (2026-02-13)
  https://dart.fss.or.kr/dsaf001/main.do?rcpNo=20260213801610
[μ£Όμš”μ‚¬ν•­] μ£Όμš”μ‚¬ν•­λ³΄κ³ μ„œ(μœ μƒμ¦μžκ²°μ •) (2026-02-13)
  https://dart.fss.or.kr/dsaf001/main.do?rcpNo=20260213000234
...
총 847건
```

### "카카였 2023λ…„ λ§€μΆœμ΄λž‘ μ˜μ—…μ΄μ΅ μ•Œλ €μ€˜"

```
카카였 2023λ…„ μ—°κ°„ 재무 μš”μ•½ (μ—°κ²°)
────────────────────────────────────────
λ§€μΆœμ•‘         7μ‘° 5,570얡원 (+11.2%)
μ˜μ—…μ΄μ΅        4,609얡원 (-19.1%)
λ‹ΉκΈ°μˆœμ΄μ΅       -1μ‘° 8,167얡원 (-270.3%)
────────────────────────────────────────
μžμ‚°μ΄κ³„        25μ‘° 1,800얡원
뢀채총계        11μ‘° 3,214얡원
μžλ³Έμ΄κ³„        13μ‘° 8,586얡원
────────────────────────────────────────
λΆ€μ±„λΉ„μœ¨      81.7%
```

---

## πŸ“¦ 상세 μ„€μΉ˜ κ°€μ΄λ“œ

### 1. DART API ν‚€ λ°œκΈ‰

1. [OpenDART](https://opendart.fss.or.kr) 접속
2. νšŒμ›κ°€μž… ν›„ 둜그인
3. **인증킀 μ‹ μ²­** β†’ API ν‚€ λ°œκΈ‰ (μ¦‰μ‹œ λ°œκΈ‰, 무료)
4. λ°œκΈ‰λ°›μ€ ν‚€λ₯Ό λ³΅μ‚¬ν•΄λ‘μ„Έμš”

### 2. ν”„λ‘œμ νŠΈ μ„€μΉ˜

```bash
git clone https://github.com/SongHyojun0228/opendart-mcp-server.git
cd opendart-mcp-server
npm install
```

### 3. ν™˜κ²½λ³€μˆ˜ μ„€μ •

```bash
cp .env.example .env
```

`.env` νŒŒμΌμ„ μ—΄μ–΄μ„œ λ°œκΈ‰λ°›μ€ API ν‚€λ₯Ό μž…λ ₯:

```
DART_API_KEY=여기에_λ°œκΈ‰λ°›μ€_ν‚€_μž…λ ₯
```

### 4. κΈ°μ—… 고유번호 데이터 λ‹€μš΄λ‘œλ“œ (선택)

```bash
npm run update-corp-codes
```

> μ„œλ²„ 졜초 μ‹€ν–‰ μ‹œ μžλ™μœΌλ‘œ λ‹€μš΄λ‘œλ“œλ˜λ―€λ‘œ 이 λ‹¨κ³„λŠ” μ„ νƒμ‚¬ν•­μž…λ‹ˆλ‹€. μˆ˜λ™μœΌλ‘œ μ—…λ°μ΄νŠΈν•˜κ³  싢을 λ•Œλ§Œ μ‹€ν–‰ν•˜μ„Έμš”.

### 5. λΉŒλ“œ & μ‹€ν–‰

```bash
npm run build
npm start
```

---

## βš™οΈ AI ν΄λΌμ΄μ–ΈνŠΈ μ„€μ •

### Claude Desktop (npx β€” ꢌμž₯)

`claude_desktop_config.json`에 μΆ”κ°€:

```json
{
  "mcpServers": {
    "opendart": {
      "command": "npx",
      "args": ["-y", "opendart-mcp"],
      "env": {
        "DART_API_KEY": "λ°œκΈ‰λ°›μ€_ν‚€"
      }
    }
  }
}
```

<details>
<summary>μ„€μ • 파일 μœ„μΉ˜</summary>

- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`

</details>

<details>
<summary>μ†ŒμŠ€ μ½”λ“œμ—μ„œ 직접 μ‹€ν–‰ν•˜λŠ” 경우</summary>

```json
{
  "mcpServers": {
    "opendart": {
      "command": "node",
      "args": ["/μ ˆλŒ€κ²½λ‘œ/opendart-mcp-server/dist/src/index.js"],
      "env": {
        "DART_API_KEY": "λ°œκΈ‰λ°›μ€_ν‚€"
      }
    }
  }
}
```

</details>

### Cursor

Cursor Settings β†’ MCP β†’ Add Server:

```json
{
  "mcpServers": {
    "opendart": {
      "command": "npx",
      "args": ["-y", "opendart-mcp"],
      "env": {
        "DART_API_KEY": "λ°œκΈ‰λ°›μ€_ν‚€"
      }
    }
  }
}
```

### MCP Inspector (디버깅)

```bash
npx @modelcontextprotocol/inspector node dist/src/index.js
```

---

## πŸ› οΈ 개발 μ°Έμ—¬

```bash
# λΉŒλ“œ
npm run build

# λΉŒλ“œ + μ‹€ν–‰
npm run dev

# κΈ°μ—… 고유번호 μ—…λ°μ΄νŠΈ
npm run update-corp-codes

# MCP Inspector둜 ν…ŒμŠ€νŠΈ
npx @modelcontextprotocol/inspector node dist/src/index.js
```

### ν”„λ‘œμ νŠΈ ꡬ쑰

```
src/
β”œβ”€β”€ index.ts              # FastMCP μ„œλ²„ μ§„μž…μ 
β”œβ”€β”€ tools/
β”‚   β”œβ”€β”€ disclosure.ts     # search_company, search_disclosures
β”‚   └── financial.ts      # get_financial_summary, compare_financials, get_full_financial_statements
└── utils/
    β”œβ”€β”€ dart-client.ts    # DART API HTTP ν΄λΌμ΄μ–ΈνŠΈ
    β”œβ”€β”€ corp-code.ts      # νšŒμ‚¬λͺ…/μ’…λͺ©μ½”λ“œ β†’ 고유번호 λ³€ν™˜
    └── formatters.ts     # κΈˆμ•‘ ν¬λ§€νŒ… 헬퍼
```

### κΈ°μ—¬ 방법

1. Fork β†’ 브랜치 생성 β†’ 컀밋 β†’ PR
2. 컀밋 λ©”μ‹œμ§€: `feat:`, `fix:`, `docs:` λ“± [Conventional Commits](https://www.conventionalcommits.org) μŠ€νƒ€μΌ
3. `console.log()` μ‚¬μš© κΈˆμ§€ (stdio 전솑 μ˜€μ—Ό λ°©μ§€). `console.error()`만 μ‚¬μš©

---

## πŸ“„ λΌμ΄μ„ μŠ€

[MIT](LICENSE) β€” 자유둭게 μ‚¬μš©, μˆ˜μ •, 배포할 수 μžˆμŠ΅λ‹ˆλ‹€.

이 ν”„λ‘œμ νŠΈλŠ” κΈˆμœ΅κ°λ…μ› [DART OpenAPI](https://opendart.fss.or.kr)의 곡개 데이터λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

---

## English

### OpenDART MCP Server

> Korean corporate disclosure data for AI agents β€” powered by DART

MCP server that connects Korea's [DART](https://opendart.fss.or.kr) (Electronic Disclosure System) to AI agents like Claude, ChatGPT, and Cursor.

Ask your AI "What's Samsung Electronics' revenue?" and get real answers from official Korean financial filings.

### Available Tools

| Tool | Description |
|------|-------------|
| `search_company` | Search Korean companies by name, stock code, or DART corp code |
| `search_disclosures` | Search disclosure filings with date/type filters |
| `get_financial_summary` | Get key financials: revenue, operating profit, net income, assets, liabilities |
| `compare_financials` | Compare financials across multiple companies side by side |
| `get_full_financial_statements` | Get full financial statements (BS, IS, CIS, CF, SCE) |

### Quick Start

Add to your Claude Desktop `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "opendart": {
      "command": "npx",
      "args": ["-y", "opendart-mcp"],
      "env": {
        "DART_API_KEY": "your_api_key"
      }
    }
  }
}
```

Get your free DART API key at [opendart.fss.or.kr](https://opendart.fss.or.kr). Corp code data is automatically downloaded on first run.

### License

MIT