AI 에이전트에 주문 권한을 열면 — MCP 트레이딩에서 무엇을 조심해야 하나
지난 글에서 "AI에게 매매 판단까지 맡기면 안 되는 이유"를 정리했다. 그 글은 원론이었다. 그런데 이 글을 준비하며 찾아보니, 원론을 이야기하는 사이에 현실 쪽에서 문이 이미 열려 있었다. 여러 증권사와 거래 플랫폼이 AI 에이전트에게 시세·잔고 조회를 넘어 주문 실행 권한까지 여는 서비스를 공개 발표했다. 이 글은 그 상황을 정리하고, 그 문 앞에서 무엇을 조심해야 하는지를 따져본 기록이다.
이 글의 범위
이 글은 특정 서비스를 권하거나 "어떤 게 제일 좋다"를 가리는 글이 아니다. 어떤 서비스도 추천하지 않고, 가입·이용을 권유하지 않는다. 다루는 것은 두 가지뿐이다 — 조회용 MCP와 주문 실행 MCP가 구조적으로 어떻게 다른가, 그리고 주문 권한을 여는 쪽이 남겨야 할 안전장치는 무엇인가.
또 하나 못박아둔다. 아래에 언급하는 서비스와 기능은 필자가 2026년 7월 29일 시점에 공개된 발표·보도 자료에서 확인한 범위이며, 발표되지 않은 기능을 추정하지 않았다. 서비스는 계속 바뀌므로 실제 조건은 각자 공식 안내로 다시 확인해야 한다. 이 조직 자체는 AI에게 매매 판단이나 주문 권한을 넘긴 적이 없고, 이 글도 그 경험담이 아니라 바깥에서 벌어진 일에 대한 관찰이다.
조회용 MCP와 주문 실행 MCP는 무엇이 다른가
MCP(Model Context Protocol)는 AI 모델이 외부 도구·데이터에 접근하는 방식을 표준화한 규격이다. 이전 글에서는 주로 "AI가 증권사 API 문서를 스스로 읽고 코드를 짜게 하는" 용도로 다뤘다. 그때 다룬 MCP 서버들은 대부분 문서를 검색하거나 시세·잔고를 읽어오는 쪽이었다.
조회용 MCP와 주문 실행 MCP의 차이는 "기능이 하나 더 있다"가 아니라 되돌릴 수 있느냐 없느냐다. 조회 도구가 틀린 값을 주면 결과는 잘못된 답변이고, 사람이 읽고 이상하다고 판단하면 거기서 끝난다. 주문 도구가 틀린 값을 받으면 결과는 체결이고, 체결은 취소가 아니라 반대매매로만 되돌릴 수 있다. 그 사이에 손실이 확정된다.
권한 관점에서 정리하면 이렇다.
- 조회 권한: 실패의 비용이 "잘못된 정보". 사람이 중간에서 걸러낼 시간이 있다.
- 주문 권한: 실패의 비용이 "체결된 거래". 걸러낼 시간이 아예 없거나, 알림을 본 시점엔 이미 끝나 있다.
- 조회 권한은 잘못 열려도 정보 유출 위험에 그치지만, 주문 권한은 잘못 열리면 자금 자체가 움직인다.
같은 프로토콜, 같은 설치 방식, 같은 대화창이라 겉보기엔 연속된 기능처럼 느껴진다. 그런데 실패했을 때 되돌릴 수 있는지를 기준으로 보면 완전히 다른 두 물건이다. 이 착시가 이 글에서 가장 경계하는 지점이다.
지금 어디까지 열렸나 — 공개 발표 기준
아래는 필자가 2026년 7월 29일에 공개 자료로 확인한 범위다. 순위나 추천이 아니라 "이런 상태다"의 나열이며, 각 서비스의 상세 조건은 공식 안내를 봐야 한다.
- 국내에서는 다올투자증권이 생성형 AI 대화창에서 시세·보유종목·계좌잔고·주문가능금액 조회부터 주문 요청까지 하는 'MCP 트레이딩'을 발표하고 2026년 7월 27일 사전예약을 시작했다. 보도 기준 2026년 8월 서비스 개시 예정이고, ChatGPT·Claude 같은 클라이언트와 CLI 터미널을 지원한다고 안내됐다.
- 해외에서는 로빈후드가 2026년 5월 말 미국 거주 고객 대상으로 AI 에이전트를 연결하는 별도의 '에이전틱 계좌'를 열었다. 기존 계좌와 분리된 계좌에 전용 예산을 배정하고, 거래마다 푸시 알림을 보내며, 사용자가 언제든 에이전트 연결을 끊을 수 있는 구조로 발표됐다.
- cTrader 플랫폼을 만드는 Spotware는 주문 실행과 포지션 관리가 가능한 공식 MCP 서버를 공개했고, 웹불도 자연어로 시세 조회와 주문 입력을 하는 MCP 서버를 내놨다는 보도가 2026년 6월에 나왔다.
- 반대 방향도 있다. IG 그룹은 MCP 연동을 읽기 전용으로 제한하고 AI 계층을 통한 주문 실행을 허용하지 않는다고 밝혔다. 같은 프로토콜을 두고 실행까지 열 것인지 조회에서 끊을 것인지가 회사마다 갈리고 있다는 뜻이다.
- 규제 쪽에서도 신호가 나왔다. 미국 FINRA의 2026년 규제감독 보고서는 실행 권한을 가진 AI 연동에 대해 거버넌스 체계가 필요하다고 짚었고, 감독 책임을 고객이 아니라 서비스를 운영하는 증권사 쪽에 두는 방향으로 언급됐다.
정리하면, "AI가 대신 주문한다"는 건 더 이상 개발자 실험실 이야기가 아니다. 동시에 업계가 한 방향으로 합의한 것도 아니다 — 읽기에서 끊는 쪽과 실행까지 여는 쪽이 같은 시기에 공존하고 있고, 규제기관은 이제 막 프레임을 잡는 중이다. 이럴 때 이용자가 기댈 수 있는 건 업계 표준이 아니라 자기 쪽 설계뿐이다.
자연어 주문의 위험 — 오해·환각·되돌릴 수 없음
"삼백만 원어치 정리해줘" 같은 문장이 주문이 되는 구조에서 무엇이 틀어질 수 있는지 세 갈래로 봤다.
오해. 자연어는 원래 모호하다. "좀 줄여줘"가 절반인지 전량인지, "아까 그거"가 어느 종목인지, "시장가로 빨리"가 얼마까지 감수하겠다는 뜻인지는 문장에 없다. API 파라미터는 모호할 수 없지만 사람 말은 모호할 수 있고, 그 간극을 모델이 자기 판단으로 메운다. 사람끼리라면 "그게 무슨 뜻이죠?"로 끝날 오해가 여기서는 체결로 끝난다.
환각. 지난 글에서 정리했듯 AI는 근거가 부족해도 그럴듯한 문장을 만들어낸다. 코드 생성에서 이 문제는 "실행하면 에러가 나서" 비교적 빨리 드러났다. 주문 도구에서는 다르다. 존재하지 않는 근거로 만들어진 판단도 파라미터만 유효하면 정상적으로 실행된다. 틀렸다는 사실이 드러나는 시점이 실행 전이 아니라 실행 후로 밀린다는 게 핵심이다.
되돌릴 수 없음. 여기에 하나 더 얹히는 게 프롬프트 주입 위험이다. 에이전트가 뉴스나 게시글 같은 외부 텍스트를 읽어 판단하는 구조라면, 그 텍스트 안에 에이전트를 향한 지시문이 섞여 들어올 수 있다. 조회만 하는 에이전트에서 이건 "이상한 요약"으로 끝나지만, 주문 권한이 붙어 있으면 외부에서 흘려보낸 문장이 실제 거래로 이어지는 경로가 생긴다. 키·설정값을 코드에서 분리해 관리하는 문제가 "유출되면 남이 내 계좌를 조회한다"였다면, 여기서는 "유출되거나 조작되면 남이 내 계좌로 주문한다"로 결과가 한 단계 올라간다.
권한을 나눠 주는 설계 — 읽기, 모의, 실주문을 분리한다
그래서 이 문제를 "AI를 믿을 것인가"로 두면 답이 안 나온다고 본다. 믿음의 문제가 아니라 권한 설계의 문제로 두는 편이 낫다. 이 조직이 코드 생성에서 쓰는 원칙도 같다 — 기획·개발·검증 역할을 나눈 것처럼, 도구 권한도 한 덩어리로 주지 않는다.
최소한 세 층으로 나눠 생각할 수 있다.
- 읽기 층: 시세·잔고·주문가능금액 조회. 실패해도 되돌릴 수 있으므로 여기까지는 비교적 넓게 열어도 된다.
- 모의 층: 주문 형식과 파라미터를 검증하되 실제 체결은 일어나지 않는 경로. 새 프롬프트·새 전략은 여기서 충분히 돌린 뒤에 다음 층을 본다.
- 실주문 층: 실제 체결이 일어나는 경로. 별도 자격 증명, 별도 계좌, 별도 승인 절차를 요구한다.
핵심은 같은 자격 증명 하나로 세 층이 다 열리지 않게 하는 것이다. 아래는 개념만 보여주는 generic 의사코드다.
python 코드 보기
# 권한을 계층으로 쪼개고, 실주문 층은 별도 자격 증명으로만 열리게 한다
TOOL_TIERS = {
"read": {"quote", "balance", "orderable_cash"},
"paper": {"validate_order", "submit_paper_order"},
"live": {"submit_live_order", "cancel_live_order"},
}
def resolve_tools(session):
tools = set(TOOL_TIERS["read"])
if session.paper_enabled:
tools |= TOOL_TIERS["paper"]
# 실주문 층은 별도 자격 증명 + 명시적 활성화가 둘 다 있을 때만 붙인다
if session.live_credential_present and session.live_explicitly_enabled:
tools |= TOOL_TIERS["live"]
return tools여기서 중요한 건 live 층이 조건 두 개를 모두 요구한다는 점이다. 자격 증명이 있다는 이유만으로 실주문 도구가 자동으로 붙으면, 사용자가 "조회만 해보려고" 붙인 연결에서도 주문 도구가 노출된다. 조건을 하나로 두면 실수 한 번이 곧바로 실주문 경로를 연다.
한 가지 덧붙이자면, 로빈후드가 발표한 구조에서 별도 계좌에 전용 예산을 배정한다는 부분은 이 계층 분리를 계좌 단위로 구현한 사례로 읽힌다. 어느 쪽이든 원리는 같다 — 에이전트가 최악의 경우 움직일 수 있는 금액의 상한을, 에이전트가 아니라 사람이 미리 정해둔다. 이건 실전 투입 전 먼저 만든 안전장치에서 "예산 한도"를 제일 먼저 만든 이유와 정확히 같은 발상이다.
사람의 최종 승인 게이트를 남기는 법
계층 분리까지 해도 마지막 질문이 남는다. 실주문 층이 열린 상태에서, 실제 체결 직전에 사람이 개입할 지점이 있느냐다.
승인 게이트가 실제로 작동하려면 몇 가지 조건이 필요하다고 본다.
- 승인은 실행 전이어야 한다. 체결 뒤에 오는 알림은 승인이 아니라 통보다. 통보도 없는 것보다는 낫지만, 되돌릴 수 없는 행동에 대해서는 사후 통보가 안전장치 역할을 하지 못한다.
- 승인 화면에는 모델이 만든 요약이 아니라 실제로 전송될 파라미터가 그대로 떠야 한다. 종목, 방향, 수량, 가격 유형, 예상 체결 금액. 모델이 요약한 문장을 승인하면 모델의 오해까지 함께 승인하게 된다.
- 기본값은 거부여야 한다. 응답이 없거나 시간이 지나면 주문이 나가는 게 아니라 폐기되는 쪽이 안전하다.
- 승인 요청이 잦아지면 사람은 반드시 대충 누른다. 그래서 "모든 주문에 승인"보다, 사전에 합의한 한도 안쪽은 자동으로 두고 한도를 벗어날 때만 승인을 요구하는 편이 실제로는 더 잘 지켜진다. 다만 그 한도를 정하는 주체는 사람이어야 한다.
python 코드 보기
def gate(order, policy):
# 사전에 사람이 정한 한도 안쪽만 통과, 나머지는 사람 확인으로 넘긴다
if not policy.allows(order.symbol_universe, order.side, order.notional):
return require_human_approval(order, timeout_action="reject")
if order.notional > policy.auto_limit:
return require_human_approval(order, timeout_action="reject")
return approve(order)timeout_action="reject"가 이 코드에서 제일 중요한 한 줄이다. 사람이 자리를 비웠을 때 무슨 일이 일어나는지가 안전장치의 성격을 결정한다. 응답이 없을 때 통과시키는 게이트는 바쁜 날엔 게이트가 아니다.
자주 하는 실수
- "조회만 붙였다"고 생각했는데 실행 도구까지 붙어 있는 경우. 연결 후 에이전트가 실제로 어떤 도구 목록을 받았는지 한 번은 직접 확인해야 한다. 설치가 한 줄로 끝날수록 이 확인을 건너뛰기 쉽다.
- 모의 환경 검증을 건너뛰는 것. 새 프롬프트나 새 전략을 실주문 경로에서 처음 돌리는 건, 검증 안 한 코드를 실계좌에 붙이는 것과 같다.
- 알림을 승인으로 착각하는 것. 거래별 푸시 알림은 사후 통보다. 실행 전 확인 절차가 따로 있는지를 봐야 한다.
- "AI가 알아서 하니까 안 봐도 된다"는 방향으로 굳어지는 것. 자동화의 목적이 감시를 줄이는 것이 되면, 문제가 생겼을 때 알아채는 시점이 계속 뒤로 밀린다.
오늘의 정리
- 조회용 MCP와 주문 실행 MCP는 기능 하나 차이가 아니라 되돌릴 수 있느냐 없느냐의 차이다 — 조회 실패의 비용은 잘못된 정보지만, 주문 실패의 비용은 체결된 거래다.
- 2026년 7월 말 기준으로 국내외 여러 증권사·플랫폼이 AI 에이전트에 주문 실행 권한을 여는 서비스를 공개 발표했고, 동시에 읽기 전용으로 제한하는 회사도 있다 — 업계가 한 방향으로 합의한 상태가 아니다.
- 자연어 주문의 위험은 오해(모호한 말을 모델이 자기 판단으로 메움), 환각(근거 없는 판단도 파라미터만 맞으면 실행됨), 되돌릴 수 없음(프롬프트 주입이 곧 거래로 이어지는 경로) 세 갈래다.
- 권한은 읽기·모의·실주문 세 층으로 쪼개고, 실주문 층은 별도 자격 증명과 명시적 활성화가 둘 다 있을 때만 열리게 하는 편이 안전하다. 최악의 경우 움직일 수 있는 금액의 상한은 사람이 미리 정한다.
- 승인 게이트는 실행 전이어야 하고, 모델의 요약이 아니라 실제 전송될 파라미터를 보여줘야 하며, 응답이 없을 때 통과가 아니라 거부로 떨어져야 한다.
이 글은 공개된 발표·보도 자료를 근거로 2026년 7월 29일 시점에 확인한 범위를 정리한 것이며, 언급된 서비스의 이용을 권유하거나 특정 제품을 추천·폄하하려는 것이 아닙니다. 발표되지 않은 기능은 다루지 않았고 서비스 조건은 변경될 수 있으므로 각 사 공식 안내를 확인하시기 바랍니다. 이 블로그의 익명화 원칙에 따라 필자의 실계좌·실키·서버 상세는 담고 있지 않으며, 매매 성과나 손익 수치도 다루지 않습니다. 투자 조언이 아니며 특정 종목이나 매매기법을 추천하지 않습니다. 수익을 보장하지 않으며, 투자 손실에 대한 책임은 투자자 본인에게 있습니다.