Skip to main content
Glama
Mrbaeksang

Korea Stock Analyzer MCP Server

by Mrbaeksang

๐Ÿ“ˆ korea-stock-mcp

ํ•œ๊ตญ ์ฃผ์‹์„ ์œ„ํ•œ ๋ณด์ˆ˜์ ยท๋ฐ์ดํ„ฐ ์ •์ง ์›๊ฒฉ MCP ์„œ๋ฒ„ Conservative, data-honest Korean equity analysis for Claude, Cursor and any MCP client

CI Python FastMCP MCP License


DART ์ „์ž๊ณต์‹œ์˜ ์‹ค์ธก ์žฌ๋ฌด์ œํ‘œ์™€ KRX ์‹œ์„ธ๋งŒ์œผ๋กœ ํ•œ๊ตญ ์ƒ์žฅ์‚ฌ๋ฅผ ๋ถ„์„ํ•œ๋‹ค. ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ์—†๋‹ค๊ณ  ๋‹ตํ•˜๊ณ , ๋ชฉํ‘œ ์ฃผ๊ฐ€ ๋Œ€์‹  ๊ฐ€์ •์ด ๋ช…์‹œ๋œ ๋ฒ”์œ„๋ฅผ ์ œ์‹œํ•˜๋ฉฐ, ๋งค์ˆ˜ยท๋งค๋„ ๊ถŒ๊ณ ๋ฅผ ํ•˜์ง€ ์•Š๋Š”๋‹ค.

โœจ Features

  • ๋‚ ์กฐ ์ œ๋กœ โ€” ๋ชจ๋“  ์ˆ˜์น˜๋Š” DART ๊ณต์‹œยทKRX ์‹œ์„ธ ์‹ค์ธก์น˜. ๊ฒฐ์ธก์€ null + ์‚ฌ์œ ๋กœ ๋ช…์‹œ, ๊ธฐ๋ณธ๊ฐ’ ์ฃผ์ž… ์—†์Œ

  • ์‹ค์ธก ์žฌ๋ฌด์ œํ‘œ โ€” ์‚ฌ์—…๋ณด๊ณ ์„œ ๊ธฐ๋ฐ˜ ๋งค์ถœยท์˜์—…์ด์ตยทํ˜„๊ธˆํ๋ฆ„ 3~10๊ฐœ๋…„, ์—ฐ๊ฒฐ(CFS) ์šฐ์„ /๋ณ„๋„(OFS) ํด๋ฐฑ ํ‘œ์‹œ

  • ๋ณด์ˆ˜์  ๋ฐธ๋ฅ˜์—์ด์…˜ โ€” ๋‹จ์ผ ์ ์ •๊ฐ€ ๋Œ€์‹  3์‹œ๋‚˜๋ฆฌ์˜ค(๋น„๊ด€/์ค‘๋ฆฝ/๋‚™๊ด€) ๋ฒ”์œ„, ์„ฑ์žฅ๋ฅ ยท๋ฉ€ํ‹ฐํ”Œ ๊ฐ€์ • ์ „๋ถ€ ์‘๋‹ต์— ํฌํ•จ

  • ๋ฆฌ์Šคํฌ ์šฐ์„  โ€” ์žฌ๋ฌด ์ ์‹ ํ˜ธ 6์ข… ์ž๋™ ๊ฒ€์‚ฌ + ๊ณต์‹œ ์œ„ํ—˜ ํ‚ค์›Œ๋“œ ํ•˜์ด๋ผ์ดํŠธ, ๊ฒ€์‚ฌ ๋ถˆ๊ฐ€ ํ•ญ๋ชฉ๋„ ๊ตฌ๋ถ„ ๋ณด๊ณ 

  • ๊ต์ฐจ ๊ฒ€์ฆ โ€” ์‹œ๊ฐ€์ด์•ก ์ •ํ•ฉ์„ฑ ๊ฒ€์‚ฌ(์ฃผ๊ฐ€ร—์ฃผ์‹์ˆ˜ vs ๋ณด๊ณ  ์‹œ์ด) ๋“ฑ ๋ฐ์ดํ„ฐ ์ •ํ•ฉ์„ฑ ๊ฒ€์ฆ ๋‚ด์žฅ

  • ์šด์˜ ๊ธฐ๋ณธ๊ธฐ โ€” ๊ธ€๋กœ๋ฒŒ ๋ ˆ์ดํŠธ ๋ฆฌ๋ฐ‹, DART ์ฟผํ„ฐ ๋ณดํ˜ธ ์บ์‹ฑ, KRX IP ์ฐจ๋‹จ ๋ฐฉ์ง€ ์ง๋ ฌํ™”, ๊ตฌ์กฐํ™” ์—๋Ÿฌ ๋ฉ”์‹œ์ง€

