Skip to main content

K-Stock MCP

한국어 README

A read-only Model Context Protocol server that plugs the Korean stock market into Claude and other MCP agents: quotes and charts from the KIS Open API, disclosures and financials from OpenDART, and an IPO (공모주) schedule with an equal-allocation (균등배정) calculator.

  • Token handling for KIS is automatic: issued once, cached on disk (24 h validity), paper (mock) and real environments kept apart, paper is the default.
  • Data and calculations only. No order tools. No buy/sell recommendations.
  • stdio transport, runs with uvx, no hosted service: your keys never leave your machine.

Disclaimer. Everything this server returns is informational data, not investment advice. It is not an investment advisory or discretionary service, and it does not recommend securities. Investment decisions and their consequences are entirely your own responsibility. Data may be delayed, incomplete or wrong. Not affiliated with Korea Investment & Securities or the Financial Supervisory Service.

Tools (v0.1, all read-only)

Tool What it does Source
search_stock Company name or code to code, market and type KIS public symbol master files
get_quote Price, day range, volume, PER/PBR/EPS/BPS, 10-level order book KIS inquire-price, inquire-asking-price-exp-ccn
get_ohlcv Daily/weekly/monthly/yearly candles, optionally adjusted KIS inquire-daily-itemchartprice
get_balance Holdings and account summary (paper by default) KIS inquire-balance
get_ipo_schedule Upcoming/ongoing IPOs: subscription dates, price, underwriters, optional equal-allocation estimate OpenDART equity registration statements
get_disclosure Recent filings for a company, with DART viewer links OpenDART list.json
get_financials Key accounts (assets, liabilities, equity, revenue, operating income, net income) OpenDART fnlttSinglAcnt.json

Every response carries a short notice field with the disclaimer, and the server instructions tell the model not to present output as advice.

Install in 3 steps

1. Get keys (both free)

2. Install uv and check the server starts:

uvx kstock-mcp --version

3. Add it to your client

Claude Code:

claude mcp add kstock \
  --env KIS_ENV=paper \
  --env KIS_APP_KEY=your-kis-app-key \
  --env KIS_APP_SECRET=your-kis-app-secret \
  --env KIS_ACCOUNT_NO=12345678-01 \
  --env DART_API_KEY=your-dart-api-key \
  -- uvx kstock-mcp

Claude Desktop (claude_desktop_config.json; use the full path to uvx if the app cannot find it):

{
  "mcpServers": {
    "kstock": {
      "command": "uvx",
      "args": ["kstock-mcp"],
      "env": {
        "KIS_ENV": "paper",
        "KIS_APP_KEY": "your-kis-app-key",
        "KIS_APP_SECRET": "your-kis-app-secret",
        "KIS_ACCOUNT_NO": "12345678-01",
        "DART_API_KEY": "your-dart-api-key"
      }
    }
  }
}

You only need the keys for the tools you use: DART tools need DART_API_KEY; KIS tools need the KIS variables; get_balance also needs the account number; search_stock needs no key.

Alternative: pre-PyPI or development version. To run straight from GitHub instead of PyPI, replace uvx kstock-mcp with uvx --from git+https://github.com/ez2sarang/kstock-mcp kstock-mcp (in Claude Desktop: "args": ["--from", "git+https://github.com/ez2sarang/kstock-mcp", "kstock-mcp"]).

Configuration

Variable Meaning
KIS_ENV paper (default) or real. Anything else is rejected rather than silently treated as real
KIS_APP_KEY, KIS_APP_SECRET KIS credentials for the chosen environment
KIS_ACCOUNT_NO 12345678-01, 1234567801 or 12345678 (product code defaults to 01). Or use KIS_CANO + KIS_ACNT_PRDT_CD
DART_API_KEY OpenDART key
KSTOCK_MCP_CACHE_DIR Cache directory (default ~/.cache/kstock-mcp): KIS token (mode 0600), symbol master (1 day), DART company codes (7 days)

IPO schedule and equal allocation

Source choice: get_ipo_schedule uses OpenDART equity registration statements (증권신고서, 지분증권) because it is the official, documented, keyed API, so there is no scraping and no robots.txt/terms question. Pre-listing issuers that filed one are treated as IPO candidates. Dates, price text and underwriters come from the latest filing or amendment and can still change before book-building ends. The filing does not contain retail allocation ratios or subscriber counts.

Pass expected_subscribers (and optionally general_ratio_pct, equal_ratio_pct, min_subscription_shares, deposit_rate_pct) to get an equal_allocation_estimate per IPO. The calculation is a pure function (kstock_mcp.allocation.estimate_equal_allocation) and the response lists its formula and assumptions:

general_shares     = floor(total_shares * general_ratio_pct / 100)
equal_shares       = floor(general_shares * equal_ratio_pct / 100)
guaranteed_each    = floor(equal_shares / expected_subscribers)
leftover (lottery) = equal_shares mod expected_subscribers

Real allocations are decided per underwriter, so treat the output as a rough estimate.

Privacy

The server runs locally over stdio. It sends your KIS key/secret to the KIS Open API, your DART key to OpenDART, and downloads KIS's public symbol master files. It has no telemetry and no server of its own. Keys are read from environment variables only, are never written to logs, and error messages never include request URLs.

Development

git clone https://github.com/ez2sarang/kstock-mcp && cd kstock-mcp
uv sync
uv run pytest        # all HTTP is mocked; no network, no keys needed

Dependencies are pinned to exact versions in pyproject.toml and uv.lock. The server uses mcp 2.x, where the former FastMCP class is MCPServer.

Roadmap

v0.2 and later: condition search, portfolio report, IPO alerts. This server stays read-only: order placement is not planned.

License

MIT

Metadata

Release files for kstock-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for kstock-mcp 0.1.0
File Size Uploaded
kstock_mcp-0.1.0.tar.gz 111.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for kstock-mcp 0.1.0
File Interpreter ABI Platform
kstock_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 140.3 kB

Release files / kstock_mcp-0.1.0.tar.gz

Download URL kstock_mcp-0.1.0.tar.gz
Size 111.7 kB
Tags Source
SHA-256 checksum
How to use checksums
1d42a97a71447cf741da9fb8fb5810b8286ad0146405408850bc6b4d2cd39808
BLAKE2b-256 checksum
How to use checksums
480d1586d38a87275d8e98a24c24c33f9724d7794c9b2b29add9b4ae3faa871e
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / kstock_mcp-0.1.0-py3-none-any.whl

Download URL kstock_mcp-0.1.0-py3-none-any.whl
Size 28.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
670e9e1a796ba91b640624d9ec41d31bb431bd73e500062182014ab53e0226f4
BLAKE2b-256 checksum
How to use checksums
44b1b2432612c438ac4ea2b4592d6838758b5d620441347755c4148b38650ae3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page