Provides access to Korean listed company information through the DART (Data Analysis, Retrieval and Transfer System) API, including financial statements, public disclosures, executive information, shareholder data, and corporate filings
๐ข ํ๊ตญ ๊ธฐ์ ์ ๋ณด ์กฐํ MCP ์๋ฒ
DART API๋ฅผ ํ์ฉํ MCP (Model Context Protocol) ์๋ฒ์ ๋๋ค.
AI ์์ด์ ํธ(Claude Desktop, Cursor ๋ฑ)๊ฐ ์ค์๊ฐ์ผ๋ก ํ๊ตญ ์์ฅ๊ธฐ์ ์ ์ฌ๋ฌด์ ํ, ๊ณต์์ ๋ณด, ์์์ ๋ณด, ์ง๋ถ๊ตฌ์กฐ ๋ฑ์ ์กฐํํ๊ณ ๋ถ์ํ ์ ์๋๋ก ํฉ๋๋ค.
โจ ์ฃผ์ ๊ธฐ๋ฅ
๐ ๊ธฐ์ ์ ๋ณด ์กฐํ (DART API)
๊ธฐ๋ฅ | ์ค๋ช |
๊ธฐ์ ๊ฒ์ | ํ์ฌ๋ช ์ผ๋ก ๊ธฐ์ ๊ฒ์ ๋ฐ ๊ธฐ๋ณธ์ ๋ณด ์กฐํ |
๊ธฐ์ ๊ธฐ๋ณธ์ ๋ณด | ํ์ฌ๋ช , ๋ํ์๋ช , ์ค๋ฆฝ์ผ, ๋ณธ์ฌ์ฃผ์ ๋ฑ ๊ธฐ๋ณธ์ ๋ณด ์กฐํ |
์ฌ๋ฌด์ ํ ์กฐํ | ์์ต๊ณ์ฐ์, ์ฌ๋ฌด์ํํ, ํ๊ธํ๋ฆํ |
์ฌ๋ฌด ์ถ์ด ๋ถ์ | ์ต๊ทผ 5-10๋ ์ฌ๋ฌด์ ํ ์ถ์ด ๋ถ์ |
๊ณต์์ ๋ณด ์กฐํ | ์ต๊ทผ ๊ณต์ ๋ชฉ๋ก ๋ฐ ์์ธ ๋ด์ฉ |
์์์ ๋ณด ์กฐํ | ์์๋ช , ์ง์ฑ , ๋ณด์ ๋ฑ ์์์ ๋ณด ์กฐํ |
์ง๋ถ๋ณด๊ณ ์ | ์ฃผ์ฃผ๋ช , ๋ณด์ ์ง๋ถ, ๋น์จ ๋ฑ ์ง๋ถ๊ตฌ์กฐ ์กฐํ |
๐ ์ฑ๋ฅ ์ต์ ํ
์ ๋ต์ ์บ์ฑ: ๊ธฐ์ ์ ๋ณด ๋ฐ์ดํฐ๋ฅผ 24์๊ฐ ์บ์ฑํ์ฌ API ํธ์ถ ์ต์ํ
๋น ๋ฅธ ์๋ต ์๋: ์บ์ ๊ธฐ๋ฐ ์ฆ์ ์๋ต
์์ ์ ์ธ ์ด์: ์๋ฌ ํธ๋ค๋ง ๋ฐ ๋ก๊น ์์คํ
API ํค ์ฐ์ ์์: ๋ฉ์ธ ์๋ฒ์์ ๋ฐ์ ํค โ .env ํ์ผ (๋ก์ปฌ ๊ฐ๋ฐ์ฉ)
๐ ๏ธ ๊ธฐ์ ์คํ
MCP Framework: FastMCP
Data Validation: Pydantic
HTTP Client: Requests
Caching: cachetools (TTL ์บ์)
Async Processing: asyncio
Environment: Python-dotenv
๐ฆ ์ค์น ๋ฐ ์ค์
1) ์์กด์ฑ ์ค์น
๐ก
uv๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ:uv sync
2) DART API ํค ๋ฐ๊ธ (๋ฌด๋ฃ, ์ฆ์)
ํ์๊ฐ์ ๋ฐ ๋ก๊ทธ์ธ
์ธ์ฆํค ์ ์ฒญ/๊ด๋ฆฌ ๋ฉ๋ด์์ ์ธ์ฆํค ๋ฐ๊ธ
์ฆ์ ๋ฐ๊ธ (๋ฌด๋ฃ)
๐ก ๋ฌด๋ฃ์ด๋ฉฐ, ์ผ์ผ API ํธ์ถ ์ ํ์ด ์ถฉ๋ถํ ๋๋ํฉ๋๋ค!
3) ํ๊ฒฝ ๋ณ์ ์ค์
ํ๋ก์ ํธ ๋ฃจํธ์ .env ํ์ผ์ ์์ฑํ๊ณ API ํค๋ฅผ ์ค์ ํฉ๋๋ค:
.env ํ์ผ ๋ด์ฉ:
4) ์๋ฒ ์คํ
MCP ์๋ฒ ๋ชจ๋ (stdio)
HTTP ์๋ฒ ๋ชจ๋
HTTP ์๋ฒ๋ ๊ธฐ๋ณธ์ ์ผ๋ก http://localhost:8097์์ ์คํ๋ฉ๋๋ค.
๐ MCP ํด๋ผ์ด์ธํธ ์ค์
Claude Desktop
claude_desktop_config.json ํ์ผ์ ๋ค์์ ์ถ๊ฐ:
์ค์ ํ์ผ ์์น:
Windows:
%APPDATA%\Claude\claude_desktop_config.jsonMac:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
์ค์ ์์:
โ ๏ธ ์ค์:
cwd๊ฒฝ๋ก๋ฅผ ์ค์ ํ๋ก์ ํธ ๊ฒฝ๋ก๋ก ๋ณ๊ฒฝํ์ธ์!
Cursor
Cursor์ MCP ์ค์ ์์ ์์ ๋์ผํ ์ค์ ์ ์ถ๊ฐํฉ๋๋ค.
๐งฐ ์ฌ์ฉ ๊ฐ๋ฅํ MCP ๋๊ตฌ
search_company_tool
ํ์ฌ๋ช ์ผ๋ก ๊ธฐ์ ์ ๊ฒ์ํฉ๋๋ค.
ํ๋ผ๋ฏธํฐ:
company_name(ํ์): ๊ฒ์ํ ํ์ฌ๋ช
get_company_overview_tool
๊ธฐ์ ์ ๊ธฐ๋ณธ์ ๋ณด๋ฅผ ์กฐํํฉ๋๋ค.
ํ๋ผ๋ฏธํฐ:
corp_code(์ ํ): ๊ธฐ์ ๊ณ ์ ๋ฒํธcompany_name(์ ํ): ํ์ฌ๋ช (corp_code ๋๋ company_name ์ค ํ๋ ํ์)
get_financial_statement_tool
๊ธฐ์ ์ ์ฌ๋ฌด์ ํ๋ฅผ ์กฐํํฉ๋๋ค.
ํ๋ผ๋ฏธํฐ:
corp_code(์ ํ): ๊ธฐ์ ๊ณ ์ ๋ฒํธcompany_name(์ ํ): ํ์ฌ๋ชbsns_year(์ ํ): ์ฌ์ ์ฐ๋ (YYYY ํ์)reprt_code(์ ํ): ๋ณด๊ณ ์ ์ฝ๋ (๊ธฐ๋ณธ๊ฐ: "11011")
analyze_financial_trend_tool
๊ธฐ์ ์ ์ฌ๋ฌด ์ถ์ด๋ฅผ ๋ถ์ํฉ๋๋ค (์ต๊ทผ N๋ ).
ํ๋ผ๋ฏธํฐ:
corp_code(ํ์): ๊ธฐ์ ๊ณ ์ ๋ฒํธyears(์ ํ): ๋ถ์ํ ์ฐ์ (๊ธฐ๋ณธ๊ฐ: 5, ์ต๋: 10)
get_public_disclosure_tool
๊ธฐ์ ์ ๊ณต์์ ๋ณด๋ฅผ ์กฐํํฉ๋๋ค.
ํ๋ผ๋ฏธํฐ:
corp_code(ํ์): ๊ธฐ์ ๊ณ ์ ๋ฒํธbgn_de(์ ํ): ์์์ผ (YYYYMMDD ํ์)end_de(์ ํ): ์ข ๋ฃ์ผ (YYYYMMDD ํ์)page_no(์ ํ): ํ์ด์ง ๋ฒํธ (๊ธฐ๋ณธ๊ฐ: 1)page_count(์ ํ): ํ์ด์ง๋น ๊ฑด์ (๊ธฐ๋ณธ๊ฐ: 10)
get_executives_tool
๊ธฐ์ ์ ์์์ ๋ณด๋ฅผ ์กฐํํฉ๋๋ค.
ํ๋ผ๋ฏธํฐ:
corp_code(์ ํ): ๊ธฐ์ ๊ณ ์ ๋ฒํธcompany_name(์ ํ): ํ์ฌ๋ชbsns_year(์ ํ): ์ฌ์ ์ฐ๋ (YYYY ํ์)reprt_code(์ ํ): ๋ณด๊ณ ์ ์ฝ๋ (๊ธฐ๋ณธ๊ฐ: "11011")
get_shareholders_tool
์ง๋ถ๋ณด๊ณ ์๋ฅผ ์กฐํํฉ๋๋ค.
ํ๋ผ๋ฏธํฐ:
corp_code(์ ํ): ๊ธฐ์ ๊ณ ์ ๋ฒํธcompany_name(์ ํ): ํ์ฌ๋ชbsns_year(์ ํ): ์ฌ์ ์ฐ๋ (YYYY ํ์)reprt_code(์ ํ): ๋ณด๊ณ ์ ์ฝ๋ (๊ธฐ๋ณธ๊ฐ: "11011")
๐ก HTTP API ์๋ํฌ์ธํธ
HTTP ๋ชจ๋๋ก ์คํ ์ ๋ค์ ์๋ํฌ์ธํธ๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค:
Health Check
๋๊ตฌ ๋ชฉ๋ก ์กฐํ
๋๊ตฌ ์คํ
๐ณ Docker ์คํ
๐ API ํค ์ฐ์ ์์
MCP ์๋ฒ๋ ๋ค์ ์์๋ก API ํค๋ฅผ ์ฐพ์ต๋๋ค:
์ฐ์ ์์ 1:
arguments.env.DART_API_KEY(๋ฉ์ธ ์๋ฒ์์ ๋ฐ์ ํค)์ฐ์ ์์ 2:
.envํ์ผ์DART_API_KEY(๋ก์ปฌ ๊ฐ๋ฐ์ฉ)๋ ๋ค ์์ผ๋ฉด: Health ์ฒดํฌ์์ "๋ฑ๋ก๋ ํค๊ฐ ์์ต๋๋ค" ๋ฐํ
์ด๋ฅผ ํตํด:
ํ๋ก๋์ : ๋ฉ์ธ ์๋ฒ์์ ๊ฐ ์ฌ์ฉ์๋ณ ํค๋ฅผ ์ ๋ฌ๋ฐ์ ์ฌ์ฉ
๋ก์ปฌ ๊ฐ๋ฐ:
.envํ์ผ์ ํค๋ฅผ ์ค์ ํ์ฌ ๊ฐ๋ฐ
๐ ๋ฌธ์ ํด๊ฒฐ
"API ํค๊ฐ ์ค์ ๋์ง ์์์ต๋๋ค" ์ค๋ฅ
ํด๊ฒฐ ๋ฐฉ๋ฒ:
.envํ์ผ์DART_API_KEY๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์ค์ ๋์ด ์๋์ง ํ์ธํ๊ฒฝ ๋ณ์๋ก ์ง์ ์ค์ :
export DART_API_KEY=your_key
MCP ํด๋ผ์ด์ธํธ ์ฐ๊ฒฐ ์ค๋ฅ
ํด๊ฒฐ ๋ฐฉ๋ฒ:
์๋ฒ๊ฐ ์ฌ๋ฐ๋ฅด๊ฒ ์คํ๋๊ณ ์๋์ง ํ์ธ
Python ๊ฒฝ๋ก๊ฐ ์ฌ๋ฐ๋ฅธ์ง ํ์ธ
์์กด์ฑ์ด ๋ชจ๋ ์ค์น๋์๋์ง ํ์ธ:
pip install -r requirements.txtcwd๊ฒฝ๋ก๋ฅผ ์ค์ ํ๋ก์ ํธ ๊ฒฝ๋ก๋ก ๋ณ๊ฒฝClaude Desktop ์์ ์ข ๋ฃ ํ ์ฌ์์
๐ ๋ผ์ด์ ์ค
์ด ํ๋ก์ ํธ๋ DART API๋ฅผ ์ฌ์ฉํ๋ฉฐ, DART API์ ์ด์ฉ์ฝ๊ด์ ์ค์ํฉ๋๋ค.