Related MCP server: Stock Market Analysis MCP Server

๐Ÿ—๏ธ Architecture

graph LR
    C1[Claude / claude.ai] -->|Streamable HTTP| S
    C2[Claude Desktop / Cursor] -->|Streamable HTTP| S
    subgraph Railway
        S[FastMCP 3 ยท stateless] --> T[tools/ ๋“ฑ๋ก ๊ณ„์ธต]
        T --> A[analysis/ ์ˆœ์ˆ˜ ๊ณ„์‚ฐ<br>ratios ยท valuation ยท risk]
        T --> SV[services/ ๋ฐ์ดํ„ฐ ํด๋ผ์ด์–ธํŠธ]
        SV --> CA[(TTL cache)]
    end
    SV -->|์žฌ๋ฌด์ œํ‘œ ยท ๊ณต์‹œ| DART[DART OpenAPI]
    SV -->|์‹œ์„ธ ยท ์ƒ์žฅ๋ชฉ๋ก| KRX[KRX via FinanceDataReader]

๊ณ„์ธต ์›์น™: tools/๋Š” ๋“ฑ๋ก๋งŒ(์–‡๊ฒŒ) โ†’ services/๋Š” ์™ธ๋ถ€ API + ์บ์‹ฑ โ†’ analysis/๋Š” ์ˆœ์ˆ˜ํ•จ์ˆ˜(๊ฐ€์žฅ ๋‘๊บผ์šด ํ…Œ์ŠคํŠธ). LLM๋„ ์„œ๋ฒ„๋„ ์ˆ˜์น˜๋ฅผ "์•”์‚ฐ"ํ•˜์ง€ ์•Š๋Š”๋‹ค โ€” ๋ชจ๋“  ๊ณ„์‚ฐ์€ ๊ฒฐ์ •๋ก ์  ํ•จ์ˆ˜๋‹ค.

๐Ÿš€ Quickstart

๋ฐฐํฌ๋œ ์„œ๋ฒ„ URL ํ•˜๋‚˜๋ฉด ๋œ๋‹ค. API ํ‚ค ๋ถˆํ•„์š”(๊ณต๊ฐœ ๋ฐ์ดํ„ฐ๋งŒ ์ œ๊ณต).

claude.ai โ€” ์„ค์ • โ†’ ์ปค๋„ฅํ„ฐ โ†’ ์ปค์Šคํ…€ ์ปค๋„ฅํ„ฐ ์ถ”๊ฐ€:

https://korea-stock-analyzer-mcp-production.up.railway.app/mcp

Claude Code:

claude mcp add --transport http korea-stock https://korea-stock-analyzer-mcp-production.up.railway.app/mcp
{
  "mcpServers": {
    "korea-stock": {
      "type": "http",
      "url": "https://korea-stock-analyzer-mcp-production.up.railway.app/mcp"
    }
  }
}

์—ฐ๊ฒฐ ํ›„ ์ด๋ ‡๊ฒŒ ๋ฌผ์–ด๋ณด๋ฉด ๋œ๋‹ค:

