korea-stock-mcp
This server provides tools for AI-powered Korean stock and corporate analysis using DART and KRX APIs.
get_corp_code: Retrieve DART-registered corporate code, company name, and stock code by company name (partial match) or stock code, including unlisted companies.
get_disclosure_list: Search disclosure reports by company, date range, disclosure type, and market classification (KOSPI/KOSDAQ/KONEX).
get_disclosure: Fetch and parse original disclosure report content; for large documents (>1MB), returns a table of contents allowing section-specific content retrieval.
get_financial_statement: Access XBRL financial statements (balance sheet, income statement, etc.) for listed and major unlisted companies from periodic reports.
get_market_type: Determine market classification (KOSPI/KOSDAQ/KONEX/기타) for a given corporate code.
get_stock_base_info: Obtain basic stock info (names, listing date, par value, shares outstanding) for stocks on KOSPI/KOSDAQ/KONEX.
get_stock_trade_info: Retrieve daily trading data (close price, change rate, open/high/low, volume, market cap, etc.) for specified stocks and dates.
get_today_date: Get today's date in YYYYMMDD format (KST and UTC).
Provides access to DART (전자공시시스템) Korea's electronic disclosure system for searching corporate disclosures, retrieving company codes, accessing disclosure report content, and obtaining XBRL-based financial statements for listed and major unlisted Korean companies
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., "@korea-stock-mcpshow me Samsung Electronics' stock price for the last month"
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.
Korea Stock MCP Server
🚀 Korea Stock MCP가 오픈소스 MCP에서 한 단계 더 나아갑니다. 정확한 한국 주식 데이터를 바탕으로, AI가 더 믿을 수 있는 답변을 제공하도록 돕는 새로운 서비스를 준비하고 있습니다. 새로운 서비스의 방향을 확인해보세요.
한국 주식 분석을 위한 MCP 서버입니다.
DART(전자공시시스템)와 KRX(한국거래소) 공식 API를 통해 주가 정보와 공시 자료 기반의 AI분석이 가능합니다.
💬 개선 요청 & 피드백 환영합니다! 사용하면서 불편한 점이나 개선 아이디어가 있으시면 편하게 이메일 주세요. 빠르게 확인하고 반영하겠습니다. 📧 wowlxx28@gmail.com
🎯 주요 기능
🔍 공시검색 - 회사별, 기간별 공시 검색
📊 공시 데이터 - 공시보고서 원본파일 파싱한 데이터 제공
💼 재무제표 분석 - XBRL 기반 상세 재무 데이터
📈 주식 데이터 - KRX(코스피/코스닥) 일별 주가정보, 종목 기본정보
Related MCP server: kiwoom-mcp
⚡ 빠른 시작
1️⃣ API KEY 발급
먼저 DART와 KRX의 API KEY를 발급받아야 합니다.
📝 DART API KEY 발급
회원가입: OPEN DART 회원가입
키 신청: 인증키 신청 페이지에서 API KEY 신청
키 확인: 오픈API 이용현황에서 발급된 API KEY 확인
📈 KRX API KEY 발급
회원가입: KRX OPEN API에서 회원가입 및 로그인
키 신청: 마이페이지 → API 인증키 신청에서 신청
서비스 신청: 승인 후 서비스이용 → 주식 메뉴로 이동
API 이용신청: 다음 6개 항목에서 각각 "API 이용신청" 클릭
유가증권 일별매매정보
코스닥 일별매매정보
코넥스 일별매매정보
유가증권 종목기본정보
코스닥 종목기본정보
코넥스 종목기본정보
⏱️ 승인까지 약 1일 소요됩니다.
키 확인: 승인 후 마이페이지 → API 인증키 발급내역에서 API KEY 확인
2️⃣ Claude Desktop 설정
Claude Desktop 실행
설정 → 개발자 → 구성편집 클릭
claude_desktop_config.json파일에 다음 내용 추가:
{
"mcpServers": {
"korea-stock-mcp": {
"command": "npx",
"args": ["-y", "korea-stock-mcp@latest"],
"env": {
"DART_API_KEY": "<YOUR_DART_API_KEY>",
"KRX_API_KEY": "<YOUR_KRX_API_KEY>"
}
}
}
}재시작: Claude Desktop을 재시작하여 설정 적용
이제 Claude에서 한국 주식 데이터 분석을 시작할 수 있습니다.
대용량 공시 문서 처리
일부 공시보고서(사업보고서, 분기보고서 등)는 수 MB에 달하는 대용량 XML 문서입니다. 이런 문서를 한 번에 모두 처리하면 AI 응답 한도를 초과하거나 오류가 발생할 수 있습니다.
어떻게 동작하나요?
문서 크기에 따라 자동으로 처리 방식이 달라집니다.
소용량 문서 (1MB 미만): 문서 전체를 바로 반환합니다.
대용량 문서 (1MB 이상): 문서 전체 대신 **목차(TOC)**를 먼저 반환합니다. Claude가 목차를 보고 질문과 관련된 섹션을 자동으로 선택해 내용을 가져옵니다.
유저 안내
별도로 조작할 필요가 없습니다. Claude가 대용량 문서를 자동으로 처리합니다.
문서가 크면 Claude가 자동으로 다음과 같이 동작합니다:
문서 목차를 확인합니다.
질문과 관련된 섹션을 자동으로 선택해 내용을 조회합니다.
답변 후 나머지 섹션 목록을 안내하므로, 추가로 궁금한 섹션이 있으면 요청할 수 있습니다.
예시:
"사업보고서에서 매출 현황 알려줘" → Claude가 매출 관련 섹션을 자동 선택
"방금 목차에서 3번 섹션도 조회해줘" → 특정 섹션 직접 요청 가능
💡 복잡한 질문은 단계별로 나눠서 질문하세요
한 번에 원하는 답을 얻지 못할 때는, 질문을 여러 단계로 나누면 더 정확한 결과를 얻을 수 있습니다.
예를 들어, "인벤테라의 증권신고서에서 외국인 배정 내역 알려줘"가 한 번에 안 된다면:
"인벤테라의 고유번호(corp_code) 알려줘"
"그 회사의 증권발행 관련 공시 목록 보여줘"
"해당 공시 본문을 가져와줘"
"외국인 배정 내역을 찾아줘"
이렇게 단계별로 진행하면 각 단계의 결과를 확인하면서 원하는 정보에 도달할 수 있습니다.
사용 가능한 도구
DART (전자공시시스템)
get_disclosure_list - 공시검색
공시 유형별, 회사별, 날짜별 공시보고서 검색
get_corp_code - 고유번호 조회
DART 등록 공시대상회사의 고유번호, 회사명, 종목코드 제공
회사명(
corp_name) 또는 종목코드(stock_code) 중 하나로 조회 가능회사명 검색 실패 시 종목코드로 재시도 안내
get_disclosure - 공시보고서 원문
DART API를 통한 공시보고서 원본파일 파싱
대용량 문서의 경우 목차를 반환하며,
section_id로 특정 섹션 조회 가능
get_financial_statement - 재무제표
상장법인 및 주요 비상장법인 XBRL 재무제표
정기보고서 내 모든 계정과목 데이터 제공
KRX (한국거래소)
get_stock_base_info - 종목 기본정보
코스피, 코스닥, 코넥스 상장 종목 기본 정보
종목명, 종목코드, 시장구분 등 기본 데이터
get_stock_trade_info - 일별 매매정보
코스피, 코스닥, 코넥스 종목별 일별 거래 데이터
주가, 거래량, 시가총액 등 상세 거래 정보
get_market_type - 시장구분 조회
종목코드로 해당 종목의 시장구분(코스피/코스닥/코넥스) 조회
주식 데이터 조회 시 필요한 시장 정보 제공
기타 도구
get_today_date - 오늘 날짜 조회
현재 날짜를 YYYYMMDD 형식으로 제공
AI의 정확한 날짜 조회를 위한 도구
실제 사용 예시
📊 재무 분석 예제
프롬프트: "삼양식품의 2023년, 2024년 1~4분기, 2025년 1,2분기 매출, 영업이익 조사해주고 성장률도 조사해줘"
→ 삼양식품 분석 결과 보기
프롬프트: "에이피알의 23년 1분기부터 25년 2분기까지의 매출, 영업이익 성장과 주가, 시가총액 흐름을 조사해줘"
→ 에이피알 분석 결과 보기
🏢 기업 분석 예제
프롬프트: "HJ중공업은 뭘 해서 돈을 버는 회사인지랑 사업부문별 매출까지 같이 알려줘"
→ HJ중공업 분석 결과 보기
📑 공시 분석 예제
프롬프트: "Get the foreign allocation details for an IPO (e.g., Inventera / 0007J0)" → 인벤테라 IPO 외국인 배정 분석 결과 보기
API 데이터 소스
DART (전자공시시스템): 상장기업 공시 정보 및 재무제표
KRX (한국거래소): 종목 기본정보 및 일별 매매정보
로컬 개발 및 테스트
소스를 수정하면서 바로 테스트하는 방법입니다.
1️⃣ 의존성 설치
npm install2️⃣ 환경변수 설정
프로젝트 루트에 .env 파일을 생성합니다:
DART_API_KEY=your_dart_api_key
KRX_API_KEY=your_krx_api_key3️⃣ MCP Inspector 실행
npm run inspect터미널에 출력되는 주소(http://localhost:6274 등)를 브라우저에서 열면 MCP Inspector UI가 열립니다.
Inspector에서 Connect 버튼을 클릭한 후, 좌측 툴 목록에서 원하는 툴을 선택해 직접 호출할 수 있습니다.
4️⃣ 소스 수정 후 재테스트
src/ 파일을 수정하고 저장하면 서버가 자동으로 재시작됩니다.
Inspector에서 Reconnect 버튼을 클릭하면 변경사항이 즉시 반영됩니다.
참고: Node.js 18 이상이 필요합니다.
기여하기
기여를 환영합니다! Pull Request를 보내주세요.
이 저장소를 포크하세요
기능 브랜치를 만드세요 (
git checkout -b feature/AmazingFeature)변경사항을 커밋하세요 (
git commit -m 'Add some AmazingFeature')브랜치에 푸시하세요 (
git push origin feature/AmazingFeature)Pull Request를 열어주세요
라이선스
ISC 라이선스
지원
🐛 이슈가 있다면 GitHub Issues에 등록해주세요
⭐ 유용하다면 스타를 눌러주세요!
면책 조항
본 도구는 정보 제공 목적이며, 투자 조언이 아닙니다. 모든 투자 결정은 본인 책임입니다.
English Version
🚀 Korea Stock MCP is taking the next step beyond an open-source MCP. Built on reliable Korean stock data, we’re preparing a new service that helps AI deliver answers you can trust. See what we’re building.
MCP Server for Korean stock analysis.
Enables AI-powered analysis of stock prices and disclosure data through official APIs from DART (Data Analysis, Retrieval and Transfer System) and KRX (Korea Exchange).
💬 Feedback & Feature Requests Welcome! If you have any ideas for improvement or issues while using this tool, feel free to email me. I'll review and address them as quickly as possible. 📧 wowlxx28@gmail.com
🎯 Key Features
🔍 Disclosure Search - Search corporate disclosures by company and date
📊 Disclosure Data - Provides parsed data from original disclosure reports
💼 Financial Statement Analysis - Detailed financial data based on XBRL
📈 Stock Data - KRX (KOSPI/KOSDAQ) daily stock prices and basic stock information
⚡ Quick Start
1️⃣ API KEY Registration
You need to obtain API KEYs from both DART and KRX.
📝 DART API KEY Registration
Sign Up: Register at OPEN DART
Request Key: Apply for API KEY at Authentication Key Application Page
Check Key: Verify issued API KEY at Open API Usage Status
📈 KRX API KEY Registration
Sign Up: Register and login at KRX OPEN API
Request Key: Apply for API authentication key in My Page → API Authentication Key Application
Service Application: After approval, go to Service Use → Stock menu
API Usage Application: Click "API Usage Application" for each of the following 6 items
Securities Daily Trading Information
KOSDAQ Daily Trading Information
KONEX Daily Trading Information
Securities Basic Information
KOSDAQ Basic Information
KONEX Basic Information
⏱️ Approval takes approximately 1 day.
Key Verification: After approval, check API KEY in My Page → API Authentication Key Issuance History
2️⃣ Claude Desktop Setup
Launch Claude Desktop
Go to Settings → Developer → Edit Configuration
Add the following content to
claude_desktop_config.json:
{
"mcpServers": {
"korea-stock-mcp": {
"command": "npx",
"args": ["-y", "korea-stock-mcp@latest"],
"env": {
"DART_API_KEY": "<YOUR_DART_API_KEY>",
"KRX_API_KEY": "<YOUR_KRX_API_KEY>"
}
}
}
}Restart: Restart Claude Desktop to apply settings
You can now start analyzing Korean stock data with Claude.
Large Disclosure Document Handling
Some disclosure reports (annual reports, quarterly reports, etc.) are large XML documents of several MB. Processing such documents all at once can exceed AI response limits or cause errors.
How does it work?
The processing method changes automatically depending on document size.
Small documents (under 1MB): Returns the entire document immediately.
Large documents (1MB or more): Returns a Table of Contents (TOC) instead of the full document. Claude reads the TOC and automatically selects and fetches the sections relevant to your question.
User Guide
No manual action required. Claude handles large documents automatically.
When a document is large, Claude automatically:
Checks the document's table of contents.
Selects and fetches the sections relevant to your question.
After answering, lists the remaining sections — so you can request any other section you're curious about.
Examples:
"Show me the revenue overview from the annual report" → Claude auto-selects the revenue-related section
"Also fetch section 3 from the TOC you just showed" → You can request a specific section directly
💡 Break Complex Questions into Steps
If you can't get the answer you want in one shot, try breaking your question into smaller steps for more accurate results.
For example, instead of "Show me the foreign investor allocation details from Inventera's securities registration statement", try:
"Get the corp_code for Inventera"
"Search for securities issuance disclosures for that company"
"Fetch the document content for that disclosure"
"Find the foreign investor allocation table"
This way, you can verify each step's output and guide Claude toward the exact information you need.
Available Tools
DART (Data Analysis, Retrieval and Transfer System)
get_disclosure_list - Disclosure Search
Search disclosure reports by type, company, and date
get_corp_code - Corporate Code Inquiry
Provides unique codes, company names, and stock codes of DART-registered disclosure companies
Search by company name (
corp_name) or stock code (stock_code)If name search fails (e.g. non-Korean input), suggests retrying with stock code
get_disclosure - Disclosure Report Content
Parse original disclosure report files through DART API
For large documents, returns a TOC; use
section_idto fetch a specific section
get_financial_statement - Financial Statements
XBRL financial statements for listed and major unlisted companies
Provides all account data from periodic reports
KRX (Korea Exchange)
get_stock_base_info - Basic Stock Information
Basic information for KOSPI, KOSDAQ, and KONEX listed stocks
Basic data including stock names, codes, and market classifications
get_stock_trade_info - Daily Trading Information
Daily trading data for KOSPI, KOSDAQ, and KONEX stocks
Detailed trading information including stock prices, trading volume, and market capitalization
get_market_type - Market Type Inquiry
Query market classification (KOSPI/KOSDAQ/KONEX) by stock code
Provides market information needed for stock data queries
Other Tools
get_today_date - Today's Date Inquiry
Provides current date in YYYYMMDD format
Tool for AI's accurate date inquiry
Real Usage Examples
📊 Financial Analysis Examples
Prompt: "Investigate Samyang Foods's sales and operating profit for Q1-Q4 2023, Q1-Q4 2024, and Q1-Q2 2025, and also check growth rates"
→ See Samyang Foods Analysis Results
Prompt: "Investigate APR's sales and operating profit growth from Q1 2023 to Q2 2025, along with stock price and market cap trends" → See APR Analysis Results
🏢 Corporate Analysis Examples
Prompt: "Tell me what HJ SHIPBUILDING & CONSTRUCTION does to make money and include sales by business segment" → See HJ Shipbuilding & Construction Analysis Results
📑 Disclosure Analysis Examples
Prompt: "Get the foreign allocation details for an IPO (e.g., Inventera / 0007J0)" → See Inventera IPO Foreign Allocation Analysis Results
API Data Sources
DART (Data Analysis, Retrieval and Transfer System): Listed company disclosure information and financial statements
KRX (Korea Exchange): Basic stock information and daily trading information
Local Development & Testing
How to test while modifying the source code.
1️⃣ Install dependencies
npm install2️⃣ Set up environment variables
Create a .env file in the project root:
DART_API_KEY=your_dart_api_key
KRX_API_KEY=your_krx_api_key3️⃣ Run MCP Inspector
npm run inspectOpen the URL printed in the terminal (e.g. http://localhost:6274) in your browser to open the MCP Inspector UI.
Click Connect in the Inspector, then select any tool from the left panel to call it directly.
4️⃣ Re-test after modifying source
When you save a file under src/, the server restarts automatically.
Click Reconnect in the Inspector to pick up the changes immediately.
Note: Node.js 18 or higher is required.
Contributing
Contributions are welcome! Please send us a Pull Request.
Fork this repository
Create a feature branch (
git checkout -b feature/AmazingFeature)Commit your changes (
git commit -m 'Add some AmazingFeature')Push to the branch (
git push origin feature/AmazingFeature)Open a Pull Request
License
ISC License
Support
🐛 If you have issues, please register them in GitHub Issues
⭐ If you find it useful, please give it a star!
Disclaimer
This tool is for informational purposes only and is not investment advice. All investment decisions are your own responsibility.
Available Tools
8 toolsget_corp_codeAInspect
고유번호: DART에 등록되어있는 공시대상회사의 고유번호, 회사명, 종목코드를 제공합니다. 비상장법인도 조회 가능합니다. 회사명(corp_name, 한글 또는 영문) 또는 종목코드(stock_code) 중 하나로 조회할 수 있습니다. 회사명은 부분 일치 검색을 지원하므로 정확한 이름을 몰라도 조회할 수 있습니다. IMPORTANT: 한글 회사명을 정확히 모르는 경우(예: 영문명만 아는 경우), 반드시 웹 검색으로 정확한 한글 정식 명칭을 먼저 확인한 뒤 corp_name에 입력하세요.
| Name | Required | Description | Default |
|---|---|---|---|
| corp_name | No | 회사 명칭 (한글 또는 영문). 부분 일치 검색을 지원합니다. stock_code와 둘 중 하나만 입력 | |
| stock_code | No | 상장회사의 종목코드(6자리). 회사명을 모르거나 검색에 실패한 경우 종목코드로 조회할 수 있습니다. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses partial matching, support for unlisted companies, and the need for exact Korean name via web search. It does not mention rate limits or read-only nature, but the behavior is well-covered.
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 brief (4 sentences) and front-loaded with the main purpose. Every sentence adds value, including the important usage note. No redundant or irrelevant information.
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 no output schema, the description appropriately states what the tool returns (unique number, company name, stock code). It covers key query methods and constraints. Could optionally mention output format but not necessary.
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 coverage is 100%, but the description adds extra meaning: partial matching is explicitly highlighted, stock_code is tied to listed companies, and an important note clarifies input requirements. This exceeds the baseline of 3.
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 provides unique number, company name, and stock code for DART-registered companies, including unlisted ones. It distinguishes from siblings like get_disclosure or get_stock_base_info by focusing on corporate identification data.
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 input guidance: use corp_name (partial match) or stock_code, and advises web searching for exact Korean name when unsure. It implicitly contrasts with other tools via sibling context, but lacks explicit when-not-to-use or alternative tool comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_disclosureAInspect
DART API를 통해 공시보고서 원본파일을 파싱해 가져옵니다. 문서가 큰 경우(1MB 초과) 목차(type: "toc")를 반환합니다. 목차가 반환되면 유저의 질문과 관련된 섹션을 section_id로 조회하세요. 답변 후, 조회하지 않은 나머지 섹션 목록을 유저에게 안내하여 추가 조회 여부를 선택할 수 있게 하세요. 해당 섹션도 1MB를 초과하면 하위 목차를 반환합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| rcept_no | Yes | 접수번호 | |
| section_id | No | 조회할 섹션 ID. 생략하면 전체 문서를 반환하고, 문서가 크면 목차(type: toc)를 반환합니다. 목차의 섹션 ID를 지정하면 해당 섹션만 반환합니다. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses behavior: returns TOC for large docs, section_id retrieves subsections, and sub-TOC for very large sections. Lacks details on error handling or auth, but sufficient for the agent.
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?
Three sentences, well-structured with clear progression: purpose, behavior on large docs, then action steps. Front-loaded with main verb. Could be slightly tighter but very informative.
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 no output schema or annotations, description sufficiently covers key behaviors: large doc handling, section navigation, and user guidance. Lacks details on TOC format but enough for an agent to use correctly.
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 coverage is 100%, so baseline is 3. Description adds significant meaning for section_id: explains its behavior (full doc vs TOC vs section retrieval). This goes beyond the schema description.
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 'parses and fetches original disclosure report files' via DART API, with specific verb and resource. It distinguishes itself from siblings like get_disclosure_list (list) and get_financial_statement (financial data).
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?
Explicitly describes when to use section_id for large documents (>1MB) and provides a complete workflow: get TOC, query sections, then inform user of remaining sections. This guides the agent on proper usage vs alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_disclosure_listBInspect
공시검색: 공시 유형별, 회사별, 날짜별 등 여러가지 조건으로 공시보고서 검색기능을 제공합니다. 최근 공시를 검색할때는 bgn_de를 반드시 지정하세요.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | 정렬 (date: 접수일자, crp: 회사명, rpt: 보고서명) ※ 기본값 : date | |
| bgn_de | No | 검색시작 접수일자(YYYYMMDD) 1) 기본값 : 종료일(end_de) | |
| end_de | No | 검색종료 접수일자(YYYYMMDD) 1) 기본값 : 당일 | |
| page_no | No | 페이지 번호(1~n) 기본값 : 1 | |
| corp_cls | No | 법인구분 (Y: 유가증권시장, K: 코스닥, N: 코넥스, E: 기타) ※ 없으면 전체조회, 복수조건 불가 | |
| sort_mth | No | 정렬방법 (asc: 오름차순, desc: 내림차순) ※ 기본값 : desc | |
| corp_code | No | 공시대상회사의 고유번호(8자리) | |
| pblntf_ty | No | 공시유형 // A : 정기공시, B : 주요사항보고, C : 발행공시, D : 지분공시, E : 기타공시, F : 외부감사관련, G : 펀드공시, H : 자산유동화, I : 거래소공시, J : 공정위공시 | |
| page_count | No | 페이지당 건수(1~100) 기본값 : 10, 최대값 : 100 | |
| last_reprt_at | No | 최종보고서 검색여부 (Y 또는 N) 1) 기본값 : N(정정이 있는 경우 최종정정만 검색) | |
| pblntf_detail_ty | No | 공시상세유형 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must disclose behaviors. It only states the function without mentioning rate limits, authentication, or side effects. The description is minimal.
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?
Two sentences, front-loaded with purpose, no redundant information. 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?
With 11 parameters, no output schema, and no annotations, the description should provide more context about return format, pagination, or error handling. It only covers basic purpose and one use case.
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 coverage is 100%, baseline 3. The description adds semantic value by stating that bgn_de is mandatory for recent searches, which goes beyond the schema's optional default.
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 searches for disclosure reports by various conditions. It is distinct from siblings like get_financial_statement or get_stock_base_info, but does not differentiate from the similarly named get_disclosure tool.
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?
Provides one specific guideline: 'When searching recent disclosures, you must specify bgn_de.' This is helpful but does not cover when not to use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_financial_statementBInspect
재무제표: 상장법인(유가증권, 코스닥) 및 주요 비상장법인(사업보고서 제출대상 & IFRS 적용)이 제출한 정기보고서 내에 XBRL재무제표의 모든계정과목을 제공합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| sj_nm | No | 재무상태표, 포괄손익계산서, 자본변동표, 현금흐름표 중 하나. 없으면 전체조회 | |
| fs_div | Yes | 개별/연결구분: OFS(재무제표), CFS(연결재무제표) | |
| bsns_year | Yes | 사업연도(4자리) - 2015년 이후부터 정보제공 | |
| corp_code | Yes | 공시대상회사의 고유번호(8자리) | |
| reprt_code | Yes | 보고서 코드: 11013(1분기), 11012(반기), 11014(3분기), 11011(사업보고서) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, rate limits, or whether the data is cached. The description only states what data is provided, lacking transparency on side effects or prerequisites.
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 sentence that is concise and front-loaded with '재무제표:'. It contains all necessary information without redundancy. However, it could be broken into multiple sentences for clarity.
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 complexity of financial data and the absence of an output schema, the description is too brief. It does not explain what the returned data contains (e.g., structure of all account items) or how to interpret the response. More context on output format is needed for an agent to use this tool effectively.
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 all parameters having detailed descriptions including enum values. The tool description adds minimal value beyond the schema; it does not explain parameter interactions or usage patterns. Baseline 3 is appropriate due to high schema coverage.
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 that the tool provides all account items of XBRL financial statements from periodic reports for listed and major non-listed companies. It uses a specific verb ('제공합니다') and resource ('XBRL재무제표의 모든계정과목'), and the scope ('상장법인 및 주요 비상장법인') distinguishes it from sibling tools like get_stock_base_info or get_disclosure.
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?
No explicit guidance on when to use this tool versus alternatives. The description only explains what the tool does but does not provide context about when it is appropriate or when to use other tools like get_disclosure or get_corp_code.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_market_typeAInspect
DART에 등록되어 있는 종목의 상장시장 정보를 제공합니다. Y(유가), K(코스닥), N(코넥스), E(기타)
| Name | Required | Description | Default |
|---|---|---|---|
| corp_code | Yes | 공시대상회사의 고유번호(8자리) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It explains the return values (Y, K, N, E) which is helpful, but does not disclose error behavior, authentication needs, or whether it is read-only. The behavior is minimally transparent.
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 extremely concise with two sentences: one stating the purpose and one listing the possible return values. No unnecessary words, and the key information is front-loaded.
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 simplicity of the tool (one param, simple output), the description is fairly complete. It explains the output values. However, it lacks details on error handling or prerequisites like registration with DART, which could be helpful for agents unfamiliar with the API.
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?
The only parameter (corp_code) has a schema description that fully explains its purpose and format. The tool description does not add additional semantic meaning beyond what the schema already provides, so the baseline score of 3 is appropriate.
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 provides listing market information for stocks registered in DART and specifies the possible return codes (Y, K, N, E). This distinguishes it from sibling tools that deal with disclosures, financial statements, or stock base info.
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 when market type is needed, but provides no explicit guidance on when to use this tool vs alternatives (e.g., get_stock_base_info might also have market info). No conditional usage or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_base_infoAInspect
코스피, 코스닥, 코넥스에 상장되어있는 종목의 기준일에 해당하는 한글 종목명, 영문 종목명, 상장일, 주식종류, 액면가, 상장주식수 등의 정보를 제공합니다. codeList에 종목코드가 포함된 종목들의의 정보만 추출됩니다. basDd 하나당 KRX API를 한번씩 호출합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| market | Yes | 상장된 주식시장 종류 | |
| codeList | Yes | 데이터를 가져올 종목들의 종목코드의 배열 | |
| basDdList | Yes | 기준일자(YYYYMMDD) 배열 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Describes API call per basDd and filtering by codeList, but does not mention idempotency or authentication. However, the behavior is transparent enough for an agent to understand usage.
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?
Three concise sentences with no wasted words. Front-loaded with purpose, then filtering rule, then API behavior. Ideal length.
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?
No output schema, but description enumerates key return fields (한글 종목명, 영문 종목명, 상장일, 주식종류, 액면가, 상장주식수). Explains filtering and API call behavior. Fully sufficient for a data retrieval tool given complexity and sibling context.
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 describes all parameters fully (100% coverage), so description adds marginal value. It reinforces that codeList filters results and explains API call frequency per basDd, which is helpful beyond schema.
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?
Description clearly states it provides base info (name, listing date, etc.) for stocks on given base dates, filtered by market and code list. Unambiguously distinguishes from sibling tools which deal with corporation codes, disclosures, financial statements, etc.
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?
Explicitly notes that only stocks in codeList are extracted and that each basDd triggers an API call, implying rate limit considerations. Does not explicitly state when not to use or compare to siblings, but context is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_stock_trade_infoAInspect
코스피, 코스닥, 코넥스에 상장되어있는 종목의 기준일에 해당하는 종가, 등락률, 시가, 고가, 저가, 거래량, 거대금, 시총액, 상장주식수 등의 정보를 제공합니다. codeList에 종목코드가 포함된 종목들의의 정보만 추출되어 제공됩니다. basDd 하나당 KRX API를 한번씩 호출합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| market | Yes | 상장된 주식시장 종류 | |
| codeList | Yes | 데이터를 가져올 종목들의 종목코드의 배열 | |
| basDdList | Yes | 기준일자(YYYYMMDD) 배열 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose all behavioral traits. It reveals that the tool makes one KRX API call per base date, implying rate limits and potential latency. However, it does not mention whether data is real-time, delayed, or historical, nor does it discuss authentication, error handling, or idempotency. For a read operation, the per-date call is useful, but other behaviors are missing, making the transparency mediocre.
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 three sentences long, with the main purpose stated first, followed by filtering behavior, then the API call pattern. Every sentence adds value without redundancy or unnecessary detail. It is concise and well-structured for quick comprehension.
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 has three required parameters, no output schema, and no annotations, the description explains inputs and a key behavioral note (per-date API call), but it does not describe the output format or return structure. For a data-retrieval tool, missing output information (e.g., structure of the response) is a gap. However, the tool name implies the returned data fields, so it is minimally complete but not robust.
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 baseline is 3. The description adds that only stocks in codeList are extracted and that basDdList drives per-day API calls, which provides context beyond the schema's field definitions. However, the schema already describes the parameters' purposes adequately (market type, array of codes, array of dates), so the added value is modest.
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 provides trade information (closing price, change rate, open, high, low, volume, amount, market cap, listed shares) for stocks listed on KOSPI, KOSDAQ, KONEX. The verb 'provides' and specific data fields make the purpose unambiguous. Although it doesn't explicitly contrast with siblings, the sibling tools have distinct purposes (e.g., get_stock_base_info likely provides basic stock info, not trade data), so the tool differentiates itself in context.
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 implicitly tells the agent to use this tool when needing trade data for specific dates and stock codes, and that a separate API call is made per date. However, it lacks explicit guidance on when not to use it or alternatives; for example, it doesn't mention that get_stock_base_info might be better for non-trade data like listing dates. Without clear when-to-use vs. when-not-to-use, the guidelines are adequate but not strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_today_dateAInspect
오늘 날짜를 KST, UTC 기준 YYYYMMDD 형식으로 제공합니다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses the output format and timezones but does not detail whether the output is a single string or multiple values. Adequate for a simple tool.
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?
Single sentence, no unnecessary words. Perfectly concise and front-loaded.
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 is complete given no parameters and no output schema. It specifies the format and timezones, covering all necessary information.
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?
No parameters exist in the schema (100% coverage). The description adds no param info, which is appropriate. Baseline 4 for zero parameters.
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 provides today's date in KST and UTC in YYYYMMDD format. It is a specific verb+resource and distinguishes from sibling tools focused on financial data.
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?
No explicit guidance on when to use or not. However, the tool is self-explanatory and siblings are unrelated, so usage context is implied but not explicit.
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.
8 tool updates
v1.4.1- First observed
get_corp_code - First observed
get_disclosure - First observed
get_disclosure_list - First observed
get_financial_statement - First observed
get_market_type - First observed
get_stock_base_info - First observed
get_stock_trade_info - First observed
get_today_date
TDQS
Scored across 8 tools
Each tool targets a distinct operation: corporate code lookup, disclosure retrieval, disclosure listing, financial statements, market type, stock base info, stock trade info, and date. No overlap or ambiguity between tools.
All tools follow a consistent 'get_' prefix with snake_case noun phrases (e.g., get_corp_code, get_discovery_list). Uniform naming pattern enhances predictability.
With 8 tools covering corporate info, disclosures, financials, and stock data, the count is well-scoped for a Korean stock market server. Each tool serves a clear purpose without bloat.
Covers essential operations: company identification, disclosure listing/content, financial statements, market type, and daily stock info. Missing historical price or index data but adequate for core domain needs.
Maintenance
Related MCP Connectors
Korean stock research MCP: DART financials, global filings, daily prices and research tools.
MCP server giving AI agents one-connection access to China A-share market intelligence: financials,
7-factor stock scoring MCP server. US/HK/CN, 74 stocks. Free + Premium (USDC/Base). x402 ready.
MCP Server for an Agent Task Marketplace
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that provides KOSPI/KOSDAQ stock data using FastMCP.6205 PyPI71MIT
- FlicenseAqualityDmaintenanceAn MCP server that enables natural language control of Kiwoom Securities accounts through Claude Desktop. It provides tools for stock price lookup, buying and selling stocks, and analyzing portfolios or trade history via the Kiwoom REST API.112-
- AlicenseAqualityCmaintenanceMCP Server for publicly available real-time Indian Mutual Funds data127MIT
- FlicenseAqualityDmaintenanceMCP server that provides Korean stock market data including indices, top gainers, stock quotes, news, fundamentals, and buy recommendations. Enables LLMs to access real-time and historical Korean stock information.6-