scjang01/tossinvest-mcp
๐ โ๏ธ - Toss Securities (ํ ์ค์ฆ๊ถ) Open API MCP server. Real-time quotes, orderbook, candles, holdings, buying power, and order management (create/modify/cancel).
Quick Install
{
"mcpServers": {
"scjang01-tossinvest-mcp": {
"command": "npx",
"args": [
"-y",
"scjang01-tossinvest-mcp"
]
}
}
}Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.
Documentation Overview
tossinvest-mcp
ํ๋ก๊ทธ๋จ ๊ฐ์
tossinvest-mcp๋ ํ ์ค์ฆ๊ถ Open API(ํ์ฌ๊ฐ ์กฐํ, ์ฃผ๋ฌธ, ์๊ณ ์กฐํ ๋ฑ)๋ฅผ OpenAI ์๋น์ค, Claude Desktop, Cursor ๊ฐ์ MCP ์ง์ ์ฑ์์ ์ฌ์ฉํ ์ ์๊ฒ ํด์ฃผ๋ ๋ก์ปฌ MCP ์๋ฒ์
๋๋ค.
์ฝ๊ฒ ๋งํด, ์ด ํ๋ก๊ทธ๋จ์ MCP ํด๋ผ์ด์ธํธ์ ๋ฑ๋กํ๋ฉด AI์๊ฒ ๋ค์์ฒ๋ผ ์์ฒญํ ์ ์์ต๋๋ค.
์ผ์ฑ์ ์ ํ์ฌ๊ฐ๋ฅผ ์กฐํํด์ค.
๋ด ํ ์ค์ฆ๊ถ ๋ณด์ ์ฃผ์์ ๋ณด์ฌ์ค.
๋๊ธฐ ์ค์ธ ์ฃผ๋ฌธ ๋ชฉ๋ก์ ๋ณด์ฌ์ค.
์ด ํ๋ก๊ทธ๋จ์ ์ฌ์ฉ์์ ์ปดํจํฐ์์๋ง ์คํ๋ฉ๋๋ค.
๊ฐ์ฅ ์ค์ํ ์ฃผ์์ฌํญ
ํ ์ค์ฆ๊ถ Open API์๋ ์๋๋ฐ์ค๋ ๋ชจ์ํฌ์ ํ๊ฒฝ์ด ์์ต๋๋ค.
๊ฑฐ๋ ๊ธฐ๋ฅ์ ์ผ๋ฉด ์ค์ ๊ณ์ข์ ์ค์ ์ฃผ๋ฌธ์ ์์ฑ, ์ ์ , ์ทจ์ํ ์ ์์ต๋๋ค. ์ฒ์ ์ฌ์ฉํ ๋๋ ๋ฐ๋์ ๊ฑฐ๋ ๊ธฐ๋ฅ์ ์ผ์ง ๋ง๊ณ ์กฐํ ๊ธฐ๋ฅ๋ถํฐ ํ์ธํ์ธ์.
๊ธฐ๋ณธ ์ค์ ์์๋ ์ฃผ๋ฌธ ์์ฑ, ์ ์ , ์ทจ์ ๋๊ตฌ๊ฐ ๋ฑ๋ก๋์ง ์์ต๋๋ค.
ํ๋ก๊ทธ๋จ์ผ๋ก ํ ์ ์๋ ๊ธฐ๋ฅ ๋ฐ ํน์ง
๊ฑฐ๋ ๊ธฐ๋ฅ์ ์ผ์ง ์์๋ ์๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- ๊ตญ๋ด/๋ฏธ๊ตญ ์ฃผ์ ํ์ฌ๊ฐ ์กฐํ
- ํธ๊ฐ ์กฐํ
- ์ต๊ทผ ์ฒด๊ฒฐ ๋ด์ญ ์กฐํ
- ์บ๋ค ์ฐจํธ ์กฐํ
- ์ํ๊ฐ/ํํ๊ฐ ์กฐํ
- ์ข ๋ชฉ ๊ธฐ๋ณธ ์ ๋ณด ์กฐํ
- ๋งค์ ์ ์์ฌํญ ์กฐํ
- ํ์จ ์กฐํ
- ๊ตญ๋ด/๋ฏธ๊ตญ ์ฅ ์ด์ ์๊ฐ ์กฐํ
- ๊ณ์ข ๋ชฉ๋ก ์กฐํ
- ๋ณด์ ์ฃผ์ ์กฐํ
- ๋งค์ ๊ฐ๋ฅ ๊ธ์ก ์กฐํ
- ํ๋งค ๊ฐ๋ฅ ์๋ ์กฐํ
- ๋งค๋งค ์์๋ฃ ์กฐํ
- ์ฃผ๋ฌธ ๋ชฉ๋ก ์กฐํ
- ์ฃผ๋ฌธ ์์ธ ์กฐํ
๊ฑฐ๋ ๊ธฐ๋ฅ์ ์ผ ๊ฒฝ์ฐ ์ฌ์ฉํ ์ ์๋ ๋๊ตฌ:
toss_create_order: ์ฃผ๋ฌธ ์์ฑtoss_modify_order: ์ฃผ๋ฌธ ์ ์ toss_cancel_order: ์ฃผ๋ฌธ ์ทจ์
ํน์ง:
npx tossinvest-mcp๋ก ์คํ๋๋ฏ๋ก ๋ณ๋ ํ๋ก๊ทธ๋จ ์ค์น ๊ณผ์ ์ด ์งง์ต๋๋ค.- API Key์ Secret Key๋ ํ๊ฒฝ๋ณ์๋ก ์ ๋ฌํฉ๋๋ค.
- OAuth ํ ํฐ์ ๋ด๋ถ์์ ์๋ ๋ฐ๊ธํ๊ณ , ๋ง๋ฃ 60์ด ์ ์ ์๋ ๊ฐฑ์ ํฉ๋๋ค.
- ๊ณ์ข๊ฐ ํ์ํ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก
accountSeq1๋ฒ ๊ณ์ข๋ฅผ ์ฌ์ฉํฉ๋๋ค. - ๊ณ์ข๊ฐ ์ฌ๋ฌ ๊ฐ์ด๊ฑฐ๋ ๋ค๋ฅธ ๊ณ์ข๋ฅผ ์ฐ๊ณ ์ถ์ผ๋ฉด
TOSSINVEST_ACCOUNT๊ฐ์ผ๋ก ๋ณ๊ฒฝํ ์ ์์ต๋๋ค. - ์ฃผ๋ฌธ ์์ฑ, ์ ์ , ์ทจ์ ๊ธฐ๋ฅ์ ๊ธฐ๋ณธ์ ์ผ๋ก ๊บผ์ ธ ์์ต๋๋ค.
- ์ฃผ๋ฌธ ๊ธฐ๋ฅ์ ์ผ๋ ๊ธฐ๋ณธ๊ฐ์์๋
confirmOrderAction: trueํ์ธ๊ฐ์ด ์์ผ๋ฉด ์ฃผ๋ฌธ API๋ฅผ ํธ์ถํ์ง ์์ต๋๋ค. - ์ฃผ๋ฌธ ํ๋, ๋งค๋/์์ฅ๊ฐ ์ฐจ๋จ, ์ข
๋ชฉ ํ์ฉ๋ชฉ๋ก, ์ผ์ผ ํ๋ ๊ฐ์ ๊ฐ๋๋ ์ผ์ ํ๊ฒฝ๋ณ์๋ก ์ผค ์ ์๊ณ , ๋ชจ๋ ๊ฒ์ฌ๋ ํ ์ค์ฆ๊ถ ์ฃผ๋ฌธ API ํธ์ถ ์ ์ ์๋ฒ์์ ๊ฐ์ ๋ฉ๋๋ค. (์๋
๊ฑฐ๋ ๊ฐ๋๋ ์ผ์ฐธ๊ณ )
์ค์: toss_modify_order๋ ๊ธฐ์กด ์ฃผ๋ฌธ์ ๊ทธ ์๋ฆฌ์์ ์์ ํ๋ ๋จ์ PATCH๊ฐ ์๋๋๋ค. ํ ์ค์ฆ๊ถ API๋ ์์ฃผ๋ฌธ์ ๋์ฒดํ๋ ๋ฐฉ์์ผ๋ก ์ฒ๋ฆฌํ๋ฉฐ, ์ ์ ํ ์ orderId๋ฅผ ๋ฐํํฉ๋๋ค. ์ดํ ์ฃผ๋ฌธ ์์ธ ์กฐํ, ์ฌ์ ์ , ์ทจ์์๋ ์๋ก ๋ฐ์ orderId๋ฅผ ์ฌ์ฉํ์ธ์.
์ค์น๋ฐฉ๋ฒ
์๋ ์์๋๋ก ์งํํ๋ฉด ๋ฉ๋๋ค.
1. Node.js ์ค์น ํ์ธ
ํฐ๋ฏธ๋ ๋๋ PowerShell์ ์ด๊ณ ์๋ ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํฉ๋๋ค.
node -v
v20 ์ด์์ด ๋์ค๋ฉด ๋ค์ ๋จ๊ณ๋ก ๋์ด๊ฐ๋ฉด ๋ฉ๋๋ค.
Node.js๊ฐ ์๊ฑฐ๋ ๋ฒ์ ์ด ๋ฎ๋ค๋ฉด https://nodejs.org ์์ LTS ๋ฒ์ ์ ์ค์นํ ๋ค ํฐ๋ฏธ๋์ ์๋ก ์ด์ด ๋ค์ ํ์ธํ์ธ์.
2. ํ ์ค์ฆ๊ถ Open API Key ์ค๋น
ํ ์ค์ฆ๊ถ WTS์ ๋ก๊ทธ์ธํ ๋ค Open API ์ค์ ํ๋ฉด์ผ๋ก ์ด๋ํฉ๋๋ค.
๊ทธ ํ๋ฉด์์ ์๋ ๊ฐ์ ๋ฐ๊ธ๋ฐ์ ๋ก๋๋ค.
API KeySecret Key
์ด ๋ ๊ฐ์ MCP ์ค์ ์ ๋ฃ์ด์ผ ํฉ๋๋ค. ๋ค๋ฅธ ์ฌ๋์๊ฒ ๊ณต์ ํ์ง ๋ง์ธ์.
3. ํ์ฉ IP ๋ฑ๋ก
ํ ์ค์ฆ๊ถ Open API๋ ํ์ฉ๋ IP์์๋ง ํธ์ถํ ์ ์์ต๋๋ค. ์ด ์ค์ ์ด ๋น ์ ธ ์์ผ๋ฉด ํ์ฉ๋์ง ์์ IP ์ฃผ์์
๋๋ค. ๊ฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
๋จผ์ ํ์ฌ ์ปดํจํฐ์ ๊ณต์ธ IP๋ฅผ ํ์ธํฉ๋๋ค. ์๋ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํ์ธ์.
PowerShell (Windows):
(Invoke-WebRequest -UseBasicParsing https://api.ipify.org).Content
macOS ๋๋ Linux ํฐ๋ฏธ๋:
curl https://api.ipify.org
๋์จ IP ์ฃผ์๋ฅผ ํ ์ค์ฆ๊ถ WTS์ Open API ์ค์ ํ๋ฉด์์ ํ์ฉ IP ๋ชฉ๋ก์ ์ถ๊ฐํฉ๋๋ค.
๋๋ต์ ์ธ ํ๋ฆ:
- ํ ์ค์ฆ๊ถ WTS์ ๋ก๊ทธ์ธํฉ๋๋ค.
- ์ค์ - Open API ๋ฉ๋ด๋ก ์ด๋ํฉ๋๋ค.
- ํ์ฉ IP ๊ด๋ฆฌ ์์ญ์ ์ฐพ์ต๋๋ค.
- ์์์ ํ์ธํ ๊ณต์ธ IP๋ฅผ ์ถ๊ฐํฉ๋๋ค.
4. MCP ํด๋ผ์ด์ธํธ์ ๋ฑ๋ก
MCP ํด๋ผ์ด์ธํธ์ ์ค์ ํ์ผ ๋๋ MCP Servers ์ค์ ํ๋ฉด์ ์๋ ๋ด์ฉ์ ์ถ๊ฐํฉ๋๋ค.
{
"mcpServers": {
"tossinvest": {
"command": "npx",
"args": ["tossinvest-mcp"],
"env": {
"TOSSINVEST_API_KEY": "๋ฐ๊ธ๋ฐ์-API-Key",
"TOSSINVEST_SECRET_KEY": "๋ฐ๊ธ๋ฐ์-Secret-Key"
}
}
}
}
์ค์ ํ MCP ํด๋ผ์ด์ธํธ๋ฅผ ์์ ํ ์ข ๋ฃํ๋ค๊ฐ ๋ค์ ์คํํ์ธ์.
์ฒ์ ์คํํ ๋ npm์ด tossinvest-mcp ํจํค์ง๋ฅผ ์๋์ผ๋ก ๋ด๋ ค๋ฐ์ต๋๋ค.
5. ๊ณ์ข๋ฒํธ ํ์ธ
์ฒ์์๋ TOSSINVEST_ACCOUNT๋ฅผ ๋ฃ์ง ์์๋ ๋ฉ๋๋ค. ์ด ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก accountSeq 1๋ฒ ๊ณ์ข๋ฅผ ์ฌ์ฉํฉ๋๋ค.
๋ค๋ง ๊ณ์ข๊ฐ ์ฌ๋ฌ ๊ฐ์ด๊ฑฐ๋ 1๋ฒ ๊ณ์ข๊ฐ ๋ง๋์ง ํ์ธํ๊ณ ์ถ๋ค๋ฉด ๊ณ์ข ๋ชฉ๋ก์ ์กฐํํ์ธ์.
MCP ํด๋ผ์ด์ธํธ์์ ๋ค์์ฒ๋ผ ์์ฒญํฉ๋๋ค.
ํ ์ค์ฆ๊ถ ๊ณ์ข ๋ชฉ๋ก์ ์กฐํํด์ค.
์๋ต์์ accountSeq ๊ฐ์ ์ฐพ์ต๋๋ค. ๋ค๋ฅธ ๊ณ์ข๋ฅผ ๊ธฐ๋ณธ ๊ณ์ข๋ก ์ฐ๊ณ ์ถ๋ค๋ฉด ์ค์ ์ ์๋ ๊ฐ์ ์ถ๊ฐํ๊ฑฐ๋ ๋ฐ๊พธ๋ฉด ๋ฉ๋๋ค.
"TOSSINVEST_ACCOUNT": "1"
์๋ฅผ ๋ค์ด accountSeq๊ฐ 2์ธ ๊ณ์ข๋ฅผ ์ฐ๊ณ ์ถ๋ค๋ฉด ์ด๋ ๊ฒ ์ค์ ํฉ๋๋ค.
"TOSSINVEST_ACCOUNT": "2"
๊ณ์ข๋ฒํธ๋ฅผ ๋ช ์ํ ์ ์ฒด ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
{
"mcpServers": {
"tossinvest": {
"command": "npx",
"args": ["tossinvest-mcp"],
"env": {
"TOSSINVEST_API_KEY": "๋ฐ๊ธ๋ฐ์-API-Key",
"TOSSINVEST_SECRET_KEY": "๋ฐ๊ธ๋ฐ์-Secret-Key",
"TOSSINVEST_ACCOUNT": "1"
}
}
}
}
TOSSINVEST_ACCOUNT๋ฅผ ์ค์ ํ์ง ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ 1์ ์ฌ์ฉํฉ๋๋ค. ์ค์ ํ๋ฉด ๋ณด์ ์ฃผ์, ์ฃผ๋ฌธ ๋ชฉ๋ก, ๋งค์ ๊ฐ๋ฅ ๊ธ์ก์ฒ๋ผ ๊ณ์ข๊ฐ ํ์ํ ๊ธฐ๋ฅ์์ ํด๋น ๊ณ์ข๋ฅผ ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํฉ๋๋ค.
6. ์กฐํ ๊ธฐ๋ฅ ํ ์คํธ
MCP ํด๋ผ์ด์ธํธ์์ ์๋์ฒ๋ผ ์์ฒญํด ๋ด ๋๋ค.
์ผ์ฑ์ ์ ํ์ฌ๊ฐ๋ฅผ ์กฐํํด์ค.
๋ด ํ ์ค์ฆ๊ถ ๋ณด์ ์ฃผ์์ ๋ณด์ฌ์ค.
AAPL ์ต๊ทผ ์ฒด๊ฒฐ ๋ด์ญ 10๊ฐ๋ฅผ ์กฐํํด์ค.
๋๊ธฐ ์ค์ธ ์ฃผ๋ฌธ ๋ชฉ๋ก์ ๋ณด์ฌ์ค.
๊ฑฐ๋ ๊ธฐ๋ฅ ์ผ๊ธฐ
๋ค์ ํ ๋ฒ ํ์ธํ์ธ์. ํ ์ค์ฆ๊ถ Open API์๋ ์๋๋ฐ์ค๊ฐ ์์ต๋๋ค. ๊ฑฐ๋ ๊ธฐ๋ฅ์ ์ผ๋ฉด ์ค์ ์ฃผ๋ฌธ์ด ๋๊ฐ ์ ์์ต๋๋ค.
๊ฑฐ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๋ ค๋ฉด MCP ์ค์ ์ env์ ์๋ ๊ฐ์ ์ถ๊ฐํฉ๋๋ค.
"TOSSINVEST_ENABLE_TRADING": "true"
์ ์ฒด ์์:
{
"mcpServers": {
"tossinvest": {
"command": "npx",
"args": ["tossinvest-mcp"],
"env": {
"TOSSINVEST_API_KEY": "๋ฐ๊ธ๋ฐ์-API-Key",
"TOSSINVEST_SECRET_KEY": "๋ฐ๊ธ๋ฐ์-Secret-Key",
"TOSSINVEST_ACCOUNT": "1",
"TOSSINVEST_ENABLE_TRADING": "true"
}
}
}
}
๊ฑฐ๋ ๊ธฐ๋ฅ์ ์ผ๋ ์ฃผ๋ฌธ ๋๊ตฌ๋ ์ถ๊ฐ ํ์ธ๊ฐ์ด ์์ผ๋ฉด ์คํ๋์ง ์์ต๋๋ค. ์ฃผ๋ฌธ ์์ฑ, ์ ์ , ์ทจ์ ๋๊ตฌ๋ ์์ฒญ ์
๋ ฅ์ confirmOrderAction: true๊ฐ ์์ด์ผ ํ ์ค์ฆ๊ถ API๋ฅผ ํธ์ถํฉ๋๋ค.
confirmOrderAction์ true๋ก ๋ฃ๋ ๋ฐฉ๋ฒ
confirmOrderAction์ MCP ์ค์ ์ ๋ฃ๋ ํ๊ฒฝ๋ณ์๊ฐ ์๋๋๋ค. ์ฃผ๋ฌธ ์์ฑ, ์ ์ , ์ทจ์ ๋๊ตฌ๋ฅผ ํธ์ถํ ๋๋ง๋ค ๋ค์ด๊ฐ๋ ์ฃผ๋ฌธ ์์ฒญ ์
๋ ฅ๊ฐ์
๋๋ค.
์๋ฅผ ๋ค์ด ์ฃผ๋ฌธ ์์ฑ ๋๊ตฌ์ ์ค์ ์ ๋ ฅ์ ์ด๋ฐ ํํ์ ๋๋ค.
{
"confirmOrderAction": true,
"symbol": "005930",
"side": "BUY",
"orderType": "LIMIT",
"quantity": "1",
"price": "70000"
}
MCP ํด๋ผ์ด์ธํธ์์ ์์ฐ์ด๋ก ์์ฒญํ ๋๋ ์๋์ฒ๋ผ ๋ช ํํ ๋งํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
ํ ์ค์ฆ๊ถ์์ ์ผ์ฑ์ ์ 1์ฃผ๋ฅผ 70000์ ์ง์ ๊ฐ๋ก ๋งค์ ์ฃผ๋ฌธํด์ค.
์ค์ ์ฃผ๋ฌธ ์คํ์ ํ์ธํ๋ฉฐ confirmOrderAction ๊ฐ์ true๋ก ๋ฃ์ด์ค.
์ ์ ์ด๋ ์ทจ์๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค.
์ด ์ฃผ๋ฌธ์ 71000์์ผ๋ก ์ ์ ํด์ค.
์ค์ ์ฃผ๋ฌธ ์ ์ ์ ํ์ธํ๋ฉฐ confirmOrderAction ๊ฐ์ true๋ก ๋ฃ์ด์ค.
์ด ์ฃผ๋ฌธ์ ์ทจ์ํด์ค.
์ค์ ์ฃผ๋ฌธ ์ทจ์๋ฅผ ํ์ธํ๋ฉฐ confirmOrderAction ๊ฐ์ true๋ก ๋ฃ์ด์ค.
ํด๋ผ์ด์ธํธ์ ๋ฐ๋ผ ์ฃผ๋ฌธ ๋๊ตฌ ์คํ ์ ์ ์น์ธ ๋ฒํผ์ด๋ ํ์ธ ์ฐฝ์ ๋ณด์ฌ์ค ์ ์์ต๋๋ค. ๊ทธ ๊ฒฝ์ฐ์๋ confirmOrderAction: true๊ฐ ์ฃผ๋ฌธ tool ์
๋ ฅ์ ํฌํจ๋์ด์ผ ํฉ๋๋ค.
ํ์ธ๊ฐ ์์ด ์ฃผ๋ฌธ ์คํํ๊ธฐ (์๋ํ)
์ฐธ๊ณ : ์ด์ ๋ฒ์ ์
TOSSINVEST_YOLO_TRADING์ต์ ์ ์ ๊ฑฐ๋์์ต๋๋ค. ํ์ธ๊ฐ์ ๋๋๋ผ๋ ๋๋จธ์ง ๊ฐ๋๋ ์ผ์ ๊ทธ๋๋ก ์ ์ฉ๋ฉ๋๋ค.
์๋ํ ํ๊ฒฝ์ฒ๋ผ ๋งค๋ฒ confirmOrderAction: true๋ฅผ ๋ฃ๊ธฐ ์ด๋ ต๋ค๋ฉด ํ์ธ ์๊ตฌ๋ง ๋ ์ ์์ต๋๋ค.
"TOSSINVEST_REQUIRE_ORDER_CONFIRMATION": "false"
์ด ๊ฐ์ ๋๋ฉด confirmOrderAction ์์ด๋ ์ฃผ๋ฌธ์ ๋ณด๋ผ ์ ์์ง๋ง, ์ฃผ๋ฌธ ํ๋ยท๋งค๋/์์ฅ๊ฐ ์ฐจ๋จยท์ข
๋ชฉ ํ์ฉ๋ชฉ๋กยท์ผ์ผ ํ๋ ๋ฑ ์ผ์ ธ ์๋ ๋ค๋ฅธ ๊ฐ๋๋ ์ผ์ ๊ณ์ ์ ์ฉ๋ฉ๋๋ค. ํ์ธ๊ฐ์ ๋๊ธฐ ์ ์ ๊ธ์ก/์ผ์ผ ํ๋๋ฅผ ํจ๊ป ์ค์ ํด ๋๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค.
๊ฑฐ๋ ๊ฐ๋๋ ์ผ
๊ฐ๋๋ ์ผ์ "AI๊ฐ ์ค์๋ก, ๋๋ ๋๋ฌด ํฌ๊ฒ/๋๋ฌด ์์ฃผ ์ฃผ๋ฌธ์ ๋ฃ๋ ๊ฒ"์ ๋ง์ ์ฃผ๋ ์์ ์ฅ์น์ ๋๋ค. ๋ชจ๋ ๊ฒ์ฌ๋ ์ฃผ๋ฌธ์ด ํ ์ค์ฆ๊ถ ์๋ฒ์ ๋๋ฌํ๊ธฐ ์ ์ ์ด ํ๋ก๊ทธ๋จ ์์์ ์ด๋ฃจ์ด์ง๋ฏ๋ก, ํ๋๋ฅผ ๋๋ ์ฃผ๋ฌธ์ ์ ์ด์ ํ ์ค๋ก ์ ์ก๋์ง ์์ต๋๋ค.
๋ชจ๋ ์ต์
์ MCP ์ค์ ์ env์ ํ ์ค์ฉ ์ถ๊ฐํด ์ผ๋ฉฐ, ์ผ์ง ์์ ์ต์
์ ์ ์ฉ๋์ง ์์ต๋๋ค(๊ธฐ๋ณธ๊ฐ์ ๋ณด์์ ์
๋๋ค). ๊ฐ์ ๋ชจ๋ ๋ฌธ์์ด๋ก ์ ์ต๋๋ค. ์: "TOSSINVEST_MAX_ORDER_AMOUNT_KRW": "500000".
ํ๋์ ๋ณด๊ธฐ (์์ฝ ํ)
| ์ด๋ฆ | ๊ธฐ๋ณธ๊ฐ | ํ ์ค ์ค๋ช |
|---|---|---|
TOSSINVEST_REQUIRE_ORDER_CONFIRMATION | true | ์ฃผ๋ฌธ๋ง๋ค confirmOrderAction: true ํ์ธ๊ฐ์ ์๊ตฌ |
TOSSINVEST_MAX_ORDER_AMOUNT_KRW | ์์ | 1ํ ์ฃผ๋ฌธ ๊ธ์ก ์ํ(์) |
TOSSINVEST_MAX_ORDER_AMOUNT_USD | ์์ | 1ํ ์ฃผ๋ฌธ ๊ธ์ก ์ํ(๋ฌ๋ฌ) |
TOSSINVEST_DAILY_MAX_ORDER_AMOUNT_KRW | ์์ | ํ๋ฃจ ๋์ ์ฃผ๋ฌธ ๊ธ์ก ์ํ(์) |
TOSSINVEST_DAILY_MAX_ORDER_AMOUNT_USD | ์์ | ํ๋ฃจ ๋์ ์ฃผ๋ฌธ ๊ธ์ก ์ํ(๋ฌ๋ฌ) |
TOSSINVEST_DAILY_MAX_ORDER_COUNT | ์์ | ํ๋ฃจ ์ฃผ๋ฌธ ๊ฑด์ ์ํ |
TOSSINVEST_ALLOWED_SYMBOLS | ์์ | ๊ฑฐ๋ ๊ฐ๋ฅ ์ข ๋ชฉ๋ง ์ง์ (ํ์ดํธ๋ฆฌ์คํธ) |
TOSSINVEST_ALLOW_SELL_ORDERS | false | ๋งค๋ ์ฃผ๋ฌธ ํ์ฉ ์ฌ๋ถ |
TOSSINVEST_ALLOW_MARKET_ORDERS | false | ์์ฅ๊ฐ ์ฃผ๋ฌธ ํ์ฉ ์ฌ๋ถ |
TOSSINVEST_MARKET_ORDER_BUFFER_PCT | 5 | ์์ฅ๊ฐ ํ๋ ๊ณ์ฐ์ฉ ์ฌ์ ๋ฒํผ(%) |
TOSSINVEST_LOCK_ACCOUNT | true | ์ง์ ํ ๊ธฐ๋ณธ ๊ณ์ข๋ก๋ง ์ฃผ๋ฌธํ๋๋ก ์ ๊ธ |
TOSSINVEST_GUARD_STATE_PATH | OS ๋ฐ์ดํฐ ํด๋ | ํ๋ฃจ ํ๋ ์ง๊ณ๋ฅผ ์ ์ฅํ๋ ํ์ผ ๊ฒฝ๋ก |
์ต์ ๋ณ ์์ธ ์ค๋ช
TOSSINVEST_REQUIRE_ORDER_CONFIRMATION (๊ธฐ๋ณธ: true)
์ฃผ๋ฌธ ์์ฑยท์ ์ ยท์ทจ์๋ฅผ ํ๋ ค๋ฉด ์์ฒญ์ confirmOrderAction: true๊ฐ ๋ค์ด ์์ด์ผ ์ค์ ๋ก ํ ์ค์ ์ ์ก๋ฉ๋๋ค. AI๊ฐ ๋ํ ์ค์ ์ค์๋ก ์ฃผ๋ฌธ์ ๋ฃ๋ ๊ฒ์ ๋ง๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์์ ์ฅ์น์
๋๋ค. ์๋ํ์ฒ๋ผ ๋งค๋ฒ ํ์ธ๊ฐ์ ๋ฃ๊ธฐ ์ด๋ ค์ฐ๋ฉด "false"๋ก ๋ ์ ์๋๋ฐ, ๋๋๋ผ๋ ์๋์ ๊ธ์กยท๊ฑด์ยท์ข
๋ชฉยท๋งค๋/์์ฅ๊ฐ ํ๋๋ ๊ทธ๋๋ก ์ ์ฉ๋ฉ๋๋ค. ๋๊ธฐ ์ ์๋ ๊ธ์กยท์ผ์ผ ํ๋๋ฅผ ํจ๊ป ์ค์ ํ๋ ๊ฒ์ ๊ฐ๋ ฅํ ๊ถ์ฅํฉ๋๋ค.
TOSSINVEST_MAX_ORDER_AMOUNT_KRW (๊ธฐ๋ณธ: ์์)
์ํ ์ฃผ๋ฌธ ํ ๊ฑด์ ๊ธ์ก ์ํ์
๋๋ค. ์ฃผ๋ฌธ ์ถ์ ๊ธ์ก(์ง์ ๊ฐ๋ ์๋ ร ๊ฐ๊ฒฉ, ์์ฅ๊ฐ๋ ํธ๊ฐ + ๋ฒํผ)์ด ์ด ๊ฐ์ ๋์ผ๋ฉด ์ฐจ๋จํฉ๋๋ค. ์: "500000" โ ํ ๋ฒ์ 50๋ง ์์ ๋๋ ์ํ ์ฃผ๋ฌธ์ ๋ง์ต๋๋ค. ์ค์ ํ์ง ์์ผ๋ฉด 1ํ ๊ธ์ก ์ ํ์ด ์์ต๋๋ค.
TOSSINVEST_MAX_ORDER_AMOUNT_USD (๊ธฐ๋ณธ: ์์)
๋ฏธ๊ตญ(๋ฌ๋ฌ) ์ฃผ์ ์ฃผ๋ฌธ ํ ๊ฑด์ ๊ธ์ก ์ํ(๋ฌ๋ฌ)์
๋๋ค. ์: "1000" โ 1ํ 1,000๋ฌ๋ฌ ์ด๊ณผ ์ฃผ๋ฌธ ์ฐจ๋จ. ์โ๋ฌ๋ฌ ํ์ฐ์ ํ์ง ์์ต๋๋ค. ์ํ ํ๋๋ ์ํ ์ฃผ๋ฌธ์๋ง, ๋ฌ๋ฌ ํ๋๋ ๋ฌ๋ฌ ์ฃผ๋ฌธ์๋ง ์ ์ฉ๋๋ฏ๋ก, ๋ ์์ฅ์ ๋ชจ๋ ๊ฑฐ๋ํ๋ค๋ฉด KRWยทUSD ํ๋๋ฅผ ๋ชจ๋ ์ค์ ํ์ธ์.
TOSSINVEST_DAILY_MAX_ORDER_AMOUNT_KRW (๊ธฐ๋ณธ: ์์)
ํ๋ฃจ ๋์(ํ๊ตญ ์๊ฐ ๊ธฐ์ค, ์์ ์ ์ด๊ธฐํ) ์ด ํ๋ก๊ทธ๋จ์ผ๋ก ๋ฃ์ ์ํ ์ฃผ๋ฌธ ๊ธ์ก์ ๋์ ์ํ์
๋๋ค. ์: "2000000" โ ํ๋ฃจ ํฉ๊ณ 200๋ง ์๊น์ง๋ง ์ฃผ๋ฌธ. ์ ์ ์ฃผ๋ฌธ๋ ๋์ ์ ๋ฐ์๋๊ณ , ์ทจ์๋ ๋ฐ์๋์ง ์์ต๋๋ค(์๋ "ํ๋ฃจ ํ๋ ๊ณ์ฐ ๋ฐฉ์" ์ฐธ๊ณ ).
TOSSINVEST_DAILY_MAX_ORDER_AMOUNT_USD (๊ธฐ๋ณธ: ์์)
์ ํญ๋ชฉ์ ๋ฌ๋ฌ ๋ฒ์ ์ ๋๋ค. ํ๋ฃจ ๋์ ๋ฌ๋ฌ ์ฃผ๋ฌธ ๊ธ์ก ์ํ.
TOSSINVEST_DAILY_MAX_ORDER_COUNT (๊ธฐ๋ณธ: ์์)
ํ๋ฃจ ์ฃผ๋ฌธ ๊ฑด์ ์ํ์
๋๋ค. ์: "10" โ ํ๋ฃจ 10๊ฑด๊น์ง๋ง. ์ ์ ์ ์ ์ฃผ๋ฌธ 1๊ฑด์ผ๋ก ์
๋๋ค. ์ทจ์๋ ๊ฑด์์ ํฌํจํ์ง ์์ต๋๋ค. ๊ณผ๋ํ๊ฒ ์ฆ์ ๋งค๋งค๋ฅผ ๋ง๊ณ ์ถ์ ๋ ์ ์ฉํฉ๋๋ค.
TOSSINVEST_ALLOWED_SYMBOLS (๊ธฐ๋ณธ: ์์)
๊ฑฐ๋๋ฅผ ํ์ฉํ ์ข
๋ชฉ๋ง ์ฝค๋ง๋ก ๋์ดํฉ๋๋ค. ๋ชฉ๋ก์ ์๋ ์ข
๋ชฉ์ ์ฃผ๋ฌธ์ ์ฐจ๋จ๋ฉ๋๋ค(์์ฑยท์ ์ ๋ชจ๋). ์: "005930,AAPL,VOO"(์ผ์ฑ์ ์, ์ ํ, VOO). ๊ตญ๋ด๋ 6์๋ฆฌ ์ซ์ ์ฝ๋, ๋ฏธ๊ตญ์ ํฐ์ปค๋ฅผ ์๋๋ค. ์ค์ ํ์ง ์์ผ๋ฉด ๋ชจ๋ ์ข
๋ชฉ์ ํ์ฉํฉ๋๋ค. "์ ํด๋ ์ข
๋ชฉ๋ง ๊ฑฐ๋"ํ๊ณ ์ถ์ ๋ ์ฌ์ฉํ์ธ์.
TOSSINVEST_ALLOW_SELL_ORDERS (๊ธฐ๋ณธ: false)
๋งค๋ ์ฃผ๋ฌธ ํ์ฉ ์ฌ๋ถ์
๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ๋งค์๋ง ํ์ฉ์ด๋ฉฐ, ๋งค๋ ์ฃผ๋ฌธ์ ๋ด๋ ค๋ฉด "true"๋ก ์ผ์ผ ํฉ๋๋ค. ์์ฑ๋ฟ ์๋๋ผ ์ ์ ์๋ ์ ์ฉ๋ฉ๋๋ค(๋งค๋ ์ฃผ๋ฌธ ์ ์ ์ ๋งค๋๊ฐ ํ์ฉ๋ผ ์์ด์ผ ๊ฐ๋ฅ). ์ด๋ฏธ ๋ธ ์ฃผ๋ฌธ์ ์ทจ์๋ ํญ์ ๊ฐ๋ฅํฉ๋๋ค.
TOSSINVEST_ALLOW_MARKET_ORDERS (๊ธฐ๋ณธ: false)
์์ฅ๊ฐ(MARKET) ์ฃผ๋ฌธ ํ์ฉ ์ฌ๋ถ์
๋๋ค. ๊ธฐ๋ณธ๊ฐ์ ์์ฅ๊ฐ ์ฐจ๋จ(๊ฐ๊ฒฉ์ ์ง์ ์ ํ๋ ์ง์ ๊ฐ LIMIT๋ง ํ์ฉ)์
๋๋ค. ์์ฅ๊ฐ๋ ์ฒด๊ฒฐ ๊ฐ๊ฒฉ์ด ์์๊ณผ ๋ค๋ฅด๊ฒ ๋ถ๋ฆฌํด์ง ์ ์์ด ๋ณด์์ ์ผ๋ก ๊บผ ๋ก๋๋ค. ์์ฅ๊ฐ๊ฐ ํ์ํ๋ฉด "true"๋ก ์ผ์ธ์. ์ด ์ฐจ๋จ์ ์ ์ ์๋ ์ ์ฉ๋์ด, ์์ฅ๊ฐ๊ฐ ๊บผ์ ธ ์์ผ๋ฉด ์ง์ ๊ฐ ์ฃผ๋ฌธ์ ์ ์ ์ผ๋ก ์์ฅ๊ฐ๋ก ๋ฐ๊ฟ ์ ์์ต๋๋ค.
TOSSINVEST_MARKET_ORDER_BUFFER_PCT (๊ธฐ๋ณธ: 5)
์์ฅ๊ฐ ๋งค์์ ์์ ๊ธ์ก์ ๊ณ์ฐํ ๋ ํ์ฌ ํธ๊ฐ์ ๋ํ๋ ์ฌ์ ๋ฒํผ(%)์
๋๋ค. ๊ธ์ก ํ๋๋ฅผ ๋ณด์์ ์ผ๋ก(์กฐ๊ธ ๋ ํฌ๊ฒ ์ก์) ๊ฒ์ฌํ๊ธฐ ์ํ ๊ฐ์
๋๋ค. ์: 5๋ฉด ํธ๊ฐ๋ณด๋ค 5% ๋๊ฒ ์ก์ ํ๋๋ฅผ ๊ฒ์ฌํฉ๋๋ค. ์์ฅ๊ฐ๋ฅผ ์ผฐ์ ๋๋ง ์๋ฏธ๊ฐ ์์ต๋๋ค.
TOSSINVEST_LOCK_ACCOUNT (๊ธฐ๋ณธ: true)
์ฃผ๋ฌธ ์์ฒญ์ ๋ค์ด์จ accountSeq๊ฐ ๊ธฐ๋ณธ ๊ณ์ข(TOSSINVEST_ACCOUNT)์ ๋ค๋ฅด๋ฉด ์ฐจ๋จํฉ๋๋ค. ์ค์๋ก ๋ค๋ฅธ ๊ณ์ข์ ์ฃผ๋ฌธ์ด ๋๊ฐ๋ ๊ฒ์ ๋ง์ต๋๋ค. ์ฌ๋ฌ ๊ณ์ข๋ฅผ ์ค๊ฐ๋ฉฐ ์ฃผ๋ฌธํด์ผ ํ๋ค๋ฉด "false"๋ก ๋์ธ์.
TOSSINVEST_GUARD_STATE_PATH (๊ธฐ๋ณธ: OS ๋ฐ์ดํฐ ํด๋)
ํ๋ฃจ ํ๋ ์ง๊ณ๋ฅผ ์ ์ฅํ๋ ํ์ผ์ ๊ฒฝ๋ก์
๋๋ค. ๋ณดํต ์ ๊ฒฝ ์ธ ํ์๊ฐ ์์ต๋๋ค(๋ฏธ์ค์ ์ OS ๋ฐ์ดํฐ ํด๋์ tossinvest-mcp/guard-state.json). ๊ฐ์ ์ปดํจํฐ์์ ์ด MCP๋ฅผ ์ฌ๋ฌ ๊ฐ ๋์์ ๋์ด๋ค๋ฉด ์ธ์คํด์ค๋ง๋ค ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ์ง์ ํ์ธ์(์๋ "์ฌ๋ฌ ์ธ์คํด์ค ์ฌ์ฉ ์" ์ฐธ๊ณ ).
์ฒ์ ๊ฑฐ๋๋ฅผ ์ผค ๋ ๊ถ์ฅ ์ค์
๊ฑฐ๋๋ฅผ ์ฒ์ ์ผค ๋๋ ํ๋๋ฅผ ์๊ฒ ์ก์ ๋๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. ์๋๋ "๊ตญ๋ด ์ฃผ์๋ง, ์ ํด๋ ์ข ๋ชฉ๋ง, ์ง์ ๊ฐ๋ง, 1ํยทํ๋ฃจ ๊ธ์ก๊ณผ ๊ฑด์๋ฅผ ์ ํ"ํ ๋ณด์์ ์ธ ์์์ ๋๋ค.
{
"mcpServers": {
"tossinvest": {
"command": "npx",
"args": ["tossinvest-mcp"],
"env": {
"TOSSINVEST_API_KEY": "๋ฐ๊ธ๋ฐ์-API-Key",
"TOSSINVEST_SECRET_KEY": "๋ฐ๊ธ๋ฐ์-Secret-Key",
"TOSSINVEST_ACCOUNT": "1",
"TOSSINVEST_ENABLE_TRADING": "true",
"TOSSINVEST_ALLOWED_SYMBOLS": "005930",
"TOSSINVEST_MAX_ORDER_AMOUNT_KRW": "300000",
"TOSSINVEST_DAILY_MAX_ORDER_AMOUNT_KRW": "1000000",
"TOSSINVEST_DAILY_MAX_ORDER_COUNT": "5"
}
}
}
}
์ด ์์๋ ๋งค๋์ ์์ฅ๊ฐ๊ฐ ๊ธฐ๋ณธ๊ฐ(false)์ผ๋ก ๊บผ์ ธ ์์ด ์ผ์ฑ์ ์ ์ง์ ๊ฐ ๋งค์๋ง, 1ํ 30๋ง ์ยทํ๋ฃจ 100๋ง ์ยทํ๋ฃจ 5๊ฑด๊น์ง๋ง ํ์ฉํฉ๋๋ค. ์ต์ํด์ง ๋ค ์ข
๋ชฉ๊ณผ ํ๋๋ฅผ ์กฐ๊ธ์ฉ ๋ํ ๊ฐ์ธ์.
์ฐธ๊ณ ์ฌํญ:
- ํตํ๋ณ ํ๋: KRW ํ๋๋ง ์ค์ ํ๋ฉด USD ์ฃผ๋ฌธ์๋ ๋จ์ผ/์ผ์ผ ๊ธ์ก ํ๋๊ฐ ์ ์ฉ๋์ง ์์ต๋๋ค(๊ทธ ๋ฐ๋๋ ๋ง์ฐฌ๊ฐ์ง). ๋ ํตํ๋ฅผ ๋ชจ๋ ๊ฑฐ๋ํ๋ค๋ฉด ์์ชฝ ํ๋๋ฅผ ์ค์ ํ์ธ์.
- ์ผ์ผ ํ๋ ๋ฒ์: ์ด MCP๋ฅผ ํตํด ์ฑ๊ณตํ ์ฃผ๋ฌธ๋ง ๊ฐ๋ ์ํ ํ์ผ์ ๊ธฐ๋กยท์ง๊ณํฉ๋๋ค. ํ ์ค์ฑ ๋ฑ ๊ณ์ข์ ๋ค๋ฅธ ํ๋์ ํฌํจํ์ง ์์ต๋๋ค(๋จ์ผ ์ธ์ ยท๋จ์ผ MCP ์ ์ ).
- ์ฌ๋ฌ ์ธ์คํด์ค ์ฌ์ฉ ์: ์ผ์ผ ํ๋ ์ง๋ ฌํ๋ ๋จ์ผ ํ๋ก์ธ์ค ์์์๋ง ๋ณด์ฅ๋ฉ๋๋ค. ๊ฐ์ OS ์ฌ์ฉ์๋ก ์ด MCP๋ฅผ ์ฌ๋ฌ ๊ฐ ๋์์ ์คํํ๋ฉด ๊ธฐ๋ณธ ์ํ ํ์ผ ๊ฒฝ๋ก๊ฐ ๊ฐ์ ์ง๊ณ๊ฐ ์๋ก ๋ฎ์ด์จ์ ธ ํ๋๊ฐ ์ด๊ธ๋ ์ ์์ต๋๋ค. ์ธ์คํด์ค๋ง๋ค
TOSSINVEST_GUARD_STATE_PATH๋ฅผ ์๋ก ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ๋ถ๋ฆฌํด ์ง์ ํ์ธ์(์ธ์คํด์ค๋ณ ๋ ๋ฆฝ ํ๋). ํ ๊ณ์ข์ ํ๋๋ฅผ ์ฌ๋ฌ ์ธ์คํด์ค๊ฐ ๊ณต์ ํด์ผ ํ๋ค๋ฉด ์ธ์คํด์ค๋ฅผ ํ๋๋ก ํฉ์น๋ ๊ฒ์ ๊ถ์ฅํฉ๋๋ค. - ํ๋ฃจ ํ๋ ๊ณ์ฐ ๋ฐฉ์: ์์ฑ๊ณผ ์ ์ ์ฃผ๋ฌธ์ด ๋น์ผ ๊ฑด์/๊ธ์ก์ ์ง๊ณ๋ฉ๋๋ค(์ ์ ์ ์ ์ฃผ๋ฌธ 1๊ฑด์ผ๋ก ์นด์ดํธํ๊ณ , ๋์ฒด๋ ์์ฃผ๋ฌธ์ ์ฒด๊ฒฐ๋ ๊ธ์ก๋ง ๋ฐ์). ์ทจ์๋ ํ๋์ ํฌํจ๋์ง ์์ผ๋ฉฐ ํญ์ ํ์ฉ๋ฉ๋๋ค(๋ฆฌ์คํฌ ์ถ์ ๊ฒฝ๋ก๋ฅผ ๋ง์ง ์๊ธฐ ์ํจ). ํ๋ฃจ ๊ธ์ก ํ๋๊ฐ ์ผ์ ธ ์์ผ๋ฉด, ํ๋ ๊ฒ์ฌ ์ ๋น์ผ ๋ฏธ์ฒด๊ฒฐ ์ฃผ๋ฌธ์ ํ ์ค API๋ก ๋ค์ ์กฐํํด
์ฒด๊ฒฐ๊ธ์ก + ๋ฏธ์ฒด๊ฒฐ ์๋์ผ๋ก ๋งค๋ฒ ์ฌ๊ณ์ฐํ๊ณ , ์ฒด๊ฒฐยท์ทจ์ยท๊ฑฐ๋ถยท์ ์ ์๋ฃ๋ ์ฃผ๋ฌธ์ ์ค์ ์ฒด๊ฒฐ๊ธ์ก๋ง ํ์ ๋ฐ์ํฉ๋๋ค. ๋ฏธ์ฒด๊ฒฐ ์ฃผ๋ฌธ ์กฐํ์ ์คํจํ๋ฉด ๊ฒ์ฆ ๋ถ๊ฐ๋ก ๊ฐ์ฃผํด ์ ๊ท ์ฃผ๋ฌธ์ ์ฐจ๋จํฉ๋๋ค. (๊ฑด์ ํ๋๋ง ์ผ ๊ฒฝ์ฐ์๋ ์ด ์ฌ์กฐํ ์์ด ๋น์ผ ๊ธฐ๋ก ๊ฑด์๋ง์ผ๋ก ํ๋จํฉ๋๋ค.) - ์ถ์ ๋ถ๊ฐ ์ ์ฐจ๋จ: ๊ฐ๊ฒฉยทํธ๊ฐยทํตํ๋ฅผ ํ์ ํ ์ ์๊ฑฐ๋ ์ํ ํ์ผ์ ์ฝ์ ์ ์์ผ๋ฉด ์์ ์ ์ํด ์ฃผ๋ฌธ์ ์ฐจ๋จํฉ๋๋ค. ์ถ์ธก์ผ๋ก ์ฃผ๋ฌธ์ ์งํํ์ง ์์ต๋๋ค.
- ์๋ต ์ง์ฐ ๋ณดํธ: ํ ์ค API ์์ฒญ์ 20์ด ์์ ์๋ต์ด ์์ผ๋ฉด ์๋์ผ๋ก ์ค๋จ๋์ด, ๋คํธ์ํฌ ๋ฌธ์ ๋ก ๋๊ตฌ๊ฐ ๋ฌดํ์ ๋ฉ์ถ์ง ์์ต๋๋ค.
- clientOrderId: ์
๋ ฅ์ ์์ผ๋ฉด
tossinvest-mcp-YYYYMMDD-์ ๋๋ก ์๋ ์์ฑํฉ๋๋ค. ํ ์ค๋ ์ด ๊ฐ์ 10๋ถ๊ฐ ์ค๋ณต ์ฃผ๋ฌธ ๋ฐฉ์ง ํค๋ก ์ฌ์ฉํฉ๋๋ค.
ํ๊ฒฝ๋ณ์ ์ค๋ช
| ์ด๋ฆ | ํ์ | ์ค๋ช |
|---|---|---|
TOSSINVEST_API_KEY | ์ | ํ ์ค์ฆ๊ถ Open API ํ๋ฉด์ API Key |
TOSSINVEST_SECRET_KEY | ์ | ํ ์ค์ฆ๊ถ Open API ํ๋ฉด์ Secret Key |
TOSSINVEST_ACCOUNT | ์๋์ค | ๊ธฐ๋ณธ์ผ๋ก ์ฌ์ฉํ ํ ์ค์ฆ๊ถ accountSeq. ๋ฏธ์ค์ ์ 1 |
TOSSINVEST_BASE_URL | ์๋์ค | ๊ธฐ๋ณธ๊ฐ์ https://openapi.tossinvest.com |
TOSSINVEST_ENABLE_TRADING | ์๋์ค | true๋ก ์ค์ ํด์ผ ์ฃผ๋ฌธ ์์ฑ, ์ ์ , ์ทจ์ ๋๊ตฌ๊ฐ ๋ฑ๋ก๋ฉ๋๋ค |
๊ฑฐ๋ ๊ฐ๋๋ ์ผ ๊ด๋ จ ํ๊ฒฝ๋ณ์๋ ์์ ๊ฑฐ๋ ๊ฐ๋๋ ์ผ ํ๋ฅผ ์ฐธ๊ณ ํ์ธ์.
๋ฌธ์ ํด๊ฒฐ
node ๋ช
๋ น์ ์ฐพ์ ์ ์๋ค๊ณ ๋์ต๋๋ค
Node.js๊ฐ ์ค์น๋์ด ์์ง ์๊ฑฐ๋ PATH์ ๋ฑ๋ก๋์ง ์์ ์ํ์ ๋๋ค. https://nodejs.org ์์ LTS ๋ฒ์ ์ ์ค์นํ ๋ค ํฐ๋ฏธ๋์ ์๋ก ์ด๊ณ ๋ค์ ์๋ํ์ธ์.
ํ์ฉ๋์ง ์์ IP ์ฃผ์์
๋๋ค. ์ค๋ฅ๊ฐ ๋์ต๋๋ค
ํ์ฌ ์ปดํจํฐ์ ๊ณต์ธ IP๊ฐ ํ ์ค์ฆ๊ถ Open API ํ์ฉ IP ๋ชฉ๋ก์ ๋ฑ๋ก๋์ง ์์ ์ํ์ ๋๋ค.
์ด ๋ฌธ์์ ์ค์น๋ฐฉ๋ฒ > 3. ํ์ฉ IP ๋ฑ๋ก ๋จ๊ณ๋ฅผ ๋ค์ ํ์ธํด ํ์ฌ ๊ณต์ธ IP๋ฅผ ๋ฑ๋กํ์ธ์. ์ง, ํ์ฌ, ์นดํ, VPN ๋ฑ ๋คํธ์ํฌ๊ฐ ๋ฐ๋๋ฉด ๊ณต์ธ IP๊ฐ ๋ฐ๋ ์ ์์ต๋๋ค.
MCP ํด๋ผ์ด์ธํธ์ ๋๊ตฌ๊ฐ ๋ณด์ด์ง ์์ต๋๋ค
์ค์ JSON ๋ฌธ๋ฒ์ด ์ฌ๋ฐ๋ฅธ์ง ํ์ธํ๊ณ , MCP ํด๋ผ์ด์ธํธ๋ฅผ ์์ ํ ์ข
๋ฃํ ๋ค ๋ค์ ์คํํ์ธ์. TOSSINVEST_API_KEY์ TOSSINVEST_SECRET_KEY๊ฐ ๋น์ด ์์ผ๋ฉด ์๋ฒ๊ฐ ์์๋์ง ์์ต๋๋ค.
๊ณ์ข ์กฐํ๋ ๋๋๋ฐ ๋ณด์ ์ฃผ์ ์กฐํ๊ฐ ์คํจํฉ๋๋ค
๋ณด์ ์ฃผ์, ์ฃผ๋ฌธ, ๋งค์ ๊ฐ๋ฅ ๊ธ์ก ๊ฐ์ ๊ณ์ข ๊ด๋ จ ๊ธฐ๋ฅ์๋ accountSeq๊ฐ ํ์ํฉ๋๋ค. ์ด ํ๋ก๊ทธ๋จ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก 1์ ์ฌ์ฉํฉ๋๋ค. ๊ณ์ข ๋ชฉ๋ก ์กฐํ ๊ฒฐ๊ณผ์์ ๋ค๋ฅธ accountSeq๋ฅผ ์จ์ผ ํ๋ค๋ฉด TOSSINVEST_ACCOUNT๋ฅผ ๊ทธ ๊ฐ์ผ๋ก ๋ฐ๊พธ๊ณ ๋ค์ ์คํํ์ธ์.
์ฃผ๋ฌธ ๋๊ตฌ๊ฐ ๋ณด์ด์ง ์์ต๋๋ค
์ ์์
๋๋ค. ๊ธฐ๋ณธ๊ฐ์ผ๋ก๋ ์ฃผ๋ฌธ ๋๊ตฌ๊ฐ ๋ฑ๋ก๋์ง ์์ต๋๋ค. ์ค์ ๊ฑฐ๋๋ฅผ ํ์ฉํ๋ ค๋ฉด TOSSINVEST_ENABLE_TRADING์ true๋ก ์ค์ ํด์ผ ํฉ๋๋ค.
TOSSINVEST_ENABLE_TRADING์ true๋ก ์ค์ ํ๋๋ฐ๋ ์ฃผ๋ฌธ์ด ์ ๋ฉ๋๋ค
์ฃผ๋ฌธ ๋๊ตฌ๊ฐ ๋ณด์ด๋๋ผ๋ ๊ธฐ๋ณธ ์ค์ ์์๋ ์ฃผ๋ฌธ ์์ฒญ๋ง๋ค confirmOrderAction: true๊ฐ ํ์ํฉ๋๋ค.
AI์๊ฒ ์ฃผ๋ฌธ์ ์์ฒญํ ๋ ์๋์ฒ๋ผ ํ์ธ๊ฐ์ ๋ฃ์ผ๋ผ๊ณ ๋ช ์ํ์ธ์.
์ค์ ์ฃผ๋ฌธ ์คํ์ ํ์ธํ๋ฉฐ confirmOrderAction ๊ฐ์ true๋ก ๋ฃ์ด์ค.
์๋ํ ํ๊ฒฝ์ฒ๋ผ ๋งค๋ฒ ์ด ๊ฐ์ ๋ฃ๊ธฐ ์ด๋ ต๋ค๋ฉด TOSSINVEST_REQUIRE_ORDER_CONFIRMATION=false๋ก ํ์ธ ์๊ตฌ๋ง ๋ ์ ์์ต๋๋ค. ์ด๋๋ ๊ธ์กยท์ผ์ผยท๋งค๋ยท์์ฅ๊ฐ ๋ฑ ์ผ์ ธ ์๋ ๋ค๋ฅธ ๊ฐ๋๋ ์ผ์ ๊ณ์ ์ ์ฉ๋ฉ๋๋ค.
์ฃผ๋ฌธ ์ ์ ํ ๊ธฐ์กด orderId๋ก ์กฐํํ ๋ด์ฉ์ด ์ด์ํฉ๋๋ค
ํ ์ค์ฆ๊ถ ์ฃผ๋ฌธ ์ ์ ์ ์ orderId๋ฅผ ๋ฐํํฉ๋๋ค. ์ ์ ์๋ต์ ์ orderId๋ฅผ ์ฌ์ฉํ์ธ์.
"cannot reconcile open order ..." ์ค๋ฅ๋ก ๋ชจ๋ ์ฃผ๋ฌธ์ด ๋งํ๋๋ค
์ผ์ผ ๊ธ์ก ํ๋๊ฐ ์ผ์ง ๊ฒฝ์ฐ, ์ ๊ท ์ฃผ๋ฌธ ์ ์ ๋น์ผ ๋ฏธ์ฒด๊ฒฐ ์ฃผ๋ฌธ์ ํ์ฌ ์ํ๋ฅผ ํ ์ค API๋ก ์กฐํํด ํ๋๋ฅผ ์ฌ๊ณ์ฐํฉ๋๋ค. ์ด ์กฐํ๊ฐ ์คํจํ๋ฉด ๊ฒ์ฆ ๋ถ๊ฐ๋ก ๊ฐ์ฃผํด ์์ ํ๊ฒ ์ฃผ๋ฌธ์ ์ฐจ๋จํฉ๋๋ค(์ถ์ธก์ผ๋ก ์งํํ์ง ์์). ์ผ์์ ์ธ ๋คํธ์ํฌ/ํ๋(429) ๋ฌธ์ ๋ผ๋ฉด ์ ์ ํ ๋ค์ ์๋ํ๋ฉด ํด์๋ฉ๋๋ค. ๊ฐ๋ ์ํ ํ์ผ์ ๋ ์ด์ ์กฐํ๋์ง ์๋ ์ฃผ๋ฌธ์ด ๋จ์ ๊ณ์ ์ฐจ๋จ๋๋ค๋ฉด, ๊ฑฐ๋๊ฐ ์๋ ์๊ฐ์ ์ํ ํ์ผ(TOSSINVEST_GUARD_STATE_PATH ๊ฒฝ๋ก, ๋ฏธ์ค์ ์ OS ๋ฐ์ดํฐ ํด๋์ tossinvest-mcp/guard-state.json)์ ๋ฐฑ์
ํ ์ญ์ ํ๋ฉด ๋น์ผ ์ง๊ณ๊ฐ ์ด๊ธฐํ๋ฉ๋๋ค(์ด MCP๋ก ๋ฃ์ ๋น์ผ ์ฃผ๋ฌธ ์ง๊ณ๋ง ์ฌ๋ผ์ง๋ฉฐ, ์ค์ ์ฃผ๋ฌธ์๋ ์ํฅ์ด ์์ต๋๋ค).
์ฃผ๋ฌธ์ด Order blocked: ... ๋ฉ์์ง์ ํจ๊ป ๋งํ๋๋ค
๋๋ถ๋ถ ์ค์ ํ ๊ฐ๋๋ ์ผ์ ๊ฑธ๋ฆฐ ์๋๋ ์ฐจ๋จ์
๋๋ค. ๋ฉ์์ง์ ํค์๋๋ก ์์ธ์ ํ์ธํ์ธ์(์๋ ์ค๋ฅ ๋ฐ ์ฐจ๋จ ๋ฉ์์ง ๋ชฉ๋ก ์ฐธ๊ณ ). ์: ... amount ... exceeds the per-order limit๋ 1ํ ๊ธ์ก ํ๋ ์ด๊ณผ, daily ... limit reached๋ ํ๋ฃจ ํ๋ ๋๋ฌ, ... is not in TOSSINVEST_ALLOWED_SYMBOLS๋ ํ์ฉ๋ชฉ๋ก ๋ฐ ์ข
๋ชฉ์
๋๋ค. ํ๋๊ฐ ๋๋ฌด ๋นก๋นกํ๋ฉด ํด๋น ํ๊ฒฝ๋ณ์๋ฅผ ์กฐ์ ํ์ธ์.
๋งค๋(๋๋ ์์ฅ๊ฐ) ์ฃผ๋ฌธ์ด ์ ๋ฉ๋๋ค
๊ธฐ๋ณธ๊ฐ์์ ๋งค๋์ ์์ฅ๊ฐ๋ ๊บผ์ ธ ์์ต๋๋ค. ๋งค๋๋ TOSSINVEST_ALLOW_SELL_ORDERS=true, ์์ฅ๊ฐ๋ TOSSINVEST_ALLOW_MARKET_ORDERS=true๋ก ์ผ์ผ ํฉ๋๋ค. ์ด ์ฐจ๋จ์ ์ ์ ์๋ ์ ์ฉ๋์ด, ๋ ์ํ์์๋ ์ ์ ์ผ๋ก๋ ๋งค๋/์์ฅ๊ฐ ์ฃผ๋ฌธ์ ๋ง๋ค ์ ์์ต๋๋ค.
ํ๋ฃจ ํ๋๋ฅผ ์ ๋์ ๊ฒ ๊ฐ์๋ฐ ์ฃผ๋ฌธ์ด ๋งํ๋๋ค
ํ๋ฃจ ํ๋๋ ์ด MCP๋ก ๋ฃ์ ์ฃผ๋ฌธ๋ง ์ง๊ณํ๋ฉฐ, ์์ฑ๊ณผ ์ ์ ์ด ๋ชจ๋ ํฌํจ๋ฉ๋๋ค(์ ์ ์ ์ ์ฃผ๋ฌธ 1๊ฑด์ผ๋ก ์นด์ดํธ). ์ ์ ์ ์ฌ๋ฌ ๋ฒ ํ๋ค๋ฉด ๊ฑด์๊ฐ ๋น ๋ฅด๊ฒ ๋ ์ ์์ต๋๋ค. ๋ํ ๋ฏธ์ฒด๊ฒฐ ์ฃผ๋ฌธ์ ์ฒด๊ฒฐ๊ธ์ก + ๋ฏธ์ฒด๊ฒฐ ์๋์ผ๋ก ๋ณด์์ ์ผ๋ก ๊ณ์ฐ๋ฉ๋๋ค. ์์ธํ ๊ท์น์ ๊ฑฐ๋ ๊ฐ๋๋ ์ผ์ "ํ๋ฃจ ํ๋ ๊ณ์ฐ ๋ฐฉ์"์ ์ฐธ๊ณ ํ์ธ์.
์๋ต์ _guardStateWarning์ด ๋ถ์ด ์์ต๋๋ค
_guardStateWarning์ด ๋ณด์ด๋ฉด ์ฃผ๋ฌธ ์์ฒด๋ ์ด๋ฏธ ์ฑ๊ณตํ ๊ฒ์
๋๋ค. ๋ค๋ง ํ๋ฃจ ํ๋ ์ง๊ณ์ ํ์ํ ๋ด๋ถ ๊ธฐ๋ก์ด ์ผ๋ถ ๋๋ฝ๋์ ์ ์๋ค๋ ๊ฒฝ๊ณ ์
๋๋ค. ์ ๋ ๋ค์ ์ฃผ๋ฌธํ์ง ๋ง์ธ์(์ค๋ณต ์ฃผ๋ฌธ ์ํ). ๋ค์ด๊ฐ ์ฃผ๋ฌธ์ ์ฃผ๋ฌธ ๋ชฉ๋ก/์์ธ ์กฐํ๋ก ํ์ธํ ์ ์์ต๋๋ค.
์ค๋ฅ ๋ฐ ์ฐจ๋จ ๋ฉ์์ง ๋ชฉ๋ก
์ด ํ๋ก๊ทธ๋จ์ด ๋ผ ์ ์๋ ์ฃผ์ ๋ฉ์์ง์ ์๋ฏธ์
๋๋ค. Order blocked:๋ก ์์ํ๋ ๋ฉ์์ง๋ ์ฃผ๋ฌธ์ด ํ ์ค์ ์ ์ก๋๊ธฐ ์ ์ ์์ ์ ์ํด ๋ง์ ๊ฒ์
๋๋ค(์ค์ ์ฃผ๋ฌธ์ ๋๊ฐ์ง ์์์ต๋๋ค).
1) ์ฃผ๋ฌธ ์ฐจ๋จ(๊ฐ๋๋ ์ผ) ๋ฉ์์ง โ Order blocked: ...
| ๋ฉ์์ง ํค์๋ | ์๋ฏธ | ํด๊ฒฐ ๋ฐฉ๋ฒ |
|---|---|---|
confirmOrderAction=true is required | ์ฃผ๋ฌธ ํ์ธ๊ฐ ๋๋ฝ | ์์ฒญ์ confirmOrderAction: true ์ถ๊ฐ(๋๋ TOSSINVEST_REQUIRE_ORDER_CONFIRMATION=false) |
account is locked to TOSSINVEST_ACCOUNT (...) | ์ ๊ธด ๊ธฐ๋ณธ ๊ณ์ข์ ๋ค๋ฅธ ๊ณ์ข๋ก ์ฃผ๋ฌธ | ๊ธฐ๋ณธ ๊ณ์ข๋ก ์ฃผ๋ฌธํ๊ฑฐ๋ TOSSINVEST_LOCK_ACCOUNT=false |
sell orders are disabled | ๋งค๋๊ฐ ๊บผ์ ธ ์์ | TOSSINVEST_ALLOW_SELL_ORDERS=true |
market orders are disabled | ์์ฅ๊ฐ๊ฐ ๊บผ์ ธ ์์ | TOSSINVEST_ALLOW_MARKET_ORDERS=true |
... is not in TOSSINVEST_ALLOWED_SYMBOLS | ํ์ฉ๋ชฉ๋ก ๋ฐ ์ข ๋ชฉ | ํ์ฉ๋ชฉ๋ก์ ์ถ๊ฐํ๊ฑฐ๋ ์ข ๋ชฉ ๋ณ๊ฒฝ |
estimated amount ... exceeds the per-order limit | 1ํ ์ฃผ๋ฌธ ๊ธ์ก ํ๋ ์ด๊ณผ | ์๋/๊ฐ๊ฒฉ์ ์ค์ด๊ฑฐ๋ ํ๋๋ฅผ ์ฌ๋ฆผ |
daily order count limit reached (n/m) | ํ๋ฃจ ์ฃผ๋ฌธ ๊ฑด์ ํ๋ ๋๋ฌ | ๋ค์ ๋ (KST) ์ด๊ธฐํ๊น์ง ๋๊ธฐํ๊ฑฐ๋ ํ๋ ์ํฅ |
daily KRW/USD amount limit reached | ํ๋ฃจ ๋์ ๊ธ์ก ํ๋ ๋๋ฌ | ์์ ๋์ผ |
๊ตญ๋ด ์ฃผ์ ์ฃผ๋ฌธ ์ ์ ์ ์๋(quantity) ์ ์ ์ด ํ์ | KR ์ ์ ์ ์๋ ๋๋ฝ | quantity๋ฅผ ๋ช
์ |
๋ฏธ๊ตญ ์ฃผ์ ์ฃผ๋ฌธ ์ ์ ์ ์๋(quantity) ์ ์ ์ ์ง์ํ์ง ์์ผ๋ฉฐ | US ์ ์ ์ ์๋ ์ ๋ฌ | quantity๋ฅผ ๋นผ๊ณ price๋ง ์
๋ ฅ |
์์ฅ๊ฐ(MARKET) ์ฃผ๋ฌธ ์ ์ ์๋ ๊ฐ๊ฒฉ(price)์ ์ ๋ฌํ ์ ์์ต๋๋ค | ์์ฅ๊ฐ ์ ์ ์ ๊ฐ๊ฒฉ ์ ๋ฌ | price๋ฅผ ๋นผ๊ณ ์ ์ |
์ง์ ๊ฐ(LIMIT) ์ฃผ๋ฌธ ์ ์ ์๋ ๊ฐ๊ฒฉ(price)์ด ํ์ | ์ง์ ๊ฐ ์ ์ ๊ฐ๊ฒฉ ํ์ธ ๋ถ๊ฐ | price๋ฅผ ๋ช
์ |
cannot determine the currency/order type/side/symbol of order ... | ์ ์ ๋์ ์ฃผ๋ฌธ ์ ๋ณด ํ์ธ ๋ถ๊ฐ | orderId๊ฐ ๋ง๋์ง ํ์ธํ๊ณ ์ ์ ํ ์ฌ์๋(์ถ์ธก์ผ๋ก ์งํํ์ง ์์) |
cannot estimate ... amount / best ask/bid unavailable / did not report a recognized currency / could not read a recognized currency | ๊ฐ๊ฒฉยทํธ๊ฐยทํตํ๋ฅผ ํ์ ํ ์ ์์ | ์ฅ์ค ํธ๊ฐ๊ฐ ์๋์ง ํ์ธ ํ ์ฌ์๋(ํนํ ์์ฅ๊ฐ๋ ํธ๊ฐ ํ์) |
cannot reconcile open order ... against the daily limit | ๋ฏธ์ฒด๊ฒฐ ์ฃผ๋ฌธ ์ํ ์กฐํ ์คํจ | ์ "cannot reconcile open order" ํญ๋ชฉ ์ฐธ๊ณ |
cannot read guard state file / is not valid JSON / must contain a JSON array | ์ํ ํ์ผ ์์/์ฝ๊ธฐ ์คํจ | ์ํ ํ์ผ์ ๋ฐฑ์ ํ ์ญ์ (์ reconcile ํญ๋ชฉ์ ๊ฒฝ๋ก ์ฐธ๊ณ ) |
2) ํ ์ค API ์ค๋ฅ (์๋ต ์ฝ๋/์ํ)
| ๋ฉ์์ง/์ฝ๋ | ์๋ฏธ | ํด๊ฒฐ ๋ฐฉ๋ฒ |
|---|---|---|
ํ์ฉ๋์ง ์์ IP ์ฃผ์์
๋๋ค. | ๊ณต์ธ IP ๋ฏธ๋ฑ๋ก | ์ค์น 3๋จ๊ณ๋๋ก ํ์ฌ ๊ณต์ธ IP๋ฅผ ํ์ฉ ๋ชฉ๋ก์ ๋ฑ๋ก |
HTTP 401 / invalid-token | ํค ์ค๋ฅ ๋๋ ๋นํ์ฑ | API Key/Secret Key์ ํค ํ์ฑ ์ํ ํ์ธ |
| HTTP 429 | ์์ฒญ ํ๋ ์ด๊ณผ | ์ ์ ํ ์ฌ์๋(ํ๋ก๊ทธ๋จ์ด ์ผ๋ถ ์๋ ์ฌ์๋ํจ) |
account-header-required | ๊ณ์ข ์ ๋ณด ํ์ | TOSSINVEST_ACCOUNT ๋๋ ์์ฒญ์ accountSeq ํ์ธ |
confirm-high-value-required | ๊ณ ์ก ์ฃผ๋ฌธ ํ์ธ ํ์ | ๊ธ์ก ์ฌํ์ธ ํ ์ฃผ๋ฌธ ์
๋ ฅ์ confirmHighValueOrder: true |
3) ๋คํธ์ํฌ/์ฐ๊ฒฐ ์ค๋ฅ
| ๋ฉ์์ง | ์๋ฏธ | ํด๊ฒฐ ๋ฐฉ๋ฒ |
|---|---|---|
Failed to connect to Toss Open API. | ์ฐ๊ฒฐ ์คํจ | ์ธํฐ๋ท, DNS, VPN, ๋ฐฉํ๋ฒฝ, TOSSINVEST_BASE_URL ํ์ธ |
Toss Open API request timed out after 20s. | ์๋ต ์ง์ฐ(20์ด ์ด๊ณผ) | ๋คํธ์ํฌ ์ํ ํ์ธ ํ ์ฌ์๋ |
Invalid OAuth token response / OAuth token request failed (...) | ํ ํฐ ๋ฐ๊ธ ์คํจ | ํค๋ฅผ ํ์ธํ๊ณ ์ ์ ํ ์ฌ์๋ |
4) ์ฃผ๋ฌธ์ ์ฑ๊ณตํ์ง๋ง ๊ฒฝ๊ณ ๊ฐ ๋ถ์ ๊ฒฝ์ฐ
์๋ต์ _guardStateWarning ํ๋๊ฐ ์์ผ๋ฉด ์ฃผ๋ฌธ์ ์ ์์ ์ผ๋ก ์ ์กยท์ ์๋ ๊ฒ์
๋๋ค. ๋ด๋ถ ํ๋ ์ง๊ณ ๊ธฐ๋ก๋ง ์ผ๋ถ ๋๋ฝ๋์ ์ ์๋ค๋ ๊ฒฝ๊ณ ์ด๋ฏ๋ก, ๋ค์ ์ฃผ๋ฌธํ์ง ๋ง๊ณ ์ฃผ๋ฌธ ๋ชฉ๋ก์์ ์ํ๋ฅผ ํ์ธํ์ธ์.
๋ณ๊ฒฝ ์ฌํญ (0.2.0)
0.2.0์ ๊ฑฐ๋ ์์ ์ฅ์น๋ฅผ ๋ํญ ๊ฐํํ ๋ฒ์ ์ ๋๋ค. ์ฃผ์ ๋ณ๊ฒฝ์ :
TOSSINVEST_YOLO_TRADING์ต์ ์ ๊ฑฐ โ ์ธ๋ถํ๋ ๊ฑฐ๋ ๊ฐ๋๋ ์ผ๋ก ๋์ฒดํ์ต๋๋ค. 1ํ/ํ๋ฃจ ๊ธ์ก ํ๋, ํ๋ฃจ ๊ฑด์ ํ๋, ์ข ๋ชฉ ํ์ฉ๋ชฉ๋ก, ๋งค๋ยท์์ฅ๊ฐ ์ฐจ๋จ, ๊ณ์ข ์ ๊ธ์ ๊ฐ๊ฐ ์ผค ์ ์์ต๋๋ค. (์๊ฑฐ๋ ๊ฐ๋๋ ์ผ์ฐธ๊ณ )- ์ฃผ๋ฌธ ํ์ธ๊ฐ ์ฒด๊ณ: ๊ธฐ๋ณธ๊ฐ์์ ๋ชจ๋ ์ฃผ๋ฌธ์
confirmOrderAction: true๋ฅผ ์๊ตฌํด, AI๊ฐ ์ค์๋ก ์ฃผ๋ฌธ์ ๋ฃ๋ ๊ฒ์ ๋ง์ต๋๋ค. - ํ๋ฃจ ํ๋๋ฅผ ์ค์ ์ฃผ๋ฌธ ์ํ๋ก ์ฌ๊ณ์ฐ: ๋ฏธ์ฒด๊ฒฐ ์ฃผ๋ฌธ์ ํ ์ค์ ๋ค์ ์กฐํํด ์ ์ ยท์ทจ์๊น์ง ์ ํํ ๋ฐ์ํฉ๋๋ค.
- ์ฃผ๋ฌธ ์ ์ ๊ท์น ๊ฐ์ : ์ ์ ์ ์์ฃผ๋ฌธ์ ๋์ฒดํด ์
orderId๋ฅผ ๋๋ ค์ค๋ค๋ ์ ์ ๋ฐ์ํ๊ณ , ๊ตญ๋ด/๋ฏธ๊ตญยท์ง์ ๊ฐ/์์ฅ๊ฐ๋ณ ์ ๋ ฅ ๊ท์น์ ์ฃผ๋ฌธ ์ ์ ๊ฒ์ฌํฉ๋๋ค. ์ ์ ๋ ์์ฑ๊ณผ ๋์ผํ๊ฒ ๋งค๋ยท์์ฅ๊ฐ ์ฐจ๋จ, ์ข ๋ชฉ ํ์ฉ๋ชฉ๋ก, ๊ธ์กยท๊ฑด์ ํ๋์ ์ ์ฉ์ ๋ฐ์ต๋๋ค(์ ์ ์ผ๋ก ๊ฐ๋๋ ์ผ์ ์ฐํํ ์ ์์). - ์์ ์ฑ ๊ฐ์ : API ์์ฒญ 20์ด ํ์์์, OAuth ํ ํฐ ์ค๋ฅ ๋ฉ์์ง ๊ฐ์ , ์ฃผ๋ฌธ ๊ธฐ๋ก ์คํจ ์์๋ ์ฃผ๋ฌธ ์ฑ๊ณต ์๋ต์ ๋ณด์กดํ๊ณ ๊ฒฝ๊ณ ๋ง ์ฒจ๋ถ.
์์ธํ ๋ด๋ถ ๋ณ๊ฒฝ ์ด๋ ฅ์ git ์ปค๋ฐ ๊ธฐ๋ก์ ์ฐธ๊ณ ํ์ธ์.
๊ฐ๋ฐ์์ฉ
์ด ์ ์ฅ์๋ฅผ ์ง์ ๋ฐ์ ๊ฐ๋ฐํ๋ ค๋ฉด:
npm install
npm run typecheck
npm test
npm run build
์ค์ ์ฃผ๋ฌธ ์์ด ์ฃผ๋ฌธ ๋๊ตฌ ํ๋ฆ์ mock ์๋ฒ๋ก ํ ์คํธํ๋ ค๋ฉด:
npm run smoke:trading:mock
๋ฉด์ฑ ์กฐํญ
์ด ํ๋ก๊ทธ๋จ์ ํ ์ค์ฆ๊ถ Open API๋ฅผ MCP์์ ์ฌ์ฉํ ์ ์๊ฒ ์ฐ๊ฒฐํด ์ฃผ๋ ๋๊ตฌ์ ๋๋ค. ํฌ์ ์๋ฌธ, ํฌ์ ๊ถ์ , ๋งค๋งค ์ถ์ฒ, ์์ต ๋ณด์ฅ ์๋น์ค๋ฅผ ์ ๊ณตํ์ง ์์ต๋๋ค.
์ด ํ๋ก๊ทธ๋จ์ ์ฌ์ฉํด ์กฐํํ ์ ๋ณด, AI๊ฐ ์์ฑํ ๋ต๋ณ, AI๊ฐ ์ ์ํ ์ฃผ๋ฌธ ๋ด์ฉ์ ๋ถ์ ํํ๊ฑฐ๋ ์ง์ฐ๋๊ฑฐ๋ ์ฌ์ฉ์์ ์๋์ ๋ค๋ฅผ ์ ์์ต๋๋ค. ๋ชจ๋ ํฌ์ ํ๋จ๊ณผ ์ฃผ๋ฌธ ์คํ ๋ฐ ํ๋ก๊ทธ๋จ ์ฌ์ฉ์ ์ต์ข ์ฑ ์์ ์ฌ์ฉ์์๊ฒ ์์ต๋๋ค.
๊ฑฐ๋ ๊ธฐ๋ฅ์ ์ผ๊ณ ์ฃผ๋ฌธ ์์ฑ, ์ ์ , ์ทจ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ ์ค์ ๊ณ์ข์ ์ค์ ์ฃผ๋ฌธ์ด ์ ์ก๋ ์ ์์ต๋๋ค. ์ฃผ๋ฌธ ์ ์ข ๋ชฉ, ๊ฐ๊ฒฉ, ์๋, ์ฃผ๋ฌธ ์ ํ, ๊ณ์ข๋ฅผ ๋ฐ๋์ ์ง์ ํ์ธํ์ธ์.
ํ์ฌ ์ด ํ๋ก์ ํธ๋ ๊ฐ๋ฐ์ค์ธ ํ๋ก์ ํธ๋ก์, ์ด ํ๋ก์ ํธ์ ๊ฐ๋ฐ์์ ๋ฐฐํฌ์๋ ์ด ํ๋ก๊ทธ๋จ ์ฌ์ฉ์ผ๋ก ๋ฐ์ํ๋ ํฌ์ ์์ค, ์ฃผ๋ฌธ ์ค์, API ์ฅ์ , ๋ฐ์ดํฐ ์ค๋ฅ, ํด๋ผ์ด์ธํธ ์ค์๋, AI ์๋ต ์ค๋ฅ ๋ฑ์ ๋ํด ์ฑ ์์ง์ง ์์ต๋๋ค.
๋ผ์ด์ ์ค
MIT License
ํ ์ค์ฆ๊ถ Open API ๊ณต์ ๋ฌธ์: https://developers.tossinvest.com/docs