krxdart-mcp
In one line: This server is a pure proxy that lets you call Korean financial APIs (Open DART disclosure data and KRX market data) and fetch DART disclosure documents as text.
search_corp_code— Look up a company by name, 6-digit stock code, or 8-digit DART corp code (in-memory cached, up to 50 results).call_dart_api— Call any of ~70 Open DART JSON endpoints raw: corporate profiles, disclosure lists, financial statements (single/multi/all accounts, 2015+), dividend, major/minor shareholders, executives, employees, high-pay disclosures, equity filings (5% holdings, insider ownership), and 24 major-event reports (rights issues, CB, buybacks, mergers, etc.).call_krx_api— Call any of KRX's 31 OpenAPI services raw: KOSPI/KOSDAQ/KONEX daily quotes and issue info, warrants, ETF/ETN/ELW, indices (KOSPI, KOSDAQ, bond, derivatives), bonds (treasury, general, small), derivatives (futures, options), commodities (gold, oil, emissions), and ESG data.download_dart_document— Download a disclosure ZIP by 14-digit receipt number, extract its text body, optionally cap characters, and get a direct official viewer link (returns a TOC for periodic reports).Behavior: Pass-through of native parameters and responses with no transformation; API keys (
DART_API_KEY,KRX_API_KEY) are injected automatically via env config.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@krxdart-mcp삼성전자 최근 주가랑 공시 목록 알려줘"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
krxdart-mcp (Unofficial)
금융감독원 전자공시시스템(Open DART) 및 한국거래소(KRX) 공식 오픈API를 연동하는 비공식 MCP(Model Context Protocol) 서버입니다.
불필요한 가공 없이 Open DART와 KRX 순정 API의 파라미터 규격과 응답 JSON 구조를 1:1 원본 그대로 전달하는 순수 프록시(Pure Proxy) 역할을 수행합니다.
안내: 본 프로젝트는 개인이 오픈API를 활용하기 위해 만든 비공식 도구이며, 공시 및 시세 데이터의 권리는 각 기관(금융감독원, 한국거래소)에 있습니다.
제공 도구 (Tools)
도구 (Tool) | 설명 | 파라미터 |
| DART 고유번호 파일( |
|
| Open DART 공식 JSON 엔드포인트 70여 개 원본 호출 (재무제표, 기업개황, 공시목록, 배당, 지분 등) |
|
| 한국거래소(KRX) 공식 31개 OpenAPI 서비스 원본 호출 (일별시세, 종목기본정보, 지수, ETF, 채권 등) |
|
| DART 접수번호(14자리)의 공시 서류(ZIP)를 다운로드하여 텍스트 본문 추출 및 다이렉트 웹 링크 반환 (단일 공시는 본문 즉시 반환, 정기보고서는 목차 TOC 반환 후 핀포인트 조회 지원) |
|
Related MCP server: OpenDart-MCP
지원 API 엔드포인트 안내
1. DART 주요 엔드포인트 (call_dart_api)
DART에서 제공하는 모든 .json 엔드포인트를 호출할 수 있습니다.
기업개황 / 공시목록:
company.json,list.json재무제표 (2015년 이후):
fnlttSinglAcnt.json: 단일회사 주요 재무계정 (매출, 영업이익 등)fnlttMultiAcnt.json: 최대 10개사 다중회사 주요계정 일괄 비교fnlttSinglAcntAll.json: 전체 재무제표 모든 계정과목
정기보고서 세부정보:
alotMatter.json(배당),hyslrSttus.json(최대주주),mrhlSttus.json(소액주주)exctvSttus.json(임원),empSttus.json(직원),indvdlByPay.json(5억 이상 보수)
지분공시:
majorstock.json(대량보유 5%),elestock.json(임원/주요주주 소유)주요사항보고서:
ic.json(유상증자),cvbd.json(전환사채),act.json(자사주취득),mrg.json(합병) 등 24종
2. KRX 31개 공식 서비스 (call_krx_api)
주식 (sto):
stk_bydd_trd(코스피 일별시세),ksq_bydd_trd(코스닥),knx_bydd_trd(코넥스),stk_isu_base_info(코스피 종목정보),ksq_isu_base_info,knx_isu_base_info,sw_bydd_trd,sr_bydd_trd증권상품 (etp):
etf_bydd_trd(ETF 일별시세),etn_bydd_trd,elw_bydd_trd지수 (idx):
kospi_dd_trd(코스피지수),kosdaq_dd_trd(코스닥지수),krx_dd_trd,bon_dd_trd,drvprod_dd_trd채권 (bon):
kts_bydd_trd(국채),bnd_bydd_trd(일반채권),smb_bydd_trd(소액채권)파생상품 (drv):
fut_bydd_trd(선물),opt_bydd_trd(옵션),eqsfu_stk_bydd_trd(주식선물유가),eqkfu_ksq_bydd_trd,eqsop_bydd_trd,eqkop_bydd_trd일반상품 (gen):
gold_bydd_trd(금),oil_bydd_trd(석유),ets_bydd_trd(배출권)ESG (esg):
sri_bond_info,esg_index_info,esg_etp_info
MCP 설정
{
"mcpServers": {
"krxdart-mcp": {
"command": "npx",
"args": ["-y", "github:minking/krxdart-mcp"],
"env": {
"DART_API_KEY": "금융감독원_OpenDART_API_KEY",
"KRX_API_KEY": "한국거래소_오픈API_AUTH_KEY"
}
}
}
}라이선스
MIT License
Available Tools
4 toolscall_dart_apiA
금융감독원 Open DART의 모든 공식 엔드포인트를 호출하여 원본 JSON을 가공 없이 그대로 반환합니다. (DART_API_KEY 자동 주입)
| Name | Required | Description | Default |
|---|---|---|---|
| params | No | DART 요청 파라미터 객체 (예: corp_code, bsns_year: "2023", reprt_code: "11011"[사업보고서], "11012"[반기], "11013"[1분기], "11014"[3분기] 등) | |
| endpoint | Yes | DART 공식 JSON 엔드포인트 카탈로그: - 공시검색/개황: list.json(공시검색), company.json(기업개황) - 재무제표: fnlttSinglAcnt.json(단일회사 주요계정), fnlttMultiAcnt.json(다중회사 최대 10개사 주요계정 일괄비교), fnlttSinglAcntAll.json(단일회사 전체 재무제표) - 정기보고서 주요정보: alotMatter.json(배당), hyslrSttus.json(최대주주), hyslrChgSttus.json(최대주주변동), mrhlSttus.json(소액주주), exctvSttus.json(임원), empSttus.json(직원), indvdlByPay.json(5억이상보수), hmvAuditIndvdlBySttus.json(이사감사보수), otrCprInvstmntSttus.json(타법인출자), crpTotlIdex.json(증자감자), tesstkAcqDspsSttus.json(자기주식) - 지분공시: majorstock.json(대량보유 5% 보고), elestock.json(임원/주요주주 소유상황) - 주요사항보고서: ic.json(유상증자), fcr.json(무상증자), cr.json(유무상증자), rd.json(감자), act.json(자기주식취득), dst.json(자기주식처분), cvbd.json(전환사채), bw.json(신주인수권부사채), eb.json(교환사채), mrg.json(합병), div.json(분할), atras.json(자산양수도), obpr.json(주식양수), ospr.json(주식양도) 등 24종 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses automatic DART_API_KEY injection and that the response is the original, unprocessed JSON. However, it omits operational traits such as rate limits, possible DART error payloads, or explicit read-only semantics.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one concise, front-loaded sentence plus a short parenthetical about API key injection. Every word earns its place, and there is no redundancy with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description plus the detailed endpoint catalog in the schema gives an agent enough to select an endpoint, pass params, and understand the raw JSON return shape and automatic auth. It stops short of a 5 because it omits operational caveats such as rate limits and error behavior, and gives no alternative-tool routing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with rich parameter documentation in the input schema itself, including the endpoint catalog and reprt_code mappings. The tool description adds no parameter-level detail beyond that, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource: it calls Open DART official endpoints and returns raw JSON without processing. It clearly distinguishes itself from the KRX/document/corp-code siblings by naming the DART API scope and the unprocessed-output contract.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than explicit: the description indicates this tool is for hitting Open DART endpoints and getting raw JSON, but it does not state when to prefer it over siblings like download_dart_document or search_corp_code. There is no when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
call_krx_apiA
한국거래소(KRX) 공식 오픈API(openapi.krx.co.kr)를 호출하여 원본 JSON을 가공 없이 그대로 반환합니다. (KRX_API_KEY 자동 주입)
| Name | Required | Description | Default |
|---|---|---|---|
| api_id | Yes | KRX 공식 31개 서비스 API ID 카탈로그: - 주식(8): stk_bydd_trd(코스피 일별매매), ksq_bydd_trd(코스닥 일별매매), knx_bydd_trd(코넥스), stk_isu_base_info(코스피 종목정보), ksq_isu_base_info(코스닥 종목정보), knx_isu_base_info, sw_bydd_trd(신주인수권증권), sr_bydd_trd(신주인수권증서) - ETP(3): etf_bydd_trd(ETF 일별매매), etn_bydd_trd(ETN), elw_bydd_trd(ELW) - 지수(5): krx_dd_trd(KRX시리즈), kospi_dd_trd(KOSPI지수), kosdaq_dd_trd(KOSDAQ지수), bon_dd_trd(채권지수), drvprod_dd_trd(파생상품지수) - 채권(3): kts_bydd_trd(국채전문), bnd_bydd_trd(일반채권), smb_bydd_trd(소액채권) - 파생상품(6): fut_bydd_trd(선물), opt_bydd_trd(옵션), eqsfu_stk_bydd_trd(주식선물유가), eqkfu_ksq_bydd_trd(주식선물코스닥), eqsop_bydd_trd(주식옵션유가), eqkop_bydd_trd(주식옵션코스닥) - 일반상품(3): gold_bydd_trd(금), oil_bydd_trd(석유), ets_bydd_trd(배출권) - ESG(3): sri_bond_info(사회책임투자채권), esg_index_info(ESG지수), esg_etp_info(ESG증권상품) | |
| params | No | 요청 파라미터 객체 (예: basDt: "20240315", isin: "KR7005930003", isuCd: "005930" 등) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool returns raw JSON without processing and that the API key is auto-injected. However, it doesn't disclose potential failure modes (e.g., what happens if the API returns an error, rate limits, or whether the tool validates parameters). The description adds some behavioral context but not comprehensive transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: the main purpose is stated in the first sentence, and the API key injection note is a useful addition. The api_id catalog is long but necessary for a tool with 31 possible values. The structure is clear, though the catalog could arguably be moved to the schema (it already is partially there). Overall, every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (31 API IDs, nested params object, no output schema), the description is fairly complete. It explains the raw return behavior and key injection. However, it doesn't mention error handling, response format details, or how to discover valid param values for each API ID. Since there's no output schema, a bit more about the return shape could help, but the 'raw JSON' statement covers the basics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds value by explaining the api_id catalog in detail (31 service IDs with Korean labels) and giving examples for params. This goes beyond the schema's basic descriptions, helping an agent understand what values to pass. The description doesn't repeat the schema verbatim but enriches it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('호출하여'), a specific resource (KRX 공식 오픈API), and a clear behavior (원본 JSON을 가공 없이 그대로 반환). It also mentions automatic API key injection, which distinguishes it from sibling tools like call_dart_api. The description is unambiguous and tells an agent exactly what this tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you need raw KRX open API data without transformation. It doesn't explicitly state when not to use it or name alternatives, but the sibling list (call_dart_api, download_dart_document, search_corp_code) makes the context clear. The description could be stronger by explicitly saying 'use this for KRX data, not DART data', but the resource is clearly identified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
download_dart_documentA
DART 공시 접수번호(14자리)의 공시서류(ZIP)를 다운로드하여 텍스트 본문과 웹 링크를 반환합니다. (반환된 direct_url은 원문 열람 공식 링크입니다)
| Name | Required | Description | Default |
|---|---|---|---|
| rcept_no | Yes | ||
| max_chars | No | 반환할 파일당 최대 글자 수 (기본값: 0, 제한 없이 원문 전체 반환). 특정 글자 수로 제한할 경우에만 양수로 지정. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It explains the download-and-return behavior and notes the direct_url is the official original-document link, which is useful. However, it does not disclose potential failure modes, size limits, or whether the ZIP is processed server-side, leaving some behavioral ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the core action and key output details. It is efficient, though it could be slightly more structured by separating the return-value explanation from the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, so the description must cover return values and behavior. It mentions returning text and a web link, which is helpful, but it does not describe the format of the text, error handling, or what happens when max_chars is set. For a download tool with two parameters, this is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 50%: rcept_no is described only by its pattern, while max_chars has a full description. The tool description adds meaning by explaining rcept_no is a 14-digit DART receipt number and that the output includes text and a web link, which helps the agent understand the parameters' role. It does not fully compensate for the undocumented rcept_no semantics, but the pattern and context provide adequate guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool downloads a DART disclosure document (ZIP) using a 14-digit receipt number and returns text content and a web link. It also clarifies that the returned direct_url is the official link for viewing the original document, which distinguishes its purpose from sibling API tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for downloading DART disclosure documents, but it does not explicitly state when to use this tool versus siblings like call_dart_api or search_corp_code. It provides no exclusions or alternative routing guidance, so the agent must infer the appropriate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_corp_codeA
회사명, 6자리 종목코드, 또는 8자리 고유번호로 기업을 검색합니다. (사명 변경 영향을 피하려면 6자리 종목코드[예: 005930] 검색 권장)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 반환할 최대 결과 수 | |
| query | Yes | 회사명(예: 삼성전자), 6자리 종목코드(005930), 또는 8자리 고유번호 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the search-key types and the rationale for preferring the 6-digit code, which is useful behavioral context. However, it does not disclose return format, pagination behavior, or whether the search is exact-match or fuzzy, which would matter for an agent deciding how to use the result.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence with a parenthetical tip. It is front-loaded with the core purpose and the example is embedded efficiently. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with 2 parameters and full schema coverage, the description is mostly adequate. However, with no output schema and no annotations, the agent is left without information about the result shape or how to handle multiple matches, which is a meaningful gap for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters. The description adds a concrete example and the recommendation to use the 6-digit code, which is helpful but does not add substantial meaning beyond the schema's parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('검색합니다') and resource (기업), and enumerates the three accepted search keys: 회사명, 6자리 종목코드, 8자리 고유번호. It also includes a concrete example (005930) and a recommendation to prefer the 6-digit code to avoid name-change issues, which clearly distinguishes this tool from the sibling API tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on what to search by and even recommends the 6-digit code to avoid name-change effects. It does not explicitly state when to use this tool instead of call_krx_api, call_dart_api, or download_dart_document, but the search-oriented purpose is clear enough that an agent can infer it is the lookup step before those API/document tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v1.0.0- First observed
call_dart_api - First observed
call_krx_api - First observed
download_dart_document - First observed
search_corp_code
TDQS
Scored across 4 tools
Each tool has a clear primary purpose: one calls KRX APIs, one calls DART APIs, one downloads DART documents, and one searches corporate codes. There is minor potential overlap between call_dart_api and download_dart_document, but the descriptions distinguish raw API access from document retrieval.
All tool names follow a consistent lower_snake_case verb_noun pattern: call_*, download_*, search_*. The naming style is uniform and predictable despite covering different actions.
Four tools is well-scoped for a KRX/DART API wrapper. Each tool earns its place: raw API access for both providers, document downloading, and corporate code lookup.
The generic call_krx_api and call_dart_api tools expose all official endpoints, making the API surface effectively complete. The specialized document download and corporate search tools fill the most common convenience needs.
Maintenance
Related MCP Connectors
Powerful OpenDART API-based Korean corporate disclosure tools for accounting professionals
Search company disclosures and financial statements from the Korean market. Retrieve stock profile…
FinBridge is a hosted MCP server for Korean company disclosures, read in English. DART filings and normalized financial statements, business segments, insider reports and 13F holdings, with US, Japanese and European filers on the same schema for comparison. Search a company by its registered English name or its Korean name. Every answer names the filing, the receipt number and the date. Korean price delivery is planned and not currently served. Docs: https://www.gronox.kr/docs
Korean company disclosures in English: DART filings, financial statements, segments, 13F.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to query Korean listed companies' financial statements, public disclosures, executive information, and shareholder structures in real-time using the DART API.2-
- AlicenseNot gradedqualityDmaintenanceProvides access to South Korea's DART (Data Analysis, Retrieval and Transfer System) financial disclosure system, enabling users to retrieve corporate information, financial statements, debt summaries, subsidiary investments, employee data, and stock information for Korean companies.6MIT
- FlicenseAqualityBmaintenanceEnables searching corporate disclosures from Korea's DART system, including company info, financial statements, and disclosure search.16-
- AlicenseNot gradedqualityCmaintenanceEnables AI-powered analysis of Korean stock market data and corporate disclosures using official DART and KRX APIs.180 npmISC