Skip to main content
Glama

Korean Company Information MCP Server

by SeoNaRu
README.mdโ€ข15 kB
# ๐Ÿข ํ•œ๊ตญ ๊ธฐ์—…์ •๋ณด ์กฐํšŒ MCP ์„œ๋ฒ„ **DART API**๋ฅผ ํ™œ์šฉํ•œ ๊ณ ์„ฑ๋Šฅ MCP (Model Context Protocol) ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. AI ์—์ด์ „ํŠธ(Claude Desktop, Cursor ๋“ฑ)๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ•œ๊ตญ ์ƒ์žฅ๊ธฐ์—…์˜ ์žฌ๋ฌด์ œํ‘œ, ๊ณต์‹œ์ •๋ณด, ์ž„์›์ •๋ณด, ์ง€๋ถ„๊ตฌ์กฐ ๋“ฑ์„ ์กฐํšŒํ•˜๊ณ  ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. --- ## โœจ ์ฃผ์š” ๊ธฐ๋Šฅ ### ๐Ÿ“Š ๊ธฐ์—… ์ •๋ณด ์กฐํšŒ (DART API) | ๊ธฐ๋Šฅ | ์„ค๋ช… | |------|------| | **๊ธฐ์—… ๊ฒ€์ƒ‰** | ํšŒ์‚ฌ๋ช…์œผ๋กœ ๊ธฐ์—… ๊ฒ€์ƒ‰ ๋ฐ ๊ธฐ๋ณธ์ •๋ณด ์กฐํšŒ | | **๊ธฐ์—… ๊ธฐ๋ณธ์ •๋ณด** | ํšŒ์‚ฌ๋ช…, ๋Œ€ํ‘œ์ž๋ช…, ์„ค๋ฆฝ์ผ, ๋ณธ์‚ฌ์ฃผ์†Œ ๋“ฑ ๊ธฐ๋ณธ์ •๋ณด ์กฐํšŒ | | **์žฌ๋ฌด์ œํ‘œ ์กฐํšŒ** | ์†์ต๊ณ„์‚ฐ์„œ, ์žฌ๋ฌด์ƒํƒœํ‘œ, ํ˜„๊ธˆํ๋ฆ„ํ‘œ | | **์žฌ๋ฌด ์ถ”์ด ๋ถ„์„** | ์ตœ๊ทผ 5-10๋…„ ์žฌ๋ฌด์ œํ‘œ ์ถ”์ด ๋ถ„์„ | | **๊ณต์‹œ์ •๋ณด ์กฐํšŒ** | ์ตœ๊ทผ ๊ณต์‹œ ๋ชฉ๋ก ๋ฐ ์ƒ์„ธ ๋‚ด์šฉ | | **์ฃผ์š”์‚ฌํ•ญ๋ณด๊ณ ์„œ** | ์ž„์›๋ณ€๊ฒฝ, ์ž๋ณธ๊ธˆ๋ณ€๊ฒฝ ๋“ฑ ์ฃผ์š”์‚ฌํ•ญ ์กฐํšŒ | | **์ž„์›์ •๋ณด ์กฐํšŒ** | ์ž„์›๋ช…, ์ง์ฑ…, ๋ณด์ˆ˜ ๋“ฑ ์ž„์›์ •๋ณด ์กฐํšŒ | | **์ง€๋ถ„๋ณด๊ณ ์„œ** | ์ฃผ์ฃผ๋ช…, ๋ณด์œ ์ง€๋ถ„, ๋น„์œจ ๋“ฑ ์ง€๋ถ„๊ตฌ์กฐ ์กฐํšŒ | | **๊ณต์‹œ์›๋ฌธ ๋‹ค์šด๋กœ๋“œ** | ๊ณต์‹œ๋ณด๊ณ ์„œ ์›๋ฌธ XML/PDF ๋‹ค์šด๋กœ๋“œ ๋ฐ ํŒŒ์‹ฑ | ### ๐Ÿš€ ์„ฑ๋Šฅ ์ตœ์ ํ™” - **์ „๋žต์  ์บ์‹ฑ**: ๊ธฐ์—…์ •๋ณด ๋ฐ์ดํ„ฐ๋ฅผ 24์‹œ๊ฐ„ ์บ์‹ฑํ•˜์—ฌ API ํ˜ธ์ถœ ์ตœ์†Œํ™” - **๋น ๋ฅธ ์‘๋‹ต ์†๋„**: ์บ์‹œ ๊ธฐ๋ฐ˜ ์ฆ‰์‹œ ์‘๋‹ต - **์•ˆ์ •์ ์ธ ์šด์˜**: ์—๋Ÿฌ ํ•ธ๋“ค๋ง ๋ฐ ๋กœ๊น… ์‹œ์Šคํ…œ - **API ํ‚ค ์šฐ์„ ์ˆœ์œ„**: ๋ฉ”์ธ ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ํ‚ค โ†’ .env ํŒŒ์ผ (๋กœ์ปฌ ๊ฐœ๋ฐœ์šฉ) --- ## ๐ŸŽฏ ํ™œ์šฉ ์‚ฌ๋ก€ ### ํˆฌ์ž์‚ฌ/VC - **ํˆฌ์ž ๊ฒ€ํ† **: ์Šคํƒ€ํŠธ์—… ์žฌ๋ฌด์ œํ‘œ ๋ถ„์„ ๋ฐ ์„ฑ์žฅ์„ฑ ํ‰๊ฐ€ - **๊ธฐ์—… ๊ฐ€์น˜ ํ‰๊ฐ€**: ์žฌ๋ฌด ์ถ”์ด ๋ถ„์„์„ ํ†ตํ•œ ๊ฐ€์น˜ ์‚ฐ์ • - **๊ฒฝ์Ÿ์‚ฌ ๋ถ„์„**: ์—ฌ๋Ÿฌ ๊ธฐ์—…์˜ ์žฌ๋ฌด์ œํ‘œ ๋น„๊ต ๋ถ„์„ ### B2B ์˜์—…ํŒ€ - **๊ณ ๊ฐ์‚ฌ ๋ถ„์„**: ์ž ์žฌ ๊ณ ๊ฐ์˜ ์žฌ๋ฌด ์ƒํƒœ ํŒŒ์•… - **์˜์—… ์ „๋žต ์ˆ˜๋ฆฝ**: ๊ธฐ์—… ์ •๋ณด ๊ธฐ๋ฐ˜ ๋งž์ถคํ˜• ์˜์—… ์ „๋žต - **์‹ ์šฉ๋„ ํ™•์ธ**: ๊ฑฐ๋ž˜ ์ „ ์žฌ๋ฌด ๊ฑด์ „์„ฑ ํ™•์ธ ### ์ปจ์„คํŒ… ํšŒ์‚ฌ - **๊ธฐ์—… ๋ถ„์„ ๋ฆฌํฌํŠธ**: ์žฌ๋ฌด์ œํ‘œ, ๊ณต์‹œ์ •๋ณด ์ž๋™ ์ˆ˜์ง‘ ๋ฐ ๋ถ„์„ - **๊ฒฝ์Ÿ์‚ฌ ๋น„๊ต**: ์—ฌ๋Ÿฌ ๊ธฐ์—…์˜ ์žฌ๋ฌด ์ง€ํ‘œ ๋น„๊ต - **์‹œ์žฅ ๋ถ„์„**: ์—…์ข…๋ณ„ ๊ธฐ์—… ์žฌ๋ฌด ํ˜„ํ™ฉ ๋ถ„์„ ### ์Šคํƒ€ํŠธ์—…/๊ฐœ๋ฐœ์ž - **๊ฒฝ์Ÿ์‚ฌ ๋ชจ๋‹ˆํ„ฐ๋ง**: ๊ฒฝ์Ÿ์‚ฌ์˜ ์žฌ๋ฌด ํ˜„ํ™ฉ ์ถ”์  - **ํˆฌ์ž ์œ ์น˜ ์ค€๋น„**: ์žฌ๋ฌด์ œํ‘œ ๋ถ„์„์„ ํ†ตํ•œ ํˆฌ์ž ์ž๋ฃŒ ์ค€๋น„ - **๊ธฐ์—… ๋ฆฌ์„œ์น˜**: ์ž ์žฌ ํŒŒํŠธ๋„ˆ์‚ฌ ์ •๋ณด ์ˆ˜์ง‘ --- ## ๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ - **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 src/main.py ``` ๋˜๋Š” ```bash export HTTP_MODE=1 python src/main.py ``` HTTP ์„œ๋ฒ„๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ `http://localhost:8097`์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. --- ## ๐Ÿณ 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 ``` --- ## ๐Ÿ”Œ Claude Desktop ์—ฐ๋™ ### ์„ค์ • ํŒŒ์ผ ์œ„์น˜ - **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": "C:/Users/์‚ฌ์šฉ์ž๋ช…/Desktop/company-info-mcp", "env": { "DART_API_KEY": "your_dart_api_key_here" } } } } ``` > โš ๏ธ **์ค‘์š”**: `cwd` ๊ฒฝ๋กœ๋ฅผ ์‹ค์ œ ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ๋กœ ๋ณ€๊ฒฝํ•˜์„ธ์š”! ### ์‚ฌ์šฉ ๋ฐฉ๋ฒ• Claude Desktop ์žฌ์‹œ์ž‘ ํ›„ Claude์—๊ฒŒ ์งˆ๋ฌธ: - "์‚ผ์„ฑ์ „์ž ์žฌ๋ฌด์ œํ‘œ ๋ถ„์„ํ•ด์ค˜" - "๋„ค์ด๋ฒ„ ์ตœ๊ทผ ๊ณต์‹œ ํ™•์ธํ•ด์ค˜" - "์นด์นด์˜ค๋ฑ…ํฌ ํˆฌ์ž ๊ฒ€ํ† ํ•ด์ค˜" - "๋„ค์ด๋ฒ„, ์นด์นด์˜ค, ๋ผ์ธ ์žฌ๋ฌด ๋น„๊ตํ•ด์ค˜" --- ## ๐Ÿงฐ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ (Tools) ### 1. `health` ์„œ๋น„์Šค ์ƒํƒœ ๋ฐ API ํ‚ค ์„ค์ • ํ™•์ธ **ํŒŒ๋ผ๋ฏธํ„ฐ**: ์—†์Œ (๋˜๋Š” `arguments.env.DART_API_KEY`) **๋ฐ˜ํ™˜ ์˜ˆ์‹œ**: ```json { "status": "ok", "message": "์ •์ƒ", "service": "Korean Company Information MCP Server (Free Version)", "environment": { "dart_api_key": "์„ค์ •๋จ", "dart_key_preview": "abc123...", "key_source": "arguments.env" } } ``` --- ### 2. `search_company_tool` ๊ธฐ์—…์„ ํšŒ์‚ฌ๋ช…์œผ๋กœ ๊ฒ€์ƒ‰ **ํŒŒ๋ผ๋ฏธํ„ฐ**: - `query` (string, ํ•„์ˆ˜): ๊ฒ€์ƒ‰ํ•  ํšŒ์‚ฌ๋ช… (์˜ˆ: '์‚ผ์„ฑ์ „์ž', '๋„ค์ด๋ฒ„') **๋ฐ˜ํ™˜**: ๊ฒ€์ƒ‰๋œ ๊ธฐ์—… ๋ชฉ๋ก (๊ธฐ์—… ๊ณ ์œ ๋ฒˆํ˜ธ ํฌํ•จ) --- ### 3. `get_financial_statement_tool` ๊ธฐ์—…์˜ ์žฌ๋ฌด์ œํ‘œ ์กฐํšŒ **ํŒŒ๋ผ๋ฏธํ„ฐ**: - `corp_code` (string, ์„ ํƒ): ๊ธฐ์—… ๊ณ ์œ ๋ฒˆํ˜ธ - `company_name` (string, ์„ ํƒ): ํšŒ์‚ฌ๋ช… (corp_code ๋˜๋Š” company_name ์ค‘ ํ•˜๋‚˜ ํ•„์ˆ˜) - `bsns_year` (string, ์„ ํƒ): ์‚ฌ์—…์—ฐ๋„ (YYYY ํ˜•์‹, ๊ธฐ๋ณธ๊ฐ’: ์ตœ๊ทผ ์—ฐ๋„) - `reprt_code` (string, ์„ ํƒ): ๋ณด๊ณ ์„œ ์ฝ”๋“œ (11011: ์‚ฌ์—…๋ณด๊ณ ์„œ, 11013: ๋ถ„๊ธฐ๋ณด๊ณ ์„œ, ๊ธฐ๋ณธ๊ฐ’: 11011) **๋ฐ˜ํ™˜**: ์žฌ๋ฌด์ œํ‘œ ์ •๋ณด (์†์ต๊ณ„์‚ฐ์„œ, ์žฌ๋ฌด์ƒํƒœํ‘œ, ํ˜„๊ธˆํ๋ฆ„ํ‘œ) --- ### 4. `analyze_financial_trend_tool` ๊ธฐ์—…์˜ ์žฌ๋ฌด ์ถ”์ด ๋ถ„์„ (์ตœ๊ทผ N๋…„) **ํŒŒ๋ผ๋ฏธํ„ฐ**: - `corp_code` (string, ํ•„์ˆ˜): ๊ธฐ์—… ๊ณ ์œ ๋ฒˆํ˜ธ - `years` (integer, ์„ ํƒ): ๋ถ„์„ํ•  ์—ฐ์ˆ˜ (๊ธฐ๋ณธ๊ฐ’: 5, ์ตœ๋Œ€: 10) **๋ฐ˜ํ™˜**: ์žฌ๋ฌด ์ถ”์ด ๋ถ„์„ ๊ฒฐ๊ณผ (์ตœ๊ทผ N๋…„ ์žฌ๋ฌด์ œํ‘œ ๋ฐ์ดํ„ฐ) --- ### 5. `get_public_disclosure_tool` ๊ธฐ์—…์˜ ๊ณต์‹œ์ •๋ณด ์กฐํšŒ **ํŒŒ๋ผ๋ฏธํ„ฐ**: - `corp_code` (string, ํ•„์ˆ˜): ๊ธฐ์—… ๊ณ ์œ ๋ฒˆํ˜ธ - `bgn_de` (string, ์„ ํƒ): ์‹œ์ž‘์ผ (YYYYMMDD ํ˜•์‹, ๊ธฐ๋ณธ๊ฐ’: ์ตœ๊ทผ 1๊ฐœ์›”) - `end_de` (string, ์„ ํƒ): ์ข…๋ฃŒ์ผ (YYYYMMDD ํ˜•์‹, ๊ธฐ๋ณธ๊ฐ’: ์˜ค๋Š˜) - `page_no` (integer, ์„ ํƒ): ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ (๊ธฐ๋ณธ๊ฐ’: 1) - `page_count` (integer, ์„ ํƒ): ํŽ˜์ด์ง€๋‹น ๊ฑด์ˆ˜ (๊ธฐ๋ณธ๊ฐ’: 10, ์ตœ๋Œ€: 100) **๋ฐ˜ํ™˜**: ๊ณต์‹œ์ •๋ณด ๋ชฉ๋ก --- ### 6. `get_company_overview_tool` ๊ธฐ์—…์˜ ๊ธฐ๋ณธ์ •๋ณด ์กฐํšŒ **ํŒŒ๋ผ๋ฏธํ„ฐ**: - `corp_code` (string, ์„ ํƒ): ๊ธฐ์—… ๊ณ ์œ ๋ฒˆํ˜ธ - `company_name` (string, ์„ ํƒ): ํšŒ์‚ฌ๋ช… (corp_code ๋˜๋Š” company_name ์ค‘ ํ•˜๋‚˜ ํ•„์ˆ˜) **๋ฐ˜ํ™˜**: ๊ธฐ์—… ๊ธฐ๋ณธ์ •๋ณด (ํšŒ์‚ฌ๋ช…, ๋Œ€ํ‘œ์ž๋ช…, ์„ค๋ฆฝ์ผ, ๋ณธ์‚ฌ์ฃผ์†Œ ๋“ฑ) --- ### 7. `get_major_report_tool` ์ฃผ์š”์‚ฌํ•ญ๋ณด๊ณ ์„œ ์กฐํšŒ **ํŒŒ๋ผ๋ฏธํ„ฐ**: - `corp_code` (string, ์„ ํƒ): ๊ธฐ์—… ๊ณ ์œ ๋ฒˆํ˜ธ - `company_name` (string, ์„ ํƒ): ํšŒ์‚ฌ๋ช… - `bgn_de` (string, ์„ ํƒ): ์‹œ์ž‘์ผ (YYYYMMDD ํ˜•์‹, ๊ธฐ๋ณธ๊ฐ’: ์ตœ๊ทผ 1๊ฐœ์›”) - `end_de` (string, ์„ ํƒ): ์ข…๋ฃŒ์ผ (YYYYMMDD ํ˜•์‹, ๊ธฐ๋ณธ๊ฐ’: ์˜ค๋Š˜) **๋ฐ˜ํ™˜**: ์ฃผ์š”์‚ฌํ•ญ๋ณด๊ณ ์„œ ๋ชฉ๋ก (์ž„์›๋ณ€๊ฒฝ, ์ž๋ณธ๊ธˆ๋ณ€๊ฒฝ ๋“ฑ) --- ### 8. `download_disclosure_document_tool` ๊ณต์‹œ์›๋ฌธ ๋‹ค์šด๋กœ๋“œ **ํŒŒ๋ผ๋ฏธํ„ฐ**: - `rcept_no` (string, ํ•„์ˆ˜): ์ ‘์ˆ˜๋ฒˆํ˜ธ (๊ณต์‹œ์ •๋ณด์—์„œ ์–ป์„ ์ˆ˜ ์žˆ์Œ) - `file_format` (string, ์„ ํƒ): ํŒŒ์ผ ํ˜•์‹ ("xml" ๋˜๋Š” "pdf", ๊ธฐ๋ณธ๊ฐ’: "xml") **๋ฐ˜ํ™˜**: ๊ณต์‹œ์›๋ฌธ ๋ฐ์ดํ„ฐ (XML์€ ํŒŒ์‹ฑ๋œ ๋ฐ์ดํ„ฐ ํฌํ•จ, PDF๋Š” base64 ์ธ์ฝ”๋”ฉ) --- ### 9. `get_executives_tool` ๊ธฐ์—…์˜ ์ž„์›์ •๋ณด ์กฐํšŒ **ํŒŒ๋ผ๋ฏธํ„ฐ**: - `corp_code` (string, ์„ ํƒ): ๊ธฐ์—… ๊ณ ์œ ๋ฒˆํ˜ธ - `company_name` (string, ์„ ํƒ): ํšŒ์‚ฌ๋ช… (corp_code ๋˜๋Š” company_name ์ค‘ ํ•˜๋‚˜ ํ•„์ˆ˜) **๋ฐ˜ํ™˜**: ์ž„์›์ •๋ณด ๋ชฉ๋ก (์ž„์›๋ช…, ์ง์ฑ…, ๋ณด์ˆ˜ ๋“ฑ) --- ### 10. `get_shareholders_tool` ์ง€๋ถ„๋ณด๊ณ ์„œ ์กฐํšŒ **ํŒŒ๋ผ๋ฏธํ„ฐ**: - `corp_code` (string, ์„ ํƒ): ๊ธฐ์—… ๊ณ ์œ ๋ฒˆํ˜ธ - `company_name` (string, ์„ ํƒ): ํšŒ์‚ฌ๋ช… - `bsns_year` (string, ์„ ํƒ): ์‚ฌ์—…์—ฐ๋„ (YYYY ํ˜•์‹, ๊ธฐ๋ณธ๊ฐ’: ์ตœ๊ทผ ์—ฐ๋„) - `reprt_code` (string, ์„ ํƒ): ๋ณด๊ณ ์„œ ์ฝ”๋“œ (11011: ์‚ฌ์—…๋ณด๊ณ ์„œ, 11013: ๋ถ„๊ธฐ๋ณด๊ณ ์„œ, ๊ธฐ๋ณธ๊ฐ’: 11011) **๋ฐ˜ํ™˜**: ์ง€๋ถ„๋ณด๊ณ ์„œ (์ฃผ์ฃผ๋ช…, ๋ณด์œ ์ง€๋ถ„, ๋น„์œจ ๋“ฑ) --- ## ๐Ÿ’ก ์‚ฌ์šฉ ์˜ˆ์‹œ ### ์˜ˆ์‹œ 1: ๊ธฐ์—… ์žฌ๋ฌด์ œํ‘œ ๋ถ„์„ **์‚ฌ์šฉ์ž**: "์‚ผ์„ฑ์ „์ž ์žฌ๋ฌด์ œํ‘œ ๋ถ„์„ํ•ด์ค˜" **AI ์—์ด์ „ํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…**: 1. `search_company_tool(query="์‚ผ์„ฑ์ „์ž")` ํ˜ธ์ถœ โ†’ corp_code ํ™•์ธ 2. `get_financial_statement_tool(company_name="์‚ผ์„ฑ์ „์ž", bsns_year="2024")` ํ˜ธ์ถœ 3. ์žฌ๋ฌด์ œํ‘œ ๋ถ„์„ ๋ฐ ์š”์•ฝ ์ œ๊ณต --- ### ์˜ˆ์‹œ 2: ์žฌ๋ฌด ์ถ”์ด ๋ถ„์„ **์‚ฌ์šฉ์ž**: "๋„ค์ด๋ฒ„ ์ตœ๊ทผ 5๋…„ ์žฌ๋ฌด ์ถ”์ด ๋ถ„์„ํ•ด์ค˜" **AI ์—์ด์ „ํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…**: 1. ๊ธฐ์—… ๊ฒ€์ƒ‰ โ†’ corp_code ํ™•์ธ 2. `analyze_financial_trend_tool(corp_code="...", years=5)` ํ˜ธ์ถœ 3. ์ตœ๊ทผ 5๋…„ ๋งค์ถœ, ์˜์—…์ด์ต, ์ˆœ์ด์ต ์ถ”์ด ๋ถ„์„ 4. ์„ฑ์žฅ์„ฑ ํ‰๊ฐ€ ๋ฐ ๊ทธ๋ž˜ํ”„ ์ƒ์„ฑ --- ### ์˜ˆ์‹œ 3: ํˆฌ์ž ๊ฒ€ํ†  **์‚ฌ์šฉ์ž**: "์นด์นด์˜ค๋ฑ…ํฌ ํˆฌ์ž ๊ฒ€ํ† ํ•ด์ค˜" **AI ์—์ด์ „ํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…**: 1. `search_company_tool(query="์นด์นด์˜ค๋ฑ…ํฌ")` - ํšŒ์‚ฌ ๊ฒ€์ƒ‰ 2. `get_company_overview_tool(company_name="์นด์นด์˜ค๋ฑ…ํฌ")` - ๊ธฐ๋ณธ์ •๋ณด ํ™•์ธ 3. `analyze_financial_trend_tool(corp_code="...", years=3)` - ์ตœ๊ทผ 3๋…„ ์žฌ๋ฌด ์ถ”์ด 4. `get_executives_tool(company_name="์นด์นด์˜ค๋ฑ…ํฌ")` - ์ž„์›์ง„ ํ™•์ธ 5. `get_shareholders_tool(company_name="์นด์นด์˜ค๋ฑ…ํฌ")` - ์ง€๋ถ„๊ตฌ์กฐ ํ™•์ธ 6. `get_public_disclosure_tool(corp_code="...")` - ์ตœ๊ทผ ๊ณต์‹œ ํ™•์ธ 7. ์ข…ํ•ฉ ํˆฌ์ž ์˜๊ฒฌ ์ œ์‹œ --- ### ์˜ˆ์‹œ 4: ๊ฒฝ์Ÿ์‚ฌ ๋น„๊ต **์‚ฌ์šฉ์ž**: "๋„ค์ด๋ฒ„, ์นด์นด์˜ค, ๋ผ์ธ ์žฌ๋ฌด ๋น„๊ตํ•ด์ค˜" **AI ์—์ด์ „ํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…**: 1. ๊ฐ ํšŒ์‚ฌ๋ณ„๋กœ `analyze_financial_trend_tool` ํ˜ธ์ถœ 2. ๋งค์ถœ, ์˜์—…์ด์ต, ์ˆœ์ด์ต ์ถ”์ด ๋น„๊ต 3. ์„ฑ์žฅ๋ฅ  ๊ณ„์‚ฐ ๋ฐ ๋น„๊ตํ‘œ ์ƒ์„ฑ 4. `get_shareholders_tool`๋กœ ์ง€๋ถ„๊ตฌ์กฐ ๋น„๊ต --- ### ์˜ˆ์‹œ 5: ๊ณต์‹œ ์›๋ฌธ ์ƒ์„ธ ๋ถ„์„ **์‚ฌ์šฉ์ž**: "์‚ผ์„ฑ์ „์ž ์ตœ๊ทผ ๊ณต์‹œ ์ค‘ ์ค‘์š”ํ•œ ๊ฒƒ ํ•˜๋‚˜ ์ƒ์„ธ ๋ถ„์„ํ•ด์ค˜" **AI ์—์ด์ „ํŠธ๊ฐ€ ์ˆ˜ํ–‰ํ•˜๋Š” ์ž‘์—…**: 1. `get_public_disclosure_tool(company_name="์‚ผ์„ฑ์ „์ž", page_count=10)` - ์ตœ๊ทผ ๊ณต์‹œ ๋ชฉ๋ก 2. ๊ณต์‹œ ์ œ๋ชฉ ๋ถ„์„ํ•˜์—ฌ ์ค‘์š” ๊ณต์‹œ ์„ ํƒ 3. `download_disclosure_document_tool(rcept_no="...", file_format="xml")` - ๊ณต์‹œ์›๋ฌธ ๋‹ค์šด๋กœ๋“œ 4. XML ํŒŒ์‹ฑ๋œ ๋ฐ์ดํ„ฐ ๋ถ„์„ 5. ํ•ต์‹ฌ ๋‚ด์šฉ ์š”์•ฝ ๋ฐ ์˜๊ฒฌ ์ œ์‹œ --- ## ๐ŸŒ HTTP API ์—”๋“œํฌ์ธํŠธ HTTP ์„œ๋ฒ„ ๋ชจ๋“œ๋กœ ์‹คํ–‰ ์‹œ ๋‹ค์Œ ์—”๋“œํฌ์ธํŠธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค: ### `GET /health` ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ **์‘๋‹ต ์˜ˆ์‹œ**: ```json { "status": "ok", "message": "์ •์ƒ", "service": "Korean Company Information MCP Server (Free Version)", "environment": { "dart_api_key": "์„ค์ •๋จ", "key_source": ".env file" } } ``` ### `POST /health` ์„œ๋น„์Šค ์ƒํƒœ ํ™•์ธ (env ํฌํ•จ ๊ฐ€๋Šฅ) **์š”์ฒญ ๋ณธ๋ฌธ**: ```json { "env": { "DART_API_KEY": "your_api_key_here" } } ``` ### `GET /tools` ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋„๊ตฌ ๋ชฉ๋ก ์กฐํšŒ **์‘๋‹ต**: ๋„๊ตฌ ๋ชฉ๋ก ๋ฐฐ์—ด ### `POST /tools/{tool_name}` ๋„๊ตฌ ํ˜ธ์ถœ **์š”์ฒญ ์˜ˆ์‹œ**: ```json { "query": "์‚ผ์„ฑ์ „์ž", "env": { "DART_API_KEY": "your_api_key_here" } } ``` --- ## ๐Ÿ”‘ API ํ‚ค ์šฐ์„ ์ˆœ์œ„ MCP ์„œ๋ฒ„๋Š” ๋‹ค์Œ ์ˆœ์„œ๋กœ API ํ‚ค๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค: 1. **์šฐ์„ ์ˆœ์œ„ 1**: `arguments.env.DART_API_KEY` (๋ฉ”์ธ ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ํ‚ค) 2. **์šฐ์„ ์ˆœ์œ„ 2**: `.env` ํŒŒ์ผ์˜ `DART_API_KEY` (๋กœ์ปฌ ๊ฐœ๋ฐœ์šฉ) 3. **๋‘˜ ๋‹ค ์—†์œผ๋ฉด**: Health ์ฒดํฌ์—์„œ "๋“ฑ๋ก๋œ ํ‚ค๊ฐ€ ์—†์Šต๋‹ˆ๋‹ค" ๋ฐ˜ํ™˜ ์ด๋ฅผ ํ†ตํ•ด: - **ํ”„๋กœ๋•์…˜**: ๋ฉ”์ธ ์„œ๋ฒ„์—์„œ ๊ฐ ์‚ฌ์šฉ์ž๋ณ„ ํ‚ค๋ฅผ ์ „๋‹ฌ๋ฐ›์•„ ์‚ฌ์šฉ - **๋กœ์ปฌ ๊ฐœ๋ฐœ**: `.env` ํŒŒ์ผ์— ํ‚ค๋ฅผ ์„ค์ •ํ•˜์—ฌ ๊ฐœ๋ฐœ --- ## ๐Ÿ“ ํ”„๋กœ์ ํŠธ ๊ตฌ์กฐ ``` company-info-mcp/ โ”œโ”€โ”€ src/ โ”‚ โ”œโ”€โ”€ __init__.py โ”‚ โ”œโ”€โ”€ main.py # MCP ์„œ๋ฒ„ ๋ฉ”์ธ ํŒŒ์ผ โ”‚ โ””โ”€โ”€ tools.py # ๊ธฐ์—…์ •๋ณด API ํ˜ธ์ถœ ๋„๊ตฌ โ”œโ”€โ”€ .env # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํŒŒ์ผ (API ํ‚ค ๋“ฑ) - .gitignore์— ํฌํ•จ โ”œโ”€โ”€ env.example # ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์˜ˆ์‹œ ํŒŒ์ผ โ”œโ”€โ”€ requirements.txt # Python ์˜์กด์„ฑ โ”œโ”€โ”€ pyproject.toml # ํ”„๋กœ์ ํŠธ ์„ค์ • โ”œโ”€โ”€ Dockerfile # Docker ์ด๋ฏธ์ง€ ๋นŒ๋“œ ํŒŒ์ผ โ”œโ”€โ”€ DEVELOPMENT_GUIDE.md # ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ (DART API ๊ทธ๋ฃน๋ณ„ ๊ธฐ๋Šฅ) โ””โ”€โ”€ README.md # ํ”„๋กœ์ ํŠธ ๋ฌธ์„œ (์ด ํŒŒ์ผ) ``` --- ## โš ๏ธ ์ œํ•œ์‚ฌํ•ญ ### ๋ฌด๋ฃŒ ๋ฒ„์ „์˜ ํ•œ๊ณ„ - **์ƒ์žฅ๊ธฐ์—…๋งŒ ๊ฐ€๋Šฅ**: DART API๋Š” ์ƒ์žฅ๊ธฐ์—… ์ •๋ณด๋งŒ ์ œ๊ณต (๋น„์ƒ์žฅ ๊ธฐ์—… ๋ถˆ๊ฐ€) - **์‚ฌ์—…์ž๋“ฑ๋ก์ •๋ณด ์—†์Œ**: ๊ธฐ๋ณธ ์‚ฌ์—…์ž ์ •๋ณด๋Š” ์œ ๋ฃŒ API ํ•„์š” - **์‹ ์šฉ์ •๋ณด ์—†์Œ**: ์‹ ์šฉ๋“ฑ๊ธ‰์€ ์œ ๋ฃŒ API ํ•„์š” ### API ์‚ฌ์šฉ ์ œํ•œ - DART API: ์ผ์ผ ํ˜ธ์ถœ ์ œํ•œ ์žˆ์Œ (๋ณดํ†ต ์ถฉ๋ถ„ํ•จ) - API ํ‚ค๋Š” ๋ฌด๋ฃŒ๋กœ ๋ฐœ๊ธ‰ ๊ฐ€๋Šฅ --- ## ๐Ÿ› ๋ฌธ์ œ ํ•ด๊ฒฐ ### "API ํ‚ค๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค" ์˜ค๋ฅ˜ **์›์ธ**: DART_API_KEY ํ™˜๊ฒฝ ๋ณ€์ˆ˜๊ฐ€ ์„ค์ •๋˜์ง€ ์•Š์Œ **ํ•ด๊ฒฐ**: 1. `.env` ํŒŒ์ผ ํ™•์ธ 2. `DART_API_KEY=your_key_here` ํ˜•์‹์œผ๋กœ ์„ค์ •๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธ 3. ๋˜๋Š” ๋ฉ”์ธ ์„œ๋ฒ„์—์„œ `arguments.env.DART_API_KEY`๋กœ ์ „๋‹ฌ ### "DART API ์˜ค๋ฅ˜" ๋ฉ”์‹œ์ง€ **์›์ธ**: API ํ‚ค๊ฐ€ ์ž˜๋ชป๋˜์—ˆ๊ฑฐ๋‚˜ ๊ธฐ์—…์„ ์ฐพ์„ ์ˆ˜ ์—†์Œ **ํ•ด๊ฒฐ**: 1. API ํ‚ค๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธ 2. ์ƒ์žฅ๊ธฐ์—…์ธ์ง€ ํ™•์ธ (๋น„์ƒ์žฅ ๊ธฐ์—…์€ ์ง€์› ์•ˆ ๋จ) 3. ํšŒ์‚ฌ๋ช… ์ •ํ™•ํžˆ ์ž…๋ ฅ (์˜ˆ: "์‚ผ์„ฑ์ „์ž" O, "์‚ผ์„ฑ" X) ### Claude Desktop์—์„œ ๋„๊ตฌ๊ฐ€ ๋ณด์ด์ง€ ์•Š์Œ **ํ•ด๊ฒฐ**: 1. `claude_desktop_config.json` ํŒŒ์ผ ๊ฒฝ๋กœ ํ™•์ธ 2. JSON ํ˜•์‹์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธ (์ฝค๋งˆ, ๋”ฐ์˜ดํ‘œ ๋“ฑ) 3. `cwd` ๊ฒฝ๋กœ๋ฅผ ์‹ค์ œ ํ”„๋กœ์ ํŠธ ๊ฒฝ๋กœ๋กœ ๋ณ€๊ฒฝ 4. Claude Desktop ์™„์ „ ์ข…๋ฃŒ ํ›„ ์žฌ์‹œ์ž‘ 5. ๋กœ๊ทธ ํŒŒ์ผ ํ™•์ธ (Windows: `%APPDATA%\Claude\logs`) --- ## ๐Ÿ“š ๊ฐœ๋ฐœ ๊ฐ€์ด๋“œ DART API์˜ ๊ฐ ๊ทธ๋ฃน๋ณ„ ๊ธฐ๋Šฅ๊ณผ ์ถ”๊ฐ€ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•์€ [DEVELOPMENT_GUIDE.md](./DEVELOPMENT_GUIDE.md)๋ฅผ ์ฐธ๊ณ ํ•˜์„ธ์š”. ### ๊ตฌํ˜„ ์ƒํƒœ - **DS001**: ๊ณต์‹œ์ •๋ณด ์กฐํšŒ (โœ… ๊ตฌํ˜„ ์™„๋ฃŒ) - **DS002**: ์žฌ๋ฌด์ •๋ณด ์กฐํšŒ (โœ… ๊ตฌํ˜„ ์™„๋ฃŒ) - **DS003**: ๊ธฐ์—…๊ฐœํ™ฉ ์ •๋ณด (โœ… ์ฃผ์š” ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์™„๋ฃŒ) - **DS004**: ๊ณต์‹œ์›๋ฌธ ๋‹ค์šด๋กœ๋“œ (โœ… ๊ตฌํ˜„ ์™„๋ฃŒ) - **DS005**: ์ฃผ์š”์‚ฌํ•ญ๋ณด๊ณ ์„œ (โœ… ๊ตฌํ˜„ ์™„๋ฃŒ) - **DS006**: ๊ธฐํƒ€ ์ •๋ณด (โœ… ์ฃผ์š” ๊ธฐ๋Šฅ ๊ตฌํ˜„ ์™„๋ฃŒ) --- ## ๐Ÿค ๊ธฐ์—ฌ ๋ฐ ๋ฌธ์˜ - **์ด์Šˆ**: GitHub Issues - **๋ฌธ์˜**: company-info-mcp@example.com - **๋ฌธ์„œ**: https://github.com/your-repo/company-info-mcp --- ## ๐Ÿ“„ ๋ผ์ด์„ ์Šค MIT License --- **Made with โค๏ธ for Korean Business Professionals** DART API๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๊ฐœ๋ฐœ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

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