list-kis-api-specsLABSCO SUMMARY
166 endpoints reachable, trading switched off until you say otherwise.
Order, amend and cancel calls are blocked until trading is explicitly switched on in the configuration, so a read-only setup stays read-only. This is a community project with no affiliation to Korea Investment & Securities, and the repository says so at the top.
What it is
An unofficial MCP server for the Korea Investment & Securities (KIS) REST API. It ships a catalogue of 166 endpoints, grouped by the part of the business they serve, that a generic call tool can invoke, plus shortcuts for the queries people run most.
What you get
- The catalogue browsed, and one endpoint's spec read: path, HTTP method, TR_ID candidates, and parameters with Korean labels, input guidance and example values (list-kis-api-specs, get-kis-api-spec)
- Any endpoint in the catalogue called by group and ID (call-kis-api)
- Shortcuts for the two common queries, account balance and current stock price (inquery-balance, inquery-stock-price)
- Domestic Korean equities: current price, daily and period quotes, order book, sector index, balance, buyable amount and sellable quantity
- Overseas markets for the US, Japan, China, Hong Kong and Vietnam, with the order TR_ID chosen automatically by market and direction
- Stdio, SSE and streamable-http transports, token caching by app key and account type, and unknown request parameters rejected by default
Requirements
Python 3.13 or newer and uv. The KIS app key and secret, plus the account number and product code, go in a .env file, along with whether that account is a real or a virtual one. Setting KIS_MCP_TOOLSET to catalog keeps the tool surface small.
Setup effort
Build from source — git clone https://github.com/migusdn/KIS_MCP_Server.git
USE CASES
Checking a Korean stock's current price
Use the shortcut rather than looking up the endpoint.
Reading your balance and what you can buy
Pull the balance, then call the endpoint for buyable amount.
Finding the endpoint for something the shortcuts miss
Browse the catalogue and read the spec, parameters and TR_ID candidates.
Querying an overseas market
Read the spec for that market's endpoint, then call it.
Keeping the client's tool list short
Run the catalogue toolset and reach everything through the one generic call tool.
15 tools
Listed in project docs. Your client may show a different list.
get-kis-api-speccall-kis-apiinquery-stock-priceinquery-balanceinquery-order-listinquery-order-detailinquery-stock-infoinquery-stock-historyinquery-stock-askinquery-stock-marketinquery-stock-basic-infoinquery-overseas-stock-priceorder-stockorder-overseas-stockBEFORE YOU INSTALL
What to know first
Tools you get
15 tools named in the project's documentation.
Requires
- uv on PATH
- Python >= 3.13
- KIS_APP_KEY in your environment
- KIS_APP_SECRET in your environment
- KIS_CANO in your environment
INSTALLATION
Connect your client
This one is built from source rather than installed with a single command.
Server setup
git clone https://github.com/migusdn/KIS_MCP_Server.git
cd KIS_MCP_Server
uv sync
cp .env.example .env
chmod 600 .envIn .env, set your KIS_APP_KEY, KIS_APP_SECRET, KIS_ACCOUNT_TYPE (REAL or VIRTUAL), KIS_CANO (the first 8 digits of your account number) and KIS_ACNT_PRDT_CD (your account product code, 01 by default)
MCP Clients
Codex
codex mcp add kis-mcp-server \
--env KIS_MCP_TOOLSET=catalog \
--env KIS_MCP_LOG_LEVEL=WARNING \
-- uv --directory <YOUR_PROJECT_ROOT> run python server.pyClaude Code
{
"mcpServers": {
"kis-mcp-server": {
"type": "stdio",
"command": "uv",
"args": [
"--directory",
"<YOUR_PROJECT_ROOT>",
"run",
"python",
"server.py"
],
"env": {
"KIS_MCP_TOOLSET": "catalog",
"KIS_MCP_LOG_LEVEL": "WARNING"
}
}
}
}The configuration on this page does not set KIS_APP_KEY, KIS_APP_SECRET and KIS_CANO; the project's instructions put them in a .env file. To supply them without depending on where the server looks for that file, use the block's "env" section.
Claude Desktop
{
"mcpServers": {
"kis-mcp-server": {
"command": "uv",
"args": [
"--directory",
"<YOUR_PROJECT_ROOT>",
"run",
"python",
"server.py"
],
"env": {
"KIS_MCP_TOOLSET": "catalog",
"KIS_MCP_LOG_LEVEL": "WARNING"
}
}
}
}The configuration on this page does not set KIS_APP_KEY, KIS_APP_SECRET and KIS_CANO; the project's instructions put them in a .env file. To supply them without depending on where the server looks for that file, use the block's "env" section.
Any MCP client
{
"mcpServers": {
"kis-mcp-server": {
"command": "uv",
"args": [
"run",
"python",
"server.py"
],
"cwd": "<YOUR_PROJECT_ROOT>",
"env": {
"KIS_MCP_TOOLSET": "catalog",
"KIS_MCP_LOG_LEVEL": "WARNING"
}
}
}
}The configuration on this page does not set KIS_APP_KEY, KIS_APP_SECRET and KIS_CANO; the project's instructions put them in a .env file. To supply them without depending on where the server looks for that file, use the block's "env" section.