Skip to main content
Glama
SeoNaRu

Korean Company Information MCP Server

by SeoNaRu
README.mdโ€ข7.2 kB
# ๐Ÿข ํ•œ๊ตญ ๊ธฐ์—…์ •๋ณด ์กฐํšŒ 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) ์˜์กด์„ฑ ์„ค์น˜ ```bash pip install -r requirements.txt ``` > ๐Ÿ’ก `uv`๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ: `uv sync` ### 2) DART API ํ‚ค ๋ฐœ๊ธ‰ (๋ฌด๋ฃŒ, ์ฆ‰์‹œ) 1. [์ „์ž๊ณต์‹œ์‹œ์Šคํ…œ Open DART](https://opendart.fss.or.kr/) ๋ฐฉ๋ฌธ 2. ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ 3. **์ธ์ฆํ‚ค ์‹ ์ฒญ/๊ด€๋ฆฌ** ๋ฉ”๋‰ด์—์„œ ์ธ์ฆํ‚ค ๋ฐœ๊ธ‰ 4. **์ฆ‰์‹œ ๋ฐœ๊ธ‰** (๋ฌด๋ฃŒ) > ๐Ÿ’ก **๋ฌด๋ฃŒ**์ด๋ฉฐ, ์ผ์ผ API ํ˜ธ์ถœ ์ œํ•œ์ด ์ถฉ๋ถ„ํžˆ ๋„‰๋„‰ํ•ฉ๋‹ˆ๋‹ค! ### 3) ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ • ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— `.env` ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  API ํ‚ค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค: ```bash cp env.example .env ``` `.env` ํŒŒ์ผ ๋‚ด์šฉ: ```env DART_API_KEY=your_dart_api_key_here LOG_LEVEL=INFO PORT=8097 ``` ### 4) ์„œ๋ฒ„ ์‹คํ–‰ #### MCP ์„œ๋ฒ„ ๋ชจ๋“œ (stdio) ```bash python -m src.main ``` #### HTTP ์„œ๋ฒ„ ๋ชจ๋“œ ```bash HTTP_MODE=1 python -m src.main ``` HTTP ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ `http://localhost:8097`์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. --- ## ๐Ÿ”Œ MCP ํด๋ผ์ด์–ธํŠธ ์„ค์ • ### Claude Desktop `claude_desktop_config.json` ํŒŒ์ผ์— ๋‹ค์Œ์„ ์ถ”๊ฐ€: **์„ค์ • ํŒŒ์ผ ์œ„์น˜:** - **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` - **Mac**: `~/Library/Application Support/Claude/claude_desktop_config.json` - **Linux**: `~/.config/Claude/claude_desktop_config.json` **์„ค์ • ์˜ˆ์‹œ:** ```json { "mcpServers": { "company-info": { "command": "python", "args": ["-m", "src.main"], "cwd": "/path/to/company-info-mcp", "env": { "DART_API_KEY": "your_dart_api_key_here" } } } } ``` > โš ๏ธ **์ค‘์š”**: `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 ```bash GET /health POST /health ``` ### ๋„๊ตฌ ๋ชฉ๋ก ์กฐํšŒ ```bash GET /tools ``` ### ๋„๊ตฌ ์‹คํ–‰ ```bash POST /tools/{tool_name} Content-Type: application/json { "company_name": "์‚ผ์„ฑ์ „์ž", "env": { "DART_API_KEY": "your_api_key" } } ``` --- ## ๐Ÿณ Docker ์‹คํ–‰ ```bash # ์ด๋ฏธ์ง€ ๋นŒ๋“œ docker build -t company-info-mcp:latest . # ์ปจํ…Œ์ด๋„ˆ ์‹คํ–‰ docker run --rm \ -e DART_API_KEY=your_dart_api_key_here \ -p 8097:8097 \ company-info-mcp:latest ``` --- ## ๐Ÿ”‘ API ํ‚ค ์šฐ์„ ์ˆœ์œ„ MCP ์„œ๋ฒ„๋Š” ๋‹ค์Œ ์ˆœ์„œ๋กœ API ํ‚ค๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค: 1. **์šฐ์„ ์ˆœ์œ„ 1**: `arguments.env.DART_API_KEY` (๋ฉ”์ธ ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ํ‚ค) 2. **์šฐ์„ ์ˆœ์œ„ 2**: `.env` ํŒŒ์ผ์˜ `DART_API_KEY` (๋กœ์ปฌ ๊ฐœ๋ฐœ์šฉ) 3. **๋‘˜ ๋‹ค ์—†์œผ๋ฉด**: Health ์ฒดํฌ์—์„œ "๋“ฑ๋ก๋œ ํ‚ค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค" ๋ฐ˜ํ™˜ ์ด๋ฅผ ํ†ตํ•ด: - **ํ”„๋กœ๋•์…˜**: ๋ฉ”์ธ ์„œ๋ฒ„์—์„œ ๊ฐ ์‚ฌ์šฉ์ž๋ณ„ ํ‚ค๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ์‚ฌ์šฉ - **๋กœ์ปฌ ๊ฐœ๋ฐœ**: `.env` ํŒŒ์ผ์— ํ‚ค๋ฅผ ์„ค์ •ํ•˜์—ฌ ๊ฐœ๋ฐœ --- ## ๐Ÿ› ๋ฌธ์ œ ํ•ด๊ฒฐ ### "API ํ‚ค๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค" ์˜ค๋ฅ˜ **ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:** 1. `.env` ํŒŒ์ผ์— `DART_API_KEY`๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ 2. ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋กœ ์ง์ ‘ ์„ค์ •: `export DART_API_KEY=your_key` ### MCP ํด๋ผ์ด์–ธํŠธ ์—ฐ๊ฒฐ ์˜ค๋ฅ˜ **ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•:** 1. ์„œ๋ฒ„๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‹คํ–‰๋˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ 2. Python ๊ฒฝ๋กœ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธ 3. ์˜์กด์„ฑ์ด ๋ชจ๋‘ ์„ค์น˜๋˜์—ˆ๋Š”์ง€ ํ™•์ธ: `pip install -r requirements.txt` 4. `cwd` ๊ฒฝ๋กœ๋ฅผ ์‹ค์ œ ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ๋กœ ๋ณ€๊ฒฝ 5. Claude Desktop ์™„์ „ ์ข…๋ฃŒ ํ›„ ์žฌ์‹œ์ž‘ --- ## ๐Ÿ“„ ๋ผ์ด์„ ์Šค ์ด ํ”„๋กœ์ ํŠธ๋Š” DART API๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, DART API์˜ ์ด์šฉ์•ฝ๊ด€์„ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SeoNaRu/company-info-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server