"์‚ผ์„ฑ์ „์ž ์ตœ๊ทผ 5๋…„ ์žฌ๋ฌด์ œํ‘œ ํ๋ฆ„์ด๋ž‘ ๋ฆฌ์Šคํฌ ์š”์ธ ์งš์–ด์ค˜"

๐Ÿ› ๏ธ Tools

๋„๊ตฌ

์„ค๋ช…

์ฃผ์š” ํŒŒ๋ผ๋ฏธํ„ฐ

search_company

์ข…๋ชฉ๋ช…/์ฝ”๋“œ๋กœ ์ƒ์žฅ์‚ฌ ๊ฒ€์ƒ‰ (KOSPIยทKOSDAQ)

query

get_quote

์‹œ์„ธยท์‹œ๊ฐ€์ด์•กยท52์ฃผ ๊ณ ์ €ยท๊ฑฐ๋ž˜๋Ÿ‰ + ์‹œ์ด ์ •ํ•ฉ์„ฑ ๊ฒ€์‚ฌ

ticker

get_financials

์‹ค์ธก ์—ฐ๊ฐ„ ์žฌ๋ฌด์ œํ‘œ + ์ˆ˜์ต์„ฑยท์•ˆ์ •์„ฑยท์„ฑ์žฅ์„ฑยทํ˜„๊ธˆํ๋ฆ„ ๋น„์œจ

ticker, years (2โ€“10)

get_valuation

PER/PBR ๋ฉ€ํ‹ฐํ”Œ + 3์‹œ๋‚˜๋ฆฌ์˜ค ๊ฐ€์น˜ ๋ฒ”์œ„ (๊ฐ€์ • ๋ช…์‹œ)

ticker

get_risk_flags

์žฌ๋ฌด ์ ์‹ ํ˜ธ 6์ข… + ์ตœ๊ทผ ๊ณต์‹œ ์œ„ํ—˜ ํ‚ค์›Œ๋“œ

ticker, disclosure_days

๋ชจ๋“  ์‘๋‹ต์— ๋ฐ์ดํ„ฐ ๊ธฐ์ค€์ผ(as_of)๊ณผ ์ถœ์ฒ˜(data_source)๊ฐ€ ๋ถ™๋Š”๋‹ค.

โ˜๏ธ Deploy Your Own

Railway ๊ธฐ์ค€ (Dockerfile ์ž๋™ ๊ฐ์ง€):

  1. ์ด ๋ ˆํฌ๋ฅผ ํฌํฌ โ†’ Railway์—์„œ GitHub ๋ ˆํฌ ์—ฐ๊ฒฐ

  2. ํ™˜๊ฒฝ๋ณ€์ˆ˜:

๋ณ€์ˆ˜

ํ•„์ˆ˜

์„ค๋ช…

DART_API_KEY

โœ…

opendart.fss.or.kr ๋ฌด๋ฃŒ ๋ฐœ๊ธ‰ (์ผ 20,000๊ฑด)

FASTMCP_HTTP_ALLOWED_HOSTS

โœ…

["<์„œ๋น„์Šค>.up.railway.app","healthcheck.railway.app"]

RATE_LIMIT_RPS / RATE_LIMIT_BURST

โ€”

๊ธฐ๋ณธ 5 / 15

  1. Serverless(App Sleeping) ๋น„ํ™œ์„ฑ ๊ถŒ์žฅ โ€” ์ฝœ๋“œ ์Šคํƒ€ํŠธ ์‹œ ์ปค๋„ฅํ„ฐ ์—ฐ๊ฒฐ ์‹คํŒจ ๋ฐฉ์ง€

๋กœ์ปฌ ์‹คํ–‰:

uv sync
DART_API_KEY=<key> uv run uvicorn app.main:app --app-dir src --port 8000

ํ…Œ์ŠคํŠธ:

uv run pytest                          # ๋‹จ์œ„ยท๊ฒฝ๊ณ„ ํ…Œ์ŠคํŠธ (์™ธ๋ถ€ API ์—†์Œ)
uv run pytest -m live -o addopts=""    # ์‹ค์ œ KRX/DART ๊ฒ€์ฆ (ํ‚ค ํ•„์š”)

๐Ÿ“Š ๋ฐ์ดํ„ฐ ์ถœ์ฒ˜์™€ ํ•œ๊ณ„

๋ฐ์ดํ„ฐ

์ถœ์ฒ˜

ํ•œ๊ณ„

์žฌ๋ฌด์ œํ‘œ

DART OpenAPI (์‚ฌ์—…๋ณด๊ณ ์„œ XBRL)

์—ฐ๊ฐ„๋งŒ, ๋ถ„๊ธฐ ๋ฏธ์ œ๊ณต

์‹œ์„ธยท์‹œ์ด

KRX (FinanceDataReader)

์ผ๋ณ„ ์Šค๋ƒ…์ƒท, ์‹ค์‹œ๊ฐ„ ์•„๋‹˜

๊ณต์‹œ ๋ชฉ๋ก

DART OpenAPI

์ตœ๊ทผ 7~365์ผ

FCF

์˜์—…CF โˆ’ ์œ ํ˜•์ž์‚ฐ ์ทจ๋“

๊ทผ์‚ฌ์น˜ โ€” ๋ฌดํ˜•์ž์‚ฐยท๋ฆฌ์Šค ํˆฌ์ž ๋ฏธํฌํ•จ

๐Ÿ”’ Disclaimer

๋ณธ ์„œ๋ฒ„์˜ ์ถœ๋ ฅ์€ ๊ณต์‹œยท์‹œ์„ธ ๋ฐ์ดํ„ฐ์˜ ์‚ฐ์ˆ  ๊ฐ€๊ณต ๊ฒฐ๊ณผ์ด๋ฉฐ ํˆฌ์ž ์ž๋ฌธ์ด ์•„๋‹ˆ๋‹ค. ์‹œ๋‚˜๋ฆฌ์˜ค ๊ฐ’์€ ๋ช…์‹œ๋œ ๊ฐ€์ •์˜ ๊ณ„์‚ฐ ๊ฒฐ๊ณผ์ผ ๋ฟ ๋ชฉํ‘œ ์ฃผ๊ฐ€๊ฐ€ ์•„๋‹ˆ๋‹ค. ์„œ๋ฒ„๋Š” ๋งค์ˆ˜ยท๋งค๋„ยท๋น„์ค‘ ํŒ๋‹จ์„ ์ œ๊ณตํ•˜์ง€ ์•Š์œผ๋ฉฐ, ํˆฌ์ž ํŒ๋‹จ๊ณผ ์ฑ…์ž„์€ ์ „์ ์œผ๋กœ ์ด์šฉ์ž์—๊ฒŒ ์žˆ๋‹ค.

๐Ÿค Contributing

์ด์ŠˆยทPR ํ™˜์˜. ์›์น™ ํ•˜๋‚˜๋งŒ ์ง€์ผœ๋‹ฌ๋ผ: ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์œผ๋ฉด ์—†๋‹ค๊ณ  ๋‹ตํ•œ๋‹ค. ์ถ”์ •์น˜ ์ฃผ์ž…ยทํ•˜๋“œ์ฝ”๋”ฉ ํด๋ฐฑ์ด ๋“ค์–ด๊ฐ„ PR์€ ๋ฐ›์ง€ ์•Š๋Š”๋‹ค. ํ…Œ์ŠคํŠธ๋Š” uv run pytest ํ†ต๊ณผ ํ•„์ˆ˜.

๐Ÿ“œ License

Apache-2.0

A
license - permissive license
-
quality - not tested
A
maintenance

Maintenance

โ€“Maintainers
<1hResponse time
โ€“Release cycle
โ€“Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/Mrbaeksang/korea-stock-analyzer-mcp'

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