Skip to main content
Glama
SeoNaRu

Korean Company Information MCP Server

by SeoNaRu

๐Ÿข ํ•œ๊ตญ ๊ธฐ์—…์ •๋ณด ์กฐํšŒ MCP ์„œ๋ฒ„

DART API๋ฅผ ํ™œ์šฉํ•œ MCP (Model Context Protocol) ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค.

AI ์—์ด์ „ํŠธ(Claude Desktop, Cursor ๋“ฑ)๊ฐ€ ์‹ค์‹œ๊ฐ„์œผ๋กœ ํ•œ๊ตญ ์ƒ์žฅ๊ธฐ์—…์˜ ์žฌ๋ฌด์ œํ‘œ, ๊ณต์‹œ์ •๋ณด, ์ž„์›์ •๋ณด, ์ง€๋ถ„๊ตฌ์กฐ ๋“ฑ์„ ์กฐํšŒํ•˜๊ณ  ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.


โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

๐Ÿ“Š ๊ธฐ์—… ์ •๋ณด ์กฐํšŒ (DART API)

๊ธฐ๋Šฅ

์„ค๋ช…

๊ธฐ์—… ๊ฒ€์ƒ‰

ํšŒ์‚ฌ๋ช…์œผ๋กœ ๊ธฐ์—… ๊ฒ€์ƒ‰ ๋ฐ ๊ธฐ๋ณธ์ •๋ณด ์กฐํšŒ

๊ธฐ์—… ๊ธฐ๋ณธ์ •๋ณด

ํšŒ์‚ฌ๋ช…, ๋Œ€ํ‘œ์ž๋ช…, ์„ค๋ฆฝ์ผ, ๋ณธ์‚ฌ์ฃผ์†Œ ๋“ฑ ๊ธฐ๋ณธ์ •๋ณด ์กฐํšŒ

์žฌ๋ฌด์ œํ‘œ ์กฐํšŒ

์†์ต๊ณ„์‚ฐ์„œ, ์žฌ๋ฌด์ƒํƒœํ‘œ, ํ˜„๊ธˆํ๋ฆ„ํ‘œ

์žฌ๋ฌด ์ถ”์ด ๋ถ„์„

์ตœ๊ทผ 5-10๋…„ ์žฌ๋ฌด์ œํ‘œ ์ถ”์ด ๋ถ„์„

๊ณต์‹œ์ •๋ณด ์กฐํšŒ

์ตœ๊ทผ ๊ณต์‹œ ๋ชฉ๋ก ๋ฐ ์ƒ์„ธ ๋‚ด์šฉ

์ž„์›์ •๋ณด ์กฐํšŒ

์ž„์›๋ช…, ์ง์ฑ…, ๋ณด์ˆ˜ ๋“ฑ ์ž„์›์ •๋ณด ์กฐํšŒ

์ง€๋ถ„๋ณด๊ณ ์„œ

์ฃผ์ฃผ๋ช…, ๋ณด์œ ์ง€๋ถ„, ๋น„์œจ ๋“ฑ ์ง€๋ถ„๊ตฌ์กฐ ์กฐํšŒ

๐Ÿš€ ์„ฑ๋Šฅ ์ตœ์ ํ™”

  • ์ „๋žต์  ์บ์‹ฑ: ๊ธฐ์—…์ •๋ณด ๋ฐ์ดํ„ฐ๋ฅผ 24์‹œ๊ฐ„ ์บ์‹ฑํ•˜์—ฌ API ํ˜ธ์ถœ ์ตœ์†Œํ™”

  • ๋น ๋ฅธ ์‘๋‹ต ์†๋„: ์บ์‹œ ๊ธฐ๋ฐ˜ ์ฆ‰์‹œ ์‘๋‹ต

  • ์•ˆ์ •์ ์ธ ์šด์˜: ์—๋Ÿฌ ํ•ธ๋“ค๋ง ๋ฐ ๋กœ๊น… ์‹œ์Šคํ…œ

  • API ํ‚ค ์šฐ์„ ์ˆœ์œ„: ๋ฉ”์ธ ์„œ๋ฒ„์—์„œ ๋ฐ›์€ ํ‚ค โ†’ .env ํŒŒ์ผ (๋กœ์ปฌ ๊ฐœ๋ฐœ์šฉ)


