Read-only MCP server for the Kiwoom Securities REST API: market data, account inquiry, ISA tax tool
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent โ or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag โ we're steadily working through the catalog.
๐ก Paste into ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
ํ๊ตญ์ด ยท English
ํค์์ฆ๊ถ REST API๋ฅผ ์กฐํ ์ ์ฉ(read-only) ์ผ๋ก ๋ ธ์ถํ๋ MCP ์๋ฒ์ ๋๋ค. Claude Desktop / Claude Code์์ ์์ฐ์ด๋ก ๊ตญ๋ด ์ฃผ์ ์์ธยท์ฐจํธยทํธ๊ฐยท์ง์ยท์์ยท์๊ธ๊ณผ ๋ด ๊ณ์ข์ ์๊ณ ยท๋ณด์ ์ข ๋ชฉยท๊ฑฐ๋๋ด์ญ์ ์กฐํํ ์ ์๊ณ , ISA ๊ณ์ข๋ผ๋ฉด ๋น๊ณผ์ธ ํ๋ ๋๋น ์์ตํต์ฐ ํํฉ๊น์ง ๊ณ์ฐํด ์ค๋๋ค.
โ ๏ธ ๋ณด์ ๊ฒฝ๊ณ
- ๊ธฐ๋ณธ ์คํ์ ๋ก์ปฌ stdio์ ๋๋ค. ์๊ฒฉ์์ ์จ์ผ ํ๋ค๋ฉด ๋ฐ๋์ ์ธ์ฆ์ด ๋ด์ฅ๋ HTTP ๋ชจ๋(์๊ฒฉ ์ฐ๊ฒฐ ์ฐธ์กฐ)๋ก๋ง ๋ ธ์ถํ๊ณ , ์ธ์ฆ ์๋ ์ํ(
--no-auth)๋ก๋ ์ ๋ ์ธ๋ถ ๋คํธ์ํฌ์ ์ด์ง ๋ง์ธ์..env์ AppKey/AppSecret์ ์ค๊ณ์ข ์กฐํ ๊ถํ์ ๋๋ค. ์ ๋ ์ปค๋ฐํ์ง ๋ง์ธ์ (.gitignore์ ์ด๋ฏธ ๋ฑ๋ก๋์ด ์์ต๋๋ค).- ์ฃผ๋ฌธ(๋งค์/๋งค๋/์ ์ /์ทจ์) ๊ธฐ๋ฅ์ ์ค๊ณ์ ์ ์ธ๋์ด ์์ต๋๋ค. ์ด ์๋ฒ๊ฐ ๊ณ์ข๋ฅผ ๋ณ๊ฒฝํ๋ ์ผ์ ์์ต๋๋ค.
์์ฅ ๋ฐ์ดํฐ (๊ณ์ข์ ๋ฌด๊ด, ์ฑํค๋ง ์์ผ๋ฉด ์ฌ์ฉ ๊ฐ๋ฅ):
| Tool | ์ค๋ช | ํค์ TR |
|---|---|---|
search_stock | ์ข ๋ชฉ๋ช โ์ฝ๋ ๊ฒ์ (์ฝ์คํผ/์ฝ์ค๋ฅ, ETF/ETN ํฌํจ) + ํฌ์์ ์ ํ์ | ka10099 |
get_stock_price | ํ์ฌ๊ฐ/๋ฑ๋ฝ๋ฅ /๊ฑฐ๋๋/๊ธฐ๋ณธ์งํ + ์ ์ข ยท์์ฅ์ผยทํฌ์์ ์ | ka10001, ka10099 |
get_stock_quotes | ์ฌ๋ฌ ์ข ๋ชฉ(์ต๋ 30๊ฐ) ์ผ๊ด ์์ธ โ ํ์ฌ๊ฐยท๋ฑ๋ฝ๋ฅ ยท๊ฑฐ๋๋ยท๊ฑฐ๋๋๊ธยท์๊ฐ์ด์ก | ka10095, ka10099 |
get_stock_chart | ์ผ/์ฃผ/์/๋ /๋ถ/ํฑ๋ด ์บ๋ค ์ฐจํธ (์์ ์ฃผ๊ฐ ๋ฐ์) | ka10079~83, ka10094 |
get_daily_trading | ์ผ๋ณ ๊ฑฐ๋ยท์๊ธ โ ์ข ๊ฐยท๊ฑฐ๋๋๊ธ + ๊ฐ์ธ/๊ธฐ๊ด/์ธ๊ตญ์ธ ์๋งค์ยทํ๋ก๊ทธ๋จยท์ ์ฉ๋น์จ, ๋๋ ์ฅ์ /์ฅ์ค/์ฅํ ๊ฑฐ๋ ๋ถํฌ | ka10086, ka10015 |
get_orderbook | 10๋จ๊ณ ๋งค๋/๋งค์ ํธ๊ฐยท์๋ (ํตํฉ ๊ธฐ์ค) | ka10007 |
get_orderbook_rank | ์์ฅ ์ ์ฒด ํธ๊ฐ์๋ ์์ / ์๋ ๊ธ์ฆ / ์๋๋น์จ ๊ธ์ฆ (์ ๊ท์ฅ ์ค) | ka10020~22 |
get_market_index | ์ฝ์คํผ/์ฝ์ค๋ฅ ์ข ํฉยท์ ์ข ์ง์ | ka20003 |
get_sector_price | ์ ์ข ์ง์ ํ์ฌ๊ฐ ์์ธ (๋ฑ๋ฝ ๊ตฌ์ฑยท52์ฃผ ๊ณ ์ ยท์๊ฐ๋๋ณ ์ถ์ด) | ka20001 |
get_sector_stocks | ์ ์ข ๊ตฌ์ฑ ์ข ๋ชฉ ์์ธ (ํ์ฌ๊ฐยท๋ฑ๋ฝ๋ฅ ยท๊ฑฐ๋๋ยท๊ณ ์ ๊ฐ) | ka20002 |
get_sector_chart | ์ ์ข ์ง์ ์ผ/์ฃผ/์/๋ /๋ถ/ํฑ๋ด ์บ๋ค ์ฐจํธ | ka20004~08, ka20019 |
get_sector_flow | ์ ์ข ๋ณ ํฌ์์ ์๋งค์ โ ์์ฅ ์ ์ฒด ์ ์ข ์ ๊ฐ์ธ/์ธ๊ตญ์ธ/๊ธฐ๊ด๊ณ + ์ฆ๊ถยทํฌ์ ยท์ฐ๊ธฐ๊ธยท์ฌ๋ชจ | ka10051 |
get_ranking | ์์น๋ฅ /ํ๋ฝ๋ฅ /๊ฑฐ๋๋/๊ฑฐ๋๋๊ธ ์์ + ์๊ฐ๋๋น ๋ฑ๋ฝ๋ฅ (์ฒด๊ฒฐ๊ฐ๋ ํฌํจ) + ์ ์ฉ๋น์จ ์์ | ka10027/30/32, ka10028, ka10033 |
get_equal_net_trade | ๊ธฐ๊ดยท์ธ๊ตญ์ธ์ด ๋์์ ๊ฐ์ ๋ฐฉํฅ์ผ๋ก ์๋งค๋งคํ ์ข ๋ชฉ + ์ฃผ์ฒด๋ณ ์ถ์ ํ๊ท ๋จ๊ฐ | ka10062 |
get_valuation_rank | PERยทPBRยทROE ๊ณ ์ ์์ (์์ฅ ์ ์ฒด ๋ฐธ๋ฅ์์ด์ ์คํฌ๋ฆฌ๋) | ka10026 |
get_supply_concentration | ๋งค๋ฌผ๋์ง์ค ์ข ๋ชฉ โ ํน์ ๊ฐ๊ฒฉ๋์ ๊ฑฐ๋๊ฐ ๋ชฐ๋ฆฐ ์ข ๋ชฉ๊ณผ ๊ทธ ๊ตฌ๊ฐ | ka10025 |
get_market_movers | ์ ๊ณ ๊ฐ/์ ์ ๊ฐ/์ํ๊ฐ/ํํ๊ฐ/๊ธ๋ฑ/๊ธ๋ฝ/๊ฑฐ๋๋๊ธ์ฆ/๊ฑฐ๋๋๊ฐฑ์ (์ง์ N์ผ ์ต๋ ๋ํ) ํน์ด ์ข ๋ชฉ | ka10016/17/19/23/24 |
get_vi_stocks | ๋น์ผ VI(๋ณ๋์ฑ์ํ์ฅ์น) ๋ฐ๋ ์ข ๋ชฉ (๋ฐ๋๊ฐยท๊ดด๋ฆฌ์จยท์๊ฐ) | ka10054 |
get_expected_execution | ๋์ํธ๊ฐ ์์์ฒด๊ฒฐ ์์ (๊ฐ์ฅ ์ 08:30 | ka10029 |
get_investor_trend | ๊ฐ์ธ/์ธ๊ตญ์ธ/๊ธฐ๊ด ์๋งค์ ๋ํฅ (๊ธฐ๊ฐ ํฉ๊ณ + ์ผ๋ณ) | ka10059, ka10061 |
get_institution_trend | ๊ธฐ๊ดยท์ธ๊ตญ์ธ ์ถ์ ํ๊ท ๋จ๊ฐ + ์ผ๋ณยท๊ธฐ๊ฐ๋์ ์๋งค์ | ka10045 |
get_investor_rank | ์ธ๊ตญ์ธยท๊ธฐ๊ด ์๋งค๋งค ์์ ์ข ๋ชฉ / N์ผ ์ฐ์ ์๋งค์ ํํฉ | ka90009, ka10131 |
get_net_buy_rank | ํฌ์์ 12์ฃผ์ฒด(๊ฐ์ธยท์ธ๊ตญ์ธยท๊ธฐ๊ด๊ณยท๊ธ์ตํฌ์ยท๋ณดํยทํฌ์ ยท์ํยท์ฐ๊ธฐ๊ธ๋ฑยท์ฌ๋ชจํ๋ยท๊ธฐํ๊ธ์ตยท๊ตญ๊ฐยท๊ธฐํ๋ฒ์ธ)๋ณ ์๋งค์ ์์ ์ข ๋ชฉ โ ์ง์ ์๋ฃ ๊ฑฐ๋์ผ ๊ธฐ์ค | ka10066 |
get_foreign_intraday | ์ฅ์ค ์ฃผ์ฒด๋ณ ์๋งค์/์๋งค๋ ์์ ์ข ๋ชฉ โ ์ธ๊ตญ์ธยท๊ธฐ๊ด๊ณยท๋ณดํยทํฌ์ ยท์ฐ๊ธฐ๊ธ๋ฑยท๊ธฐํ๋ฒ์ธ (์ค์๊ฐ ์ ์ ์น) | ka10063, ka10065 |
get_broker_activity | ์ข
๋ชฉ๋ณ ๊ฑฐ๋์(์ฆ๊ถ์ฌ) ๋งค์/๋งค๋ ์์ 5 + ์ธ๊ตญ๊ณ ์ฐฝ๊ตฌ ํ์, ์ ๊ฑฐ๋์ 50๊ฐ์ฌ ๋์ ์์(view=broker_rank), ๋น์ผ ์์์์ ์ดํํ ์ฐฝ๊ตฌ(view=dropout), ๋๋ ์์ฅ ์ ์ฒด ์ธ๊ตญ๊ณ ์ฐฝ๊ตฌ ์๋งค๋งค ์์ | ka10002, ka10102, ka10037, ka10038, ka10053 |
get_etf_info | ETF ์ถ์ ์ง์ยท๊ณผ์ธ์ ํยท์์ธยทNAV/๊ดด๋ฆฌ์จ | ka40002, ka10001, ka40009 |
get_etf_returns | ETF ๊ธฐ๊ฐ๋ณ ์์ต๋ฅ vs ๋์์ง์ + ์ผ๋ณ NAVยท๊ดด๋ฆฌ์จยท์ถ์ ์ค์ฐจ ์ถ์ด, ์ผ์๋ณ ์ธ๊ตญ์ธยท๊ธฐ๊ด ์๋งค์ | ka40001, ka40003, ka40008 |
get_etf_rank | ์์ฅ ETF ์ ์ข ๋ชฉ ์คํฌ๋ฆฌ๋ โ ๊ดด๋ฆฌ์จ(๊ณ ํ๊ฐ/์ ํ๊ฐ)ยท๋ฑ๋ฝ๋ฅ ยท๊ฑฐ๋๋ยท์ถ์ ์ค์ฐจ ์ ๋ ฌ + ๊ณผ์ธ์ ํยท์ด์ฉ์ฌยท์ถ์ ์ง์ ํํฐ | ka40004 |
get_short_selling | ์ข ๋ชฉ๋ณ ์ผ์๋ณ ๊ณต๋งค๋ ์ถ์ด (๊ณต๋งค๋๋ยท๋น์คยทํ๊ท ๊ฐ) | ka10014 |
get_stock_lending | ๋์ฐจ๊ฑฐ๋ ์ถ์ด (์ฒด๊ฒฐยท์ํยท์ฆ๊ฐยท์๊ณ ) โ ์ข ๋ชฉ๋ณ/์์ฅ ์ ์ฒด + ๋์ฐจ์๊ณ ์์ ์ข ๋ชฉ ์์ | ka10068, ka20068, ka90012 |
get_credit_trend | ์ ์ฉ์ต์ยท๋์ฃผ ์๊ณ ์ถ์ด (์ ๊ทยท์ํยท์๊ณ ยท๊ณต์ฌ์จยท์๊ณ ์จ) | ka10013 |
get_foreign_holding | ์ธ๊ตญ์ธ ๋ณด์ (ํ๋) ๋ํฅ โ ์ข ๋ชฉ๋ณ ์ถ์ด, ๋๋ ์์ฅ ์ ์ฒด ์์(ํ๋์์ง์จ ์ฆ๊ฐ / ๊ธฐ๊ฐ ๋์ ์๋งค๋งค / 3์ผ ์ฐ์ ์๋งค๋งค) | ka10008, ka10036, ka10034, ka10035 |
get_program_trading | ํ๋ก๊ทธ๋จ ๋งค๋งค ์์(๋น์ผยท๋ ์ง ์ง์ ) + ์ถ์ด (์ผ์๋ณ/์๊ฐ๋๋ณ/์ข ๋ชฉ๋ณ, ์ฝ์คํผ/์ฝ์ค๋ฅ) + ์ข ๋ชฉ ์๊ฐ๋๋ณยท์ฐจ์ต๊ฑฐ๋ ์๊ณ | ka90003, ka90004, ka90010, ka90005, ka90013, ka90008, ka90006 |
get_after_hours | ์๊ฐ์ธ ๋จ์ผ๊ฐ (16:00~18:00) โ ์ข ๋ชฉ๋ณ 5๋จ ํธ๊ฐยท์์ธ ๋๋ ๋ฑ๋ฝ๋ฅ ์์ | ka10087, ka10098 |
get_execution_strength | ์ฒด๊ฒฐ๊ฐ๋ ์ถ์ด (๋งค์รท๋งค๋ ์ฒด๊ฒฐ๋ร100, 100์ด ๊ท ํ) โ ์ผ๋ณ 60๊ฑฐ๋์ผ / ์๊ฐ๋ณ 60๋ถ | ka10046, ka10047 |
get_gold_price | KRX ๊ธํ๋ฌผ ์์ธ (๊ธ 1Kg / ๋ฏธ๋๊ธ 100g) โ ์ผ๋ณ์ถ์ด + ๊ธฐ๊ดยท๊ฐ์ธ ์๋งค์, ๋๋ ๋น์ผ ํฑ ์ฒด๊ฒฐ | ka50012, ka50010 |
๊ด์ฌ์ข ๋ชฉ (์์ ๋ฌธ HTS์ ์ ์ฅํ ๊ด์ฌ ๊ทธ๋ฃน, ์ฝ๊ธฐ ์ ์ฉ):
| Tool | ์ค๋ช | ํค์ TR |
|---|---|---|
get_watchlist_groups | HTS ๊ด์ฌ์ข ๋ชฉ ๊ทธ๋ฃน ๋ชฉ๋ก (๊ทธ๋ฃน์ฝ๋+๊ทธ๋ฃน๋ช ) | ka01300 |
get_watchlist | ๊ทธ๋ฃน ๋ด ์ข ๋ชฉ ๋ชฉ๋ก (์ข ๋ชฉ๋ช ยท์ ์ผ์ข ๊ฐยท์์ฅยทํฌ์์ ์ ๋ณด๊ฐ) | ka01301, ka10099 |
ํค์ REST API์๋ ๊ด์ฌ์ข ๋ชฉ ํธ์ง(์ถ๊ฐ/์ญ์ ) TR์ด ์์ด ์กฐํ๋ง ๊ฐ๋ฅํฉ๋๋ค.
ํ ๋ง:
| Tool | ์ค๋ช | ํค์ TR |
|---|---|---|
get_theme_groups | ํ ๋ง ๊ทธ๋ฃน ๋ชฉ๋ก (๋ฑ๋ฝ๋ฅ ยท์ข ๋ชฉ์ยท๊ธฐ๊ฐ์์ต๋ฅ ยท์ฃผ์์ข ๋ชฉ; ์ข ๋ชฉ๋ณ ํธ์ ํ ๋ง ๊ฒ์) | ka90001 |
get_theme_stocks | ํน์ ํ ๋ง์ ๊ตฌ์ฑ์ข ๋ชฉ๊ณผ ์์ธ (ํ์ฌ๊ฐยท๋ฑ๋ฝ๋ฅ ยท๊ฑฐ๋๋ยท๊ธฐ๊ฐ์์ต๋ฅ ) | ka90002 |
๊ณ์ข (์ฑํค์ ๊ท์๋ ๊ณ์ข ๊ธฐ์ค):
| Tool | ์ค๋ช | ํค์ TR |
|---|---|---|
get_account_balance | ์์๊ธ + ์ดํ๊ฐ๊ธ์ก/์ดํ๊ฐ์์ต/์ถ์ ์ํ์์ฐ + ๋น์ผ/๋น์/๋์ ์์ต | kt00001, kt00018, kt00004 |
get_account_holdings | ๋ณด์ ์ข ๋ชฉ๋ณ ์๋/ํ๊ท ๋จ๊ฐ/ํ์ฌ๊ฐ/ํ๊ฐ์์ต | kt00018 |
get_account_today | ๊ณ์ข ๋น์ผ ํํฉ โ ๋งค๋งค๋๊ธยท์์๋ฃยท์ธ๊ธยท์ ์ถ๊ธ + D+2 ์ถ์ (์ค์ ์ ์ฉ) | kt00017 |
get_account_trend | ์ผ๋ณ ์ถ์ ์ํ์์ฐ ์ถ์ด + ๊ธฐ๊ฐ ์์ต๋ฅ /ํ๊ฐ์์ต/์ ์ถ๊ธ ์์ฝ (๊ธฐ๋ณธ 30์ผ, ๋ชจ์ํฌ์ ๋ฏธ์ง์) | kt00002, kt00016 |
get_transactions | ๊ธฐ๊ฐ๋ณ ๊ฑฐ๋๋ด์ญ (์ฒด๊ฒฐ์ผยท๋จ๊ฐยท์ ์ฐ๊ธ์ก, ๋ชจ์ํฌ์ ๋ฏธ์ง์) | kt00015 |
get_pending_orders | ๋ฏธ์ฒด๊ฒฐ ์ฃผ๋ฌธ (์ฃผ๋ฌธ๋ฒํธยท๊ตฌ๋ถยท์ํยท์ฃผ๋ฌธ/๋ฏธ์ฒด๊ฒฐ์๋ยท์ฃผ๋ฌธ๊ฐ๊ฒฉ) | ka10075 |
get_order_executions | ์ฒด๊ฒฐ ๋ด์ญ (์ฃผ๋ฌธ๋ฒํธยท๊ตฌ๋ถยท์ํยท์ฃผ๋ฌธ/์ฒด๊ฒฐ ์๋ยท๊ฐ๊ฒฉยท์์๋ฃ+์ธ๊ธ, side/์ข ๋ชฉ/์ฃผ๋ฌธ๋ฒํธ ํํฐ) | ka10076 |
get_trading_journal | ๋น์ผ๋งค๋งค์ผ์ง (์ข ๋ชฉ๋ณ ๋งค์/๋งค๋ ํ๊ท ๊ฐยท์๋ยท์คํ์์ต, ์ด์์ต) | ka10170 |
calc_isa_tax_status | ISA ์์ตํต์ฐ ์์ด์ต์ ๋น๊ณผ์ธ ํ๋ ๋๋น ํํฉ (ํ์ + ์ ๋๋งค๋ ์๋๋ฆฌ์ค, kt00015 ์์กด์ด๋ผ ๋ชจ์ํฌ์ ๋ฏธ์ง์) | kt00015, ka10074, kt00018 |
๊ทธ ์ธ ping(์ฐ๊ฒฐ ํ์ธ, ์ฑํค ๋ถํ์). ๋ชจ๋ ์๋ต์ [๋ชจ์ํฌ์]/[์ค์ ํฌ์] ์ ๋์ด๋ก
์ด๋ ์๋ฒ๊ฐ ๋ตํ๋์ง ํ์ํฉ๋๋ค. search_stock ์ฒซ ํธ์ถ์ ์ข
๋ชฉ ๋ง์คํฐ(~4,300์ข
๋ชฉ)๋ฅผ
๋ด๋ ค๋ฐ์ ๋ช ์ด ๊ฑธ๋ฆฌ๋ฉฐ ์ดํ 12์๊ฐ ์บ์๋ฉ๋๋ค.
v0.31.0๋ถํฐ ์์ธยท๋ญํน tool์ ํตํฉ(SOR) ๊ธฐ์ค์ผ๋ก ์กฐํํฉ๋๋ค. KRX์ ๋ฅ์คํธ๋ ์ด๋(NXT) ์ฒด๊ฒฐ์ ํฉ์ฐํ ๊ฐ์ด๋ฉฐ, NXT ๊ฑฐ๋๊ฐ๋ฅ ์ข ๋ชฉ(์ฝ 606๊ฐ, ๋ํ์ฃผ ๋ค์)์ KRX๋ง ๋ณผ ๋๋ณด๋ค ๊ฑฐ๋๋์ด ํฌ๊ฒ ๋์ด๋ฉ๋๋ค โ ์ผ์ฑ์ ์ ์ค์ธก(2026-08-03 ์ ๊ท์ฅ) KRX 19.2M / NXT 15.5M / ํตํฉ 34.7M. KRX๋ง ํ์ํ๋ HTSยทํฌํธ ํ๋ฉด๊ณผ ์ซ์๊ฐ ๋ค๋ฅด๋ฉด ๋๊ฐ ์ด ์ฐจ์ด์ ๋๋ค.
์์ธ๋ get_after_hours(์๊ฐ์ธ ๋จ์ผ๊ฐ) ํ๋์
๋๋ค โ ํตํฉ ์กฐํ๊ฐ ๋ถ๊ฐ๋ฅํ๋ฉฐ NXT ๊ฑฐ๋๊ฐ๋ฅ
์ข
๋ชฉ์ ์ ์ด์ ์ด TR์์ ์กฐํ๋์ง ์์ต๋๋ค. ๊ฑฐ๋์(get_broker_activity)์ v0.47.0์์ ํตํฉ์ผ๋ก
๋์ด์์ต๋๋ค โ ๊ทธ์ ๊น์ง KRX ๊ฐ์ ๋ด๋ณด๋ด ์์ 5์ ์์๊ฐ ์ค์ ์ ๋ฌ๋์ต๋๋ค(์ผ์ฑ์ ์ ๋งค์ 1์๊ฐ
KRX ๊ธฐ์ค KB์ฆ๊ถ / ํตํฉ ๊ธฐ์ค ๋ฏธ๋์์
). ํธ๊ฐ๋ v0.37.0์์ ํตํฉ์ผ๋ก ๋์ด์์ต๋๋ค โ
ka10004 ๋์ ka10007(์์ธํ์ฑ์ ๋ณด)์ ์ฐ๋ฉฐ, ์ผ์ฑ์ ์ ์ค์ธก(2026-08-04 ์ ๊ท์ฅ) ๋งค์1 ์๋์ด
KRX 18,421 / NXT 17,081 / ํตํฉ 36,319์ด์์ต๋๋ค.
calc_isa_tax_status ์ฌ์ฉ ๋ฉ๋ชจ.env์ ISA_OPENED_ON(๊ณ์ข ๊ฐ์ค์ผ)์ด ๊ธฐ๋ณธ๊ฐ, ํธ์ถ ์ from_date๋ก ์ค๋ฒ๋ผ์ด๋ ๊ฐ๋ฅ.dividends_received ์ธ์๋ก ์๋ ์
๋ ฅ.etftxon_type(ka40002)์ผ๋ก ํ์ ํ๊ณ (์กฐํ ์คํจ ์ ์ข
๋ชฉ๋ช
ํด๋ฆฌ์คํฑ์ผ๋ก ํด๋ฐฑ), ๊ฐ๋ณ์ฃผ์ ๋ฑ
๊ทธ ๋ฐ์๋ ์ข
๋ชฉ๋ช
๊ธฐ๋ฐ์ผ๋ก ์ถ์ ํฉ๋๋ค. ํ๋ฆฐ ๊ฒฝ์ฐ overrides: [{stock_code, tax_type}]๋ก
์์ . ๊ฒฐ๊ณผ๋ ์ฐธ๊ณ ์ฉ โ ์ค์ ๊ณผ์ธ๋ ์ฆ๊ถ์ฌ ์ ์ฐ ๊ธฐ์ค.process.loadEnvFile ์ฌ์ฉ)KIWOOM_MODE๊ฐ ์ผ์นํด์ผ ํฉ๋๋ค.npm์ ๋ฐฐํฌ๋์ด ์์ผ๋ฏ๋ก ํด๋ก ์์ด npx๋ก ๋ฐ๋ก ์คํํ ์ ์์ต๋๋ค โ ์๋
"Claude Desktop ์ฐ๊ฒฐ" / "Claude Code ์ฐ๊ฒฐ"์ npx ์ค์ ์ ๊ทธ๋๋ก ์ฐ๋ฉด ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ
์ฑํค๋ .env ํ์ผ ๋์ ํด๋ผ์ด์ธํธ ์ค์ ์ env ๋ธ๋ก์ผ๋ก ์ ๋ฌํฉ๋๋ค(์์ ๋ ๊ฐ
์ฐ๊ฒฐ ์น์
์ฐธ๊ณ ).
์์ค์์ ์ง์ ๋น๋ํ๊ฑฐ๋ ์ฝ๋๋ฅผ ์์ ํ๋ ค๋ฉด:
.env)| ๋ณ์ | ํ์ | ์ค๋ช |
|---|---|---|
KIWOOM_APP_KEY | โ | ํค์ REST API ์ฑํค |
KIWOOM_APP_SECRET | โ | ํค์ REST API ์ฑ ์ํฌ๋ฆฟ |
KIWOOM_MODE | VIRTUAL(๋ชจ์ํฌ์, ๊ธฐ๋ณธ๊ฐ) ๋๋ REAL(์ค์ ํฌ์) | |
ISA_ENABLED | true๋ฉด calc_isa_tax_status tool ํ์ฑํ. ๊ธฐ๋ณธ๊ฐ false(์ผ๋ฐ ๊ณ์ข ๊ธฐ์ค) | |
ISA_TYPE | GENERAL(์ผ๋ฐํ, ํ๋ 200๋ง์, ๊ธฐ๋ณธ๊ฐ) ๋๋ SEOMIN(์๋ฏผํ/๋์ด๋ฏผํ, 400๋ง์). ISA_ENABLED=true์ผ ๋๋ง ์ฌ์ฉ | |
ISA_OPENED_ON | ISA ๊ณ์ข ๊ฐ์ค์ผ yyyy-MM-dd โ calc_isa_tax_status ์ง๊ณ ์์์ผ ๊ธฐ๋ณธ๊ฐ. ISA_ENABLED=true์ผ ๋๋ง ์ฌ์ฉ | |
MCP_TRANSPORT | stdio(๊ธฐ๋ณธ๊ฐ) ๋๋ http โ ์๊ฒฉ ์ฐ๊ฒฐ ์ฐธ์กฐ | |
MCP_AUTH_TOKEN | HTTP ๋ชจ๋ โ | HTTP ๋ชจ๋์์ ๋ชจ๋ /mcp ์์ฒญ์ด ์ ์ํด์ผ ํ๋ Bearer ํ ํฐ |
MCP_HTTP_PORT | HTTP ๋ชจ๋ ํฌํธ (๊ธฐ๋ณธ๊ฐ 8000) | |
MCP_HTTP_HOST | HTTP ๋ชจ๋ ๋ฐ์ธ๋ ์ฃผ์ (๊ธฐ๋ณธ๊ฐ 127.0.0.1) | |
MCP_HTTP_NO_AUTH | true๋ฉด ์ธ์ฆ ์์ด HTTP ๋ชจ๋ ๊ธฐ๋ ํ์ฉ (๋น๊ถ์ฅ โ ์๋ ๋ณด์ ์ฃผ์ ์ฐธ์กฐ) | |
MCP_PUBLIC_URL | HTTP ๋ชจ๋์์ ์ธ๋ถ์ ๊ด๊ณ ํ ๊ธฐ์ค URL (์: https://kiwoom.example.com). ๋ฏธ์ค์ ์ ์์ฒญ์ Host + X-Forwarded-Proto๋ก ์ถ๋ก โ ๋ฆฌ๋ฒ์ค ํ๋ก์๊ฐ ๊ทธ ํค๋๋ฅผ ๋ถ์ด์ง ์์ผ๋ฉด ๋ช
์ํด์ผ ํฉ๋๋ค |
๊ธฐ๋ณธ๊ฐ์ ์ผ๋ฐ(๋น-ISA) ๊ณ์ข ๊ธฐ์ค์
๋๋ค โ ๋ณ๋ ์ค์ ์ด ์์ผ๋ฉด ์์ฅยท๊ณ์ข ์กฐํ tool๋ง
๋
ธ์ถ๋ฉ๋๋ค. ISA ๊ณ์ข๋ฅผ ์ฐ๊ฒฐํด ๋น๊ณผ์ธ ํ๋ tool์ ์ฐ๋ ค๋ฉด ISA_ENABLED=true๋ก ์ผ๊ณ
ISA_TYPE/ISA_OPENED_ON์ ์ฑ์ฐ์ธ์. ๋๋ฉด calc_isa_tax_status๊ฐ ๋ฑ๋ก๋์ง ์๊ณ
๋๋จธ์ง tool์ ๋ชจ๋ ๊ทธ๋๋ก ๋์ํฉ๋๋ค.
.env๋ ํ๋ก์ ํธ ๋ฃจํธ์์ ๋จผ์ ์ฐพ๊ธฐ ๋๋ฌธ์ (Claude Desktop์ฒ๋ผ) ์์์ ์์
๋๋ ํฐ๋ฆฌ์์ ์คํ๋ผ๋ ๋์ํฉ๋๋ค.
์ค์ ํ์ผ ์์น:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonnpx (๋ฐฐํฌํ) โ ํด๋ก ์์ด ์คํ. ์ฑํค๋ env ๋ธ๋ก์ผ๋ก ์ ๋ฌ:
์์ค ๋น๋ โ dist/index.js ์ง์ ์คํ. ์ฑํค๋ ํ๋ก์ ํธ ๋ฃจํธ .env ์ฌ์ฉ:
command์๋ ์คํ ํ์ผ์ ์ ๋ ๊ฒฝ๋ก๋ฅผ ์ฐ๋ ํธ์ด ๊ฐ์ฅ ์์ ํฉ๋๋ค (which node,which npx๋ก ํ์ธ). GUI ์ฑ์ ์ ธ PATH๋ฅผ ์์๋ฐ์ง ์์ผ๋ฏ๋ก"node"/"npx"๋ผ๊ณ ๋ง ์ฐ๋ฉด ์๋ฒ๊ฐ ์กฐ์ฉํ ๋จ์ง ์์ ์ ์์ต๋๋ค โ ๊ฐ์ฅ ํํ ์คํจ ์์ธ์ ๋๋ค.
์ ์ฅ ํ Claude Desktop์ ์์ ํ ์ข
๋ฃ(macOS๋ โQ)ํ๋ค๊ฐ ๋ค์ ์คํํ๋ฉด tool์ด
๋ณด์
๋๋ค. npm run build๋ก ๋ค์ ๋น๋ํ ๋ค์๋ ์์ ์ข
๋ฃ ํ ์ฌ์คํํด์ผ
๋ณ๊ฒฝ์ด ๋ฐ์๋ฉ๋๋ค.
npx (๋ฐฐํฌํ) โ ์ฑํค๋ -e ํ๋๊ทธ๋ก ์ ๋ฌ:
์์ค ๋น๋ โ ํ๋ก์ ํธ ๋ฃจํธ .env ์ฌ์ฉ:
claude.ai(์น/๋ชจ๋ฐ์ผ)์ ์ปค์คํ
์ปค๋ฅํฐ๋ ๋ก์ปฌ stdio ์๋ฒ์ ์ง์ ๋ถ์ ์ ์๊ณ , ๊ณต๊ฐ
HTTPS๋ก ์ ๊ทผ ๊ฐ๋ฅํ Streamable HTTP MCP ์๋ฒ๊ฐ ํ์ํฉ๋๋ค. --http ํ๋๊ทธ(๋๋
MCP_TRANSPORT=http)๋ก ์ด ์๋ฒ๋ฅผ HTTP ๋ชจ๋๋ก ๋์ธ ์ ์์ต๋๋ค:
MCP_AUTH_TOKEN์ด ์์ผ๋ฉด ๊ธฐ๋์ ๊ฑฐ๋ถํฉ๋๋ค โ ๋ชจ๋ /mcp
์์ฒญ์ Authorization: Bearer <ํ ํฐ> ํค๋๊ฐ ์์ด์ผ ํฉ๋๋ค. ์ธ์ฆ ์์ด ์ด๋ ค๋ฉด
--no-auth๋ฅผ ๋ช
์ํด์ผ ํ๋ฉฐ, ๊ณ์ข ์กฐํ ๋๊ตฌ๊ฐ ๊ทธ๋๋ก ๋
ธ์ถ๋๋ฏ๋ก ์ ๋ขฐํ ์ ์๋
๋คํธ์ํฌ๋ ๋ชจ์ํฌ์(KIWOOM_MODE=VIRTUAL)์์๋ง ์ฌ์ฉํ์ธ์.127.0.0.1์
๋๋ค โ ํฐ๋์ ์์ ๋๋ ๊ตฌ์ฑ์ ์ ์ ํฉ๋๋ค. ์ปจํ
์ด๋/์๋ฒ์
์ง์ ๋
ธ์ถํ๋ ค๋ฉด --host 0.0.0.0์ ๋ช
์ํ์ธ์.cloudflared tunnel --url http://localhost:8000 (์์ URL โ ์์ ์ด์์ named tunnel ๊ถ์ฅ).Host์ X-Forwarded-Proto์์ ์ถ๋ก ํฉ๋๋ค.
Cloudflare Tunnel์ฒ๋ผ ๊ทธ ํค๋๋ฅผ ๋ถ์ฌ ์ฃผ๋ ํ๋ก์๋ผ๋ฉด ๊ทธ๋๋ก ๋๋ฉด ๋์ง๋ง, ์ง์ ์ธ์ด
nginx/Caddy๊ฐ X-Forwarded-Proto๋ฅผ ๋๊ธฐ์ง ์์ผ๋ฉด issuer๊ฐ http://๋ก ๊ด๊ณ ๋์ด
claude.ai๊ฐ ์ฐ๊ฒฐ์ ๊ฑฐ๋ถํฉ๋๋ค. ๊ทธ๋ด ๋ MCP_PUBLIC_URL=https://<๋๋ฉ์ธ>์ผ๋ก ๊ณ ์ ํ์ธ์.https://<๋๋ฉ์ธ>/mcp๋ฅผ ์
๋ ฅํฉ๋๋ค (๊ณ ๊ธ ์ค์ ์ OAuth ํ๋๋ ๋น์๋ก๋๋ค). ์ฐ๊ฒฐ ์
๋ธ๋ผ์ฐ์ ์ ์น์ธ ํ์ด์ง๊ฐ ๋จ๊ณ , MCP_AUTH_TOKEN ๊ฐ์ ์ ์ ์ํธ๋ก ์
๋ ฅํ๋ฉด
์๋ฃ๋ฉ๋๋ค โ ์๋ฒ๊ฐ MCP ์ธ์ฆ ์คํ(OAuth 2.0 + PKCE, ๋์ ํด๋ผ์ด์ธํธ ๋ฑ๋ก)์ ๋ด์ฅํ๊ณ
์์ด ๋ณ๋ ํค๋ ์ค์ ์ด ํ์ ์์ต๋๋ค. ๋ฑ๋กํ ์ปค๋ฅํฐ๋ ์น/๋ชจ๋ฐ์ผ/๋ฐ์คํฌํฑ์์ ๊ณต์ฉ์
๋๋ค.
ํค๋๋ฅผ ์ง์ ํ ์ ์๋ ํด๋ผ์ด์ธํธ(์: Claude Code --header)๋ ๊ธฐ์กด์ฒ๋ผ
Authorization: Bearer <MCP_AUTH_TOKEN> ์ ์ ํค๋๋ก๋ ์ ์ํ ์ ์์ต๋๋ค.
OAuth ํ ํฐ์ ์์
๋๋ ํฐ๋ฆฌ์ .oauth-state.json(0600)์ ์ ์ฅ๋์ด ์๋ฒ๋ฅผ ์ฌ์์ํด๋
์ฐ๊ฒฐ์ด ์ ์ง๋ฉ๋๋ค.๊ธฐ์กด stdio ๋์(Claude Desktop/Code ์ฐ๊ฒฐ)์ ์ธ์ ์์ด ์คํํ๋ฉด ๊ทธ๋๋ก์
๋๋ค โ ๋จ, .env๋
ํ๊ฒฝ๋ณ์์ MCP_TRANSPORT=http๊ฐ ์์ผ๋ฉด ์์ธ์
๋๋ค. .env๋ ์ ์ก ๋ฐฉ์์ ๊ณ ๋ฅด๊ธฐ ์ ์ ์ฝํ๋ฏ๋ก
์ธ์ ์์ด ์คํํด๋ HTTP ๊ฒฝ๋ก๋ฅผ ํ๊ณ , MCP_AUTH_TOKEN์ด ์์ผ๋ฉด ์์ ๊ธฐ๋์ ๊ฑฐ๋ถํฉ๋๋ค.
MCP_TRANSPORT ๊ฐ๊ณผ ๋ฌด๊ดํ๊ฒ stdio๋ก ๊ฐ์ ํ๋ ค๋ฉด **--stdio**๋ฅผ ๋๊ธฐ์ธ์.
MCP ํด๋ผ์ด์ธํธ ์์ด stdio๋ก ์ง์ ํ์ธํ ์ ์์ต๋๋ค:
ping์ .env ์์ด๋ ์๋ตํฉ๋๋ค. ์์ธยท๊ณ์ข tool์ ์ฑํค๊ฐ ์์ด์ผ ํฉ๋๋ค.
| ์ฆ์ | ํ์ธํ ๊ฒ |
|---|---|
| Desktop์ tool์ด ์ ๋ณด์ | command๊ฐ node ์ ๋ ๊ฒฝ๋ก์ธ์ง, npm run build๋ฅผ ํ๋์ง, Desktop์ ์์ ์ข
๋ฃ ํ ์ฌ์คํํ๋์ง |
ํ๊ฒฝ์ค์ ์ด ์๊ฑฐ๋ ์๋ชป๋์์ต๋๋ค | .env๊ฐ ํ๋ก์ ํธ ๋ฃจํธ์ ์๋์ง, ํ์ ๋ณ์๊ฐ ์ฑ์์ก๋์ง |
ํค์ ์ธ์ฆ์ ์คํจํ์ต๋๋ค | ์ฑํค ์ข
๋ฅ(๋ชจ์/์ค์ )์ KIWOOM_MODE๊ฐ ์ผ์นํ๋์ง, ํฌํธ์์ ์ฑ์ด ํ์ฑ ์ํ์ธ์ง |
์์ฒญ ํ๋๋ฅผ ์ด๊ณผํ์ต๋๋ค | ํค์ ๋ ์ดํธ๋ฆฌ๋ฐ(TR๋น ์ฝ 1์ด 1ํ). ์๋ฒ๊ฐ ์๋ ์ฌ์๋ํ ๋ค์๋ ์ด๊ณผํ ๊ฒฝ์ฐ์ด๋ ์ ์ ํ ๋ค์ ์๋ |
| ์์๊ธ๊ณผ D+2 ์ถ์ ์์๊ธ์ด ๋ค๋ฆ | ๋ฏธ๊ฒฐ์ (D+2 ์ ์ฐ) ๋งค๋งค๊ฐ ์์ผ๋ฉด ์ ์์ ๋๋ค |
๋ค ๊ฐ์ง ๋ชจ๋ CI(.github/workflows/ci.yml, Node 20ยท22)์์ ๋๊ณ , ๊ฑฐ๊ธฐ์
npm audit --omit=dev --audit-level=high๊ฐ ํ ๋จ๊ณ ๋ ๋ถ์ต๋๋ค. ํ์
์ฒดํฌ๊ฐ
tsconfig.test.json์ ์ฐ๋ ์ด์ ๋ ๋น๋์ฉ tsconfig.json์ rootDir๊ฐ src๋ผ
ํ
์คํธ๋ฅผ ๊ฑฐ๊ธฐ ๋ฃ์ผ๋ฉด dist/ ๋ ์ด์์์ด ๋ฐ๋๊ธฐ ๋๋ฌธ์
๋๋ค โ ๋น๋๋ ๊ทธ๋๋ก
tsconfig.json์ ์๋๋ค.
๊ตฌ์กฐ: src/kiwoom/(์ธ์ฆยทHTTPยทTR ๊ณ์ธต) โ src/tools/(MCP tool, ํฌ๋งทํฐ ๋ถ๋ฆฌ) โ
src/isa/(๊ณผ์ธ์ ํ ๋ถ๋ฅยท์คํ์์ต ์ฌ๊ตฌ์ฑยท์์ตํต์ฐ). ์์ธ ๊ท์น๊ณผ ๊ฒ์ฆ๋ API
๊ณ์ฝ์ CLAUDE.md ์ฐธ๊ณ .
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/kiwoom-securities-mcp-server)<a href="https://allmcps.com/mcp/kiwoom-securities-mcp-server"><img src="https://allmcps.com/api/badge/kiwoom-securities-mcp-server?style=directory" alt="Kiwoom Securities MCP Server on AllMCPs" /></a>