
Apify MCP 서버를 사용하여 Claude에 SEC 내부자 거래 도구 제공하는 방법
요약
Apify MCP 서버를 활용하여 Claude 에이전트가 SEC Form 4 내부자 거래 데이터를 실시간으로 조회할 수 있도록 연결하는 방법을 설명합니다. MCP 표준을 통해 AI가 추측 대신 실제 공시 서류를 기반으로 정확한 금융 데이터를 가져오는 가이드를 제공합니다.
핵심 포인트
- MCP를 통해 Claude가 외부 도구인 Apify Actor를 직접 호출 가능
- SEC Form 4 데이터를 활용해 내부자 거래의 실시간 정확도 확보
- 하드코딩 없이 구조화된 입력/출력으로 에이전트 기능 확장
- 에쿼티 리서치에 필요한 상세 거래 데이터(가격, 수량, 유형 등) 제공
AI 에이전트(AI agents)는 추론에는 능숙하지만 사실 관계에는 취약합니다. Claude에게 NVIDIA 내부자들이 올해 주식을 얼마나, 어떤 가격에 매도했는지 물어본다면, Claude는 몇 달 전의 오래된 학습 데이터나 단순히 지어낸 내용을 바탕으로 자신 있게 답변할 것입니다. 포지션을 움직이는 그 어떤 사항에 대해서도 "아마 맞을 것입니다"라는 답변은 충분하지 않습니다. 내부자 거래는 SEC Form 4에 기록되어 공공 기록으로 남는 사항이며, 에이전트는 이를 기억이 아닌 공시 서류(filing)로부터 직접 읽어야 합니다.
이 가이드에서 우리는 이 문제를 해결합니다. 우리는 Claude를 공식 Apify MCP 서버에 연결하고, SEC Form 4 내부자 공시를 읽는 단일 Actor를 노출하여, "내부자가 매수했는가, 매도했는가?"라는 질문을 추측이 아닌 기록 원본에 대한 실시간 조회로 전환합니다. 이 가이드를 마칠 때쯤이면 여러분은 Claude, Cursor 또는 모든 MCP 클라이언트가 대화 도중에 호출할 수 있는 작동하는 도구를 갖게 될 것이며, 실행 과정 중 어느 시점에 도구가 실행되고 무엇을 반환하는지 정확히 이해하게 될 것입니다.
아래의 모든 내용은 실제 출력값이 포함된 실제 설정입니다. 모의 응답(mocked responses)은 없습니다.
Apify MCP 서버란 무엇인가?
Model Context Protocol (MCP)는 AI 클라이언트가 외부 도구를 호출할 수 있게 해주는 개방형 표준입니다. Apify MCP 서버(https://mcp.apify.com)는 Apify 플랫폼 상에서 해당 표준을 구현하며, 이는 Apify Store에 있는 수천 개의 Actor 각각이 에이전트가 호출할 수 있는 도구가 된다는 것을 의미합니다.
왜 API 호출을 하드코딩하는 대신 MCP를 통해 Actor를 라우팅할까요?
• 에이전트가 언제 데이터를 가져와야 할지 결정합니다.
Claude는 대화를 읽고 자신이 가지고 있지 않은 사실을 알아차리면 스스로 도구를 호출합니다. 모든 질문에 대해 연결 코드(glue code)를 작성할 필요가 없습니다.
• 구조화된 입력 및 출력입니다.
MCP 서버는 Claude에게 Actor의 입력 스키마를 제공하여 모델이 매개변수를 올바르게 채우고 추론할 수 있는 깔끔한 데이터셋을 반환하게 합니다.
• 하나의 연결로 여러 도구를 사용합니다.
동일한 MCP 엔드포인트가 search-actors, fetch-actor-details, 그리고 call-actor를 노출하므로, 에이전트는 새로운 설정 없이 모든 Actor를 발견하고 실행할 수 있습니다.
• 인프라 구축 불필요합니다.
서버가 호스팅됩니다. 구성 파일에 몇 줄만 추가하면 끝입니다.
사용할 Actor
우리는 SEC Form 4 내부자 거래 스크래퍼를 노출할 것입니다. 티커(ticker) 또는 CIK를 제공하면, 각 내부자 거래가 하나의 구조화된 레코드로 반환됩니다: 내부자의 이름과 역할(임원, 이사, 10% 보유자), 거래 코드 및 유형(시장 매수, 시장 매도, 부여, 증여, 세금 원천징수), 주식 수, 주당 가격, 총 거래 가치, 거래 후 보유 주식 수, 내부자 지분에서 발생한 결과적인 백분율 변화, Rule 10b5-1 플랜에 따라 실행되었는지 여부, 신고일, 그리고 접근 번호입니다.
이 필드 세트는 에쿼티 리서치(equity-research) 또는 이벤트 기반 데스크가 내부자 활동을 읽는 데 정확히 필요한 정보입니다: 단순히 '누군가가 매도했다'가 아니라 누가, 몇 주를, 얼마에, 얼마나 큰 비중으로 처분했는지, 그리고 그것이 재량적 결정이었는지 아니면 사전 예약된 계획이었는지까지 말입니다.

1단계: Apify API 토큰 받기
Apify Console에 로그인한 후, Settings → Integrations를 열고 개인 API 토큰을 복사합니다. MCP 서버는 인증을 수행하고 Actor 실행 비용을 귀하의 계정으로 청구하기 위해 이 토큰을 사용합니다.
📌 참고: 토큰은 비밀 정보입니다. 클라이언트 설정(config)에만 보관하고, 프롬프트에 입력하거나 커밋된 파일에 절대 포함하지 마세요.
2단계: Claude Desktop을 Apify MCP 서버로 지정하기
Claude Desktop의 설정 파일(Settings → Developer → Edit Config, 또는 macOS의 경우 ~/Library/Application Support/Claude/claude_desktop_config.json)을 열고 Apify 서버를 추가합니다. tools 쿼리 파라미터가 중요한 부분입니다. 이 파라미터는 서버에 어떤 Actor를 노출할지 알려주어, Claude가 전체 Store 대신 특정 기능에 집중된 하나의 도구만 가져올 수 있게 합니다.
{
"mcpServers": {
"apify": {
...
Cursor는 .cursor/mcp.json에서 동일한 JSON을 사용합니다. 호스팅된 엔드포인트 대신 stdio를 통해 로컬에서 실행하는 것을 선호한다면 다음과 같이 설정합니다:
{
"mcpServers": {
"apify": {
...
새로운 서버를 인식할 수 있도록 Claude Desktop을 재시작하세요.
3단계: 도구가 로드되었는지 확인하기
재시작 후, Actor가 호출 가능한 도구로 나타납니다. Apify 서버가 노출하는 도구 목록을 확인하면 스토리지 헬퍼(storage helpers)와 함께 Store 핸들 이름으로 지정된 Actor 자체를 볼 수 있습니다:
get-actor-run, get-dataset-items, get-key-value-store-record,
abort-actor-run, scrapers_lat--sec-form4-insider-trades-scraper
마지막 항목인 scrapers_lat--sec-form4-insider-trades-scraper가 바로 우리의 내부자 거래(insider-trading) 도구입니다. 이제 Claude는 이 도구가 존재한다는 것과, (Actor의 README를 통해) 무엇을 하는지, 그리고 (서버가 전달하는 입력 스키마를 통해) 어떤 입력값을 받는지 알고 있습니다.
4단계: Claude에게 내부자 활동에 대해 질문하기
이제 결과물을 확인할 차례입니다. 일반적인 채팅에서 실제 데이터(ground truth)가 필요한 질문을 던져보세요:
"올해 NVIDIA 내부자들이 주식을 매도한 적이 있나요? 임원이나 이사가 수행한 가장 큰 규모의 공개 시장 매도 건을 보여주세요. 가격과 해당 매도가 전체 지분의 어느 정도 규모였는지도 함께 알려주세요."
Claude는 자신의 기억만으로는 이 질문에 신뢰할 수 있는 답변을 할 수 없음을 인지하고, Form 4 도구를 선택한 뒤 사용자의 질문에서 입력값을 채웁니다. 내부적으로 클라이언트는 Actor의 파라미터가 포함된 tools/call을 전송합니다:
{
"name": "scrapers_lat--sec-form4-insider-trades-scraper",
"arguments": {
...
Apify MCP 서버는 Actor를 시작하고, 완료될 때까지 기다린 후 데이터셋 (dataset)을 반환합니다. 다음은 생성된 실제 실행 메타데이터 (run metadata)입니다:
{
"runId": "FAAfMZNumJtSe8rhO",
"actorName": "scrapers_lat/sec-form4-insider-trades-scraper",
...
7초 만에 공시 자료(filings)로부터 30건의 거래 내역을 실시간으로 가져왔습니다.
단계 5: 실제 출력 결과 읽기
도구가 반환하는 데이터셋은 거래당 하나의 깔끔한 레코드 (record)로 구성됩니다. 다음은 해당 실행에서 가져온 실제 레코드로, 세트 내에서 가장 큰 규모의 공개 시장 매도 건입니다 (내부자 활동 파악에 중요한 필드들로 필터링되었습니다):
{
"issuerName": "NVIDIA CORP",
"issuerTicker": "NVDA",
...
Claude는 이를 읽고 평이한 언어로 답변합니다: NVIDIA 이사인 Mark A. Stevens는 2026-06-02에 가중 평균 $222.38의 가격으로 500,000주를 매도하였으며, 매도 대금은 약 $111.2M입니다. 이 주식은 가족 신탁(family trust)을 통해 간접적으로 보유하고 있었습니다. 이번 매도로 그의 보유 지분은 6.76% 감소하여 6,899,771주가 남게 되었으며, 특히 이번 분할 매도(tranche)는 Rule 10b5-1 계획에 따라 신고된 것이 아닙니다. 이 모든 사실은 모델의 기억이 아니라, 공식 공시 자료인 accession 0001199039-26-000005를 통해 추적할 수 있습니다.

뉘앙스는 헤드라인만큼이나 중요합니다. 동일한 데이터 세트에는 코드-A 증여(현금 가치가 0달러인 제한적 주식 보상), 세금 납부를 위해 반납된 코드-F 주식, 그리고 신탁으로의 코드-G 증여가 포함되어 있습니다. 단순히 "내부자가 주식을 처분했다"라고만 보는 분석가는 일상적인 원천징수를 하락 신호(bearish signal)로 오독할 수 있습니다. 이 도구는 모든 기록에 대해 거래 **코드 (code)**와 **유형 (type)**을 반환하므로, 에이전트는 재량에 따른 공개 시장 매도와 단순 행정적 처리를 구분할 수 있습니다. 이것이 바로 Form 4를 주의 깊게 읽어야 하는 핵심 이유입니다.
두 가지 필드가 해석 작업의 상당 부분을 수행합니다. ownershipChangePercent는 내부자의 보유 지분 대비 거래 규모가 얼마나 큰지를 알려줍니다. 따라서 전체 포지션의 6.76%에 해당하는 1억 1,100만 달러 규모의 매도는, 누군가의 보유 지분 전체를 정리하는 동일한 금액의 매도와는 매우 다르게 해석됩니다. 그리고 is10b51Plan은 해당 거래가 사전에 계획된 것인지 알려줍니다. Rule 10b5-1 계획에 따른 매도는 몇 달 전에 이미 실행되었으므로 신호로서의 가치가 거의 없는 반면, 계획에 없는 재량적 매도는 내부자가 현재 정보를 바탕으로 내린 결정입니다. 에이전트는 사용자에게 공시 서류를 열어 각주를 읽으라고 요청하는 대신, 이 두 가지 요소에 자동으로 가중치를 부여할 수 있습니다.
실제 활용 사례: 내부자 활동 모니터
맥락을 짚어보겠습니다. 여러 종목을 다루는 이벤트 드리븐 (event-driven) 분석가는 내부자의 행동, 즉 누가 자신의 돈으로, 대규모로, 그리고 계획에 없게 매수 또는 매도하고 있는지에 대한 아침 보고서를 원합니다. 이를 수동으로 수행한다는 것은 EDGAR를 열고, 각 발행사의 Form 4 피드를 필터링하고, 모든 공시를 열어 거래 코드를 하나씩 해독하는 것을 의미합니다.
Claude에 도구가 연결되면 분석가는 관심 종목 목록(watchlist)을 채팅창에 붙여넣고 에이전트에게 중요하다고 판단되는 내용을 표시해 달라고 요청합니다. Claude는 티커별로 Actor를 호출하고, 공개 시장 매수 및 매도(코드 P와 S)만 필터링하며, 부여(grants)나 세금 원천징수는 무시하고, 거래 가치와 내부자의 지분 변화율 순으로 정렬한 다음, 각 거래가 Rule 10b5-1 계획에 따라 이루어졌는지 여부를 기록합니다. 그 결과로 다음과 같은 짧은 목록이 나옵니다: “이사 X는 9자리 수 규모의 포지션 중 6.8%를 매도했으며, 이는 10b5-1 계획에 따른 것이 아닙니다.”라는 문장은 “CFO가 예정된 RSU 부여를 받았습니다.”라는 문장과는 매우 다릅니다. 기계적인 정보 검색 및 해독 단계는 사라지고, 그 매도가 무엇을 의미하는지에 대한 판단은 여전히 인간에게 남아 있게 됩니다.
이것이 모든 좋은 에이전트 도구의 형태입니다: 기계적인 정보를 가져오는 것은 제거하지만, 결정(decision) 자체는 제거하지 않습니다.
더 나아가기: 두 번째 도구 연결하기 (chain a second tool)
내부자 활동은 하나의 입력값일 뿐이며, 회사의 공시 자료와 함께하면 더욱 명확해집니다. 동일한 MCP 연결을 사용하여 tools 매개변수를 확장함으로써 더 많은 Actor를 노출할 수 있습니다:
이제 에이전트는 한 번의 대화에서 발행사(issuer)의 Form 4 내부자 거래 내역과 SEC EDGAR 10-K, 10-Q 및 8-K 공시 자료를 모두 가져올 수 있습니다. “이사의 6월 매도 건이 그 달에 회사가 공개한 내용과 일치하나요?”라고 질문하면, Claude는 한 도구에서 내부자 거래 내역을 읽고, 다른 도구의 8-K 중요 이벤트 피드에서 정보를 얻어 두 가지를 아울러 추론합니다. 각 Actor가 별도의 도구이기 때문에, 에이전트는 매 단계에 맞는 적절한 도구를 스스로 선택합니다.
🏹 문제 해결(Troubleshooting): 만약 실행 결과가 비어 있다면, 일반적인 원인은 날짜 범위입니다. Actor는 기본적으로 최근 30일 정도를 기준으로 하며, 특정 발행사는 해당 기간 동안 Form 4 공시 자료 자체가 없을 수 있습니다. dateFrom (예: `
📌 참고: 각 도구 호출(tool call)은 귀하의 Apify 계정으로 비용이 청구되는 실제 Actor 실행입니다 (이 Actor는 결과당 과금 방식입니다). 일회성 조사의 경우 비용은 1센트의 아주 작은 일부에 불과하지만, 수백 개의 티커(ticker)를 정기적으로 스캔할 계획이라면 채팅 메시지당 한 번씩 호출하는 대신 Apify API를 통해 Actor를 직접 실행하거나 예약된 작업(scheduled task)을 사용하세요.
마무리
이제 귀하는 주식 리서치 독자가 실제로 필요로 하는 코드, 가격, 규모 및 10b5-1 상세 정보를 포함하여, 대화 도중에 요청 시 즉시 SEC Form 4 내부자 거래를 읽을 수 있는 AI 에이전트를 보유하게 되었습니다. 이 패턴은 재사용이 가능합니다. 신뢰할 수 있는 구조화된 데이터(structured data)를 반환하는 Actor를 선택하고, tools 파라미터를 통해 Apify MCP 서버로 이를 노출한 다음, 에이전트가 언제 호출할지 결정하도록 하면 됩니다.
더 나아가기 위한 방법:
transactionCode를 사용하여 단일 동작으로 필터링함으로써, 에이전트가 공개 시장 매수 또는 매도 건만 보도록 설정할 수 있습니다.- EDGAR 공시, 기관 보유 지분(institutional-holdings) 또는 실적(earnings) Actor를 추가하여, 내부자 활동을 공시 자료와 교차 검증하는 다단계 리서치 에이전트를 구축할 수 있습니다.
- Apify MCP 서버 문서를 읽고 OAuth 설정, 리소스 읽기, 그리고 에이전트가 사전에 구성되지 않은 Actor를 스스로 찾아낼 수 있게 해주는
search-actors/call-actor도구에 대해 알아보세요.
이 가이드에서 사용된 Actor: SEC Form 4 Insider Trading Transactions Scraper.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기