aikstockdata
MCP server for Korean stock market data (KOSPI/KOSDAQ) and DART disclosures, providing tools to get today's market summary, search stocks, retrieve quotes, rankings, and data URLs. No authentication required.
README
aikstockdata โ Korean Stock Data for AI (MCP + free JSON)
KOSPI / KOSDAQ closing prices and DART regulatory filings, published every trading day as AIโreadable JSON. No signup. No API key. No rate limit.
๐ Site: https://aikstockdata.com ยท MCP endpoint: https://mcp.aikstockdata.com/mcp
Listed in the official MCP Registry
as com.aikstockdata/mcp (domain-verified).
Why this exists
Korean market data is hard for AI to use. The official sources (๊ธ์ต์์ํ public data portal, ๊ธ์ต๊ฐ๋ ์ DART) require API keys, return raw XML/JSON with untranslated Korean field names, and give you no way to tell whether a number is missing or actually zero.
This project normalizes them into selfโdescribing JSON that an LLM can read directly โ and adds an MCP server so Claude and ChatGPT can query it midโconversation without any setup beyond pasting a URL.
The practical difference: no credentials. Most Korean stock MCP servers proxy the DART or brokerage APIs live, so you have to register for a key before the first call. This one serves preโbuilt public files, so it works the moment you paste the URL.
Quick start โ connect an AI in 30 seconds
Claude / ChatGPT (MCP connector)
Add this URL as a custom connector in settings. No authentication.
https://mcp.aikstockdata.com/mcp
Six tools become available: get_today, search_stock, get_stock, get_rankings,
get_market_summary, get_data_urls.
Then just ask: "์ค๋ ํ๊ตญ ์์ฅ ์ด๋ ์ด?" or "Samsung Electronics latest disclosures?"
Any AI, without MCP โ paste a URL
https://aikstockdata.com/data/public/today.json ์ ์ฝ๊ณ ์ค๋ ํ๊ตญ ์์ฅ์ ์์ฝํด์ค.
Python
import urllib.request, json
def get(path):
req = urllib.request.Request("https://aikstockdata.com" + path,
headers={"User-Agent": "my-app"})
return json.loads(urllib.request.urlopen(req).read())
today = get("/data/public/today.json")
print(today["market_breadth"], today["quote_as_of"])
samsung = get("/data/public/s/005930.json") # one stock, ~5 KB
print(samsung["quote"], samsung["financials"])
JavaScript (browser or Node โ CORS is open)
const r = await fetch("https://aikstockdata.com/data/public/today.json");
const today = await r.json();
console.log(today.market_breadth, today.quote_as_of);
curl
curl -s https://aikstockdata.com/data/public/s/005930.json | jq .quote
Endpoints
Start at the catalog โ it lists every file with its size, freshness and archive dates:
https://aikstockdata.com/data/public/index.json
| Endpoint | What it is | Size |
|---|---|---|
today.json |
Oneโday market digest โ breadth, top filings, rankings, earnings | 7 KB |
s/{code6}.json |
One stock โ quote, financials, recent filings, signals | ~5 KB |
search_index_min.json |
Name โ code lookup (URL patterns declared once) | 83 KB |
disclosures_top100.json |
Top 100 filings by importance score, plainโKorean explanation | 80 KB |
quotes_top300.json |
Top 300 by market cap, sort order guaranteed | 84 KB |
rankings.json |
Growth top 8, quiet performers, 52โweek highs/lows, movers | 17 KB |
earnings.json |
Earnings filings, 120โday rolling scoreboard | 148 KB |
quotes_slim.json |
All stocks, 6 core fields | 201 KB |
quotes.json |
All stocks, all fields | 400 KB |
disclosures.json |
All filings from the last 7 days, with financial detail | 380 KB |
excluded.json |
Stocks in the universe with no quote, and why | 9 KB |
notices.json |
Machineโreadable incident and correction log | 9 KB |
quotes.csv / quotes_en.csv |
Same data as CSV (Korean / English headers) | 161 KB |
Also: /llms.txt ยท
/llms-full.txt ยท
/feed.xml ยท
JSON Schemas under /data/public/schemas/
โ ๏ธ Large files get truncated by AI fetch tools
Most AI fetch tools cut responses at 50โ150 KB, and a truncated JSON is unparseable โ which
produces silently wrong answers rather than an error. index.json carries a machineโreadable
fetch_guide block with the small alternative for every large file. Rule of thumb: if you need
one stock, always use s/{code}.json.
Design decisions that matter for AI
nullnever means zero. A missing value isnull.0means an actual measured zero (e.g. no trades that day, flagged byhas_trade: false).- Two different "as of" dates.
quote_as_of(price date, T+1 settled close) anddisclosure_through(last filing receipt date) are separate fields, because they move independently. Never collapse them into one "today". - Freshness is computed, not asserted.
index.json โ freshness.statusis derived from the actual age of the data (freshโค4d /delayed5โ7d /stale8d+), andquote_as_of_age_daysis exposed so you can check the arithmetic yourself. - Numbers that violate accounting identities are withdrawn, not published. If a parsed filing
shows net income exceeding revenue, the numbers are dropped and only the filing title and the
DART original link remain, tagged
value_status: "withdrawn_inconsistent". - Every ranking formula is published inside
rankings.jsonitself, with perโcomponent scores, so any result can be recomputed. - Failures are logged in public.
notices.jsonrecords pipeline failures and corrections. When a run fails, the last good snapshot is kept rather than publishing a partial one. - Not investment advice. Rankings are mechanical screens over public filings. No target prices, no analyst opinions, no buy/sell recommendations โ by design.
What is not here
No realโtime quotes (data is the previous trading day's settled close, T+1). No PER/PBR/analyst consensus/target prices from brokerage sources. No order execution. These are deliberate โ the project only redistributes data it has clear rights to redistribute.
Data sources & license
Data derives from Korean public sources:
- ๊ธ์ต๊ฐ๋ ์ ์ ์๊ณต์์์คํ (DART) โ regulatory filings
- ๊ธ์ต์์ํ ๊ณต๊ณต๋ฐ์ดํฐํฌํธ โ daily settled closing prices
The published files are derived works of public data and are free to use, including commercially, with attribution:
์๋ฃ: ํ๊ตญ์ฃผ์๋ฐ์ดํฐ(aikstockdata.com) โ ์์ฒ: ๊ธ์ต๊ฐ๋ ์ DART ยท ๊ธ์ต์์ํ ๊ณต๊ณต๋ฐ์ดํฐํฌํธ
The code in this repository is MIT licensed (see LICENSE). The data license above applies to the
published JSON/CSV files, not to this repository's code.
Repository contents
mcp/worker.js MCP server (Cloudflare Worker, stateless JSON-RPC over HTTP)
examples/ Runnable Python / JavaScript / shell examples
The data pipeline that produces the published files is maintained separately.
ํ๊ตญ์ด ์๋ด
ํ๊ตญ ์ฃผ์ ๊ณต์ยท์ข ๊ฐ๋ฅผ AI๊ฐ ๋ฐ๋ก ์ฝ๋ ๋ฌด๋ฃ JSON + MCP ์๋ฒ์ ๋๋ค. ๊ฐ์ ยทAPI ํค๊ฐ ํ์ ์์ต๋๋ค.
๋งค ๊ฑฐ๋์ผ ์ ๋ , ๊ธ์ต๊ฐ๋ ์ DART ๊ณต์์ ๊ธ์ต์์ํ ๊ณต๊ณต๋ฐ์ดํฐ ํ์ ์ข ๊ฐ๋ฅผ ์์งํด AI๊ฐ ๊ทธ๋๋ก ์ธ์ฉํ ์ ์๋ JSON์ผ๋ก ๋ฐํํฉ๋๋ค.
- AI์ ์ฐ๊ฒฐํ๊ธฐ: ClaudeยทChatGPT ์ค์ ์ '์ปค์คํ ์ปค๋ฅํฐ'์ ์ MCP ์ฃผ์๋ฅผ ๋ถ์ฌ๋ฃ์ผ๋ฉด ๋์ ๋๋ค.
- ๊ทธ๋ฅ ๋ฌผ์ด๋ณด๊ธฐ:
https://aikstockdata.com/data/public/today.json ์ฝ๊ณ ์ค๋ ์์ฅ ์์ฝํด์ค - ํ ์ข
๋ชฉ๋ง:
https://aikstockdata.com/data/public/s/005930.json(์ฝ 5KB) - ์ฌ๋์ด ๋ณด๋ ์๋ด: https://aikstockdata.com/ai.html
์ค๊ณ ์์น
null์ 0์ด ์๋๋๋ค โ ๊ฒฐ์ธก์null, 0์ ์ค์ ๋ก 0(๊ฑฐ๋ ์์ ๋ฑ)์ ๋๋ค.- ์์ธ ๊ธฐ์ค์ผ(
quote_as_of)๊ณผ ๊ณต์ ์๋ก์ผ(disclosure_through)์ ๋ถ๋ฆฌํด์ ์ ๊ณตํฉ๋๋ค. - ์ ์ ๋๋ ์ฃผ์ฅ์ด ์๋๋ผ ๊ณ์ฐ๊ฐ์
๋๋ค โ ๋ฐ์ดํฐ๊ฐ ์ค๋๋๋ฉด ์ค์ค๋ก
stale์ด๋ผ๊ณ ๋ฐํ๋๋ค. - ํ๊ณ ํญ๋ฑ์์ ์ด๊ธฐ๋ ์์น(์์ด์ต > ๋งค์ถ์ก ๋ฑ)๋ ๊ฒ์ํ์ง ์๊ณ ์ฒ ํํฉ๋๋ค.
- ๋ญํน ์ฐ์์ ์ ๋ถ ๊ณต๊ฐ๋ผ ์์ด ๋๊ตฌ๋ ์ฌ๊ณ์ฐํ ์ ์์ต๋๋ค.
- ํ์ดํ๋ผ์ธ ์คํจ๋ ๊ณต๊ฐ ๊ธฐ๋ก(
notices.json)์ ๋จ๊น๋๋ค. - ํฌ์ ๊ถ์ ๊ฐ ์๋๋๋ค. ๊ณต๊ฐ ๊ณต์์ ๋ํ ๊ธฐ๊ณ์ ์ง๊ณ์ด๋ฉฐ ๋ชฉํ์ฃผ๊ฐยทํฌ์์๊ฒฌ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
Keywords: Korean stock market API, KOSPI JSON, KOSDAQ data, DART disclosures API, MCP server Korea, free Korean stock data, ํ๊ตญ ์ฃผ์ API ๋ฌด๋ฃ, ํ๊ตญ ์ฃผ์ MCP, DART ๊ณต์ JSON, ์ฝ์คํผ ์ข ๊ฐ CSV
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.