Related MCP server: opendart-mcp-server

๐Ÿ› ๏ธ ๊ธฐ์ˆ  ์Šคํƒ

  • MCP Framework: FastMCP

  • Data Validation: Pydantic

  • HTTP Client: Requests

  • Caching: cachetools (TTL ์บ์‹œ)

  • Async Processing: asyncio

  • Environment: Python-dotenv


๐Ÿ“ฆ ์„ค์น˜ ๋ฐ ์„ค์ •

1) ์˜์กด์„ฑ ์„ค์น˜

pip install -r requirements.txt

๐Ÿ’ก uv๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ: uv sync

2) DART API ํ‚ค ๋ฐœ๊ธ‰ (๋ฌด๋ฃŒ, ์ฆ‰์‹œ)

  1. ์ „์ž๊ณต์‹œ์‹œ์Šคํ…œ Open DART ๋ฐฉ๋ฌธ

  2. ํšŒ์›๊ฐ€์ž… ๋ฐ ๋กœ๊ทธ์ธ

  3. ์ธ์ฆํ‚ค ์‹ ์ฒญ/๊ด€๋ฆฌ ๋ฉ”๋‰ด์—์„œ ์ธ์ฆํ‚ค ๋ฐœ๊ธ‰

  4. ์ฆ‰์‹œ ๋ฐœ๊ธ‰ (๋ฌด๋ฃŒ)

๐Ÿ’ก ๋ฌด๋ฃŒ์ด๋ฉฐ, ์ผ์ผ API ํ˜ธ์ถœ ์ œํ•œ์ด ์ถฉ๋ถ„ํžˆ ๋„‰๋„‰ํ•ฉ๋‹ˆ๋‹ค!

3) ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

ํ”„๋กœ์ ํŠธ ๋ฃจํŠธ์— .env ํŒŒ์ผ์„ ์ƒ์„ฑํ•˜๊ณ  API ํ‚ค๋ฅผ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค:

cp env.example .env

.env ํŒŒ์ผ ๋‚ด์šฉ:

DART_API_KEY=your_dart_api_key_here
LOG_LEVEL=INFO
PORT=8097

4) ์„œ๋ฒ„ ์‹คํ–‰

MCP ์„œ๋ฒ„ ๋ชจ๋“œ (stdio)

python -m src.main

HTTP ์„œ๋ฒ„ ๋ชจ๋“œ

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

์„ค์ • ์˜ˆ์‹œ:

{
  "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

GET /health
POST /health

๋„๊ตฌ ๋ชฉ๋ก ์กฐํšŒ

GET /tools

๋„๊ตฌ ์‹คํ–‰

POST /tools/{tool_name}
Content-Type: application/json

{
  "company_name": "์‚ผ์„ฑ์ „์ž",
  "env": {
    "DART_API_KEY": "your_api_key"
  }
}

๐Ÿณ Docker ์‹คํ–‰

# ์ด๋ฏธ์ง€ ๋นŒ๋“œ
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์˜ ์ด์šฉ์•ฝ๊ด€์„ ์ค€์ˆ˜ํ•ฉ๋‹ˆ๋‹ค.

Related MCP Connectors

Related MCP Servers

  • F
    license
    C
    quality
    C
    maintenance
    Enables AI assistants to access South Korea's financial disclosure system (OpenDART), allowing users to retrieve corporate financial reports, disclosure documents, shareholder information, and automatically extract and search financial statement notes through natural language queries.
    85
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to access Korean corporate disclosure data from DART, allowing natural language queries about companies, financial statements, and disclosures.
    22 npm
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides AI assistants with real-time access to Korean listed companies' disclosures, financial statements, and corporate information via the DART API.
    4
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to access Korea's DART financial data system for retrieving and analyzing corporate disclosures and financial information through natural language queries.
    25 npm
    MIT