
Apify MCP 서버를 사용하여 Claude에 기관 보유 주식(13F) 도구 제공하는 방법
요약
Apify MCP 서버를 활용하여 Claude와 같은 AI 클라이언트가 SEC 13F 공시 데이터를 실시간으로 조회할 수 있도록 연결하는 방법을 설명합니다. 이를 통해 모델의 학습 데이터 한계를 극복하고 최신 기관 보유 주식 정보를 정확하게 가져오는 에이전트 도구를 구축할 수 있습니다.
핵심 포인트
- MCP를 통해 Claude가 외부 도구를 스스로 판단하여 호출 가능
- Apify MCP 서버를 사용하여 SEC 13F 데이터를 실시간 조회
- 하드코딩 없이 구조화된 입출력으로 에이전트 기능 확장
- 주식 리서치 및 자산 배분가를 위한 실시간 데이터 도구 제공
Claude에게 Berkshire Hathaway가 무엇을 보유하고 있는지, 또는 당신이 담당하는 주식을 최근 어떤 펀드가 매수했는지 물어본다면, 당신은 1년 전의 데이터일 수도 있는 학습 데이터에 기반한 유창한 답변을 듣게 될 것입니다. 포지션(Positions)은 매 분기 교체됩니다. 주식 리서치(Equity research)의 경우, "모델이 기억하는 것"과 "지난달에 실제로 공시된 것" 사이의 격차는 사용 가능한 정보와 틀린 정보 사이의 차이를 만듭니다.
이 가이드에서는 그 격차를 줄입니다. 우리는 Claude를 공식 Apify MCP 서버에 연결하고, SEC Form 13F 기관 보유 주식 공시를 읽는 단일 Actor를 노출하여, "이 펀드는 무엇을 보유하고 있는가?"라는 질문을 추측이 아닌 기록된 공시를 바탕으로 한 실시간 조회로 바꿉니다. 이 과정을 마치면 Claude, Cursor, 또는 어떤 MCP 클라이언트든 대화 도중에 호출하여 대형 운용사의 최신 포지션, 달러 가치, 포트폴리오 비중, 그리고 전 분기 대비 변동 사항을 가져올 수 있는 작동 가능한 도구를 갖게 될 것입니다. 이는 주식 리서치 팀, 펀드 분석가 및 자산 배분가(Allocators)를 대상으로 합니다.
아래의 모든 내용은 실제 출력값이 포함된 실제 설정입니다. 모의 응답(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의 입력 스키마 (input schema)를 전달하므로, 모델은 파라미터 (parameters)를 정확하게 채워 넣고 추론할 수 있는 깔끔한 데이터셋을 반환합니다.
- 하나의 연결로 여러 도구 사용. 동일한 MCP 엔드포인트 (endpoint)가
search-actors,fetch-actor-details,call-actor를 노출하므로, 에이전트는 새로운 설정 없이도 어떤 Actor든 찾아내고 실행할 수 있습니다. - 인프라 구축 불필요. 서버는 호스팅되어 있습니다. 설정 파일에 몇 줄만 추가하면 끝납니다.
사용할 Actor
우리는 SEC 13F Institutional Holdings Scraper를 노출할 것입니다. 이 도구에 이름(예: "Berkshire Hathaway", "Bridgewater Associates", "Scion Asset Management") 또는 SEC CIK 번호를 입력하면, 해당 매니저의 최신 분기별 13F 보고서를 포지션별로 상세히 반환합니다: 발행사 이름, CUSIP, USD 기준 시장 가치, 보유 주식 수, 포트폴리오 비중 및 순위, 이전 분기 대비 변동 사항, 그리고 보고 기간, 제출일, accession number와 같은 제출 메타데이터가 포함됩니다.
이 데이터 세트는 보유 자산 분석에 정확히 필요한 정보, 즉 무엇을, 얼마나 가지고 있는지, 그리고 무엇이 변했는지를 모두 특정 보고서로 추적할 수 있게 해줍니다. 13F는 보고 기준치를 초과하는 모든 기관 매니저가 반드시 제출해야 하고, 공개되어 있으며, 로그인 장벽이 없기 때문에 시작하기에 매우 유용한 데이터셋입니다.

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-13f-holdings-scraper
마지막 항목인 scrapers_lat--sec-13f-holdings-scraper가 바로 우리의 보유 주식(holdings) 도구입니다. 이제 Claude는 이 도구가 존재한다는 것과, 그 기능(Actor의 README를 통해 확인), 그리고 어떤 입력값(서버가 전달하는 입력 스키마를 통해 확인)을 받는지 알고 있습니다.
4단계: Claude에게 펀드의 포지션에 대해 질문하기
이제 결과물을 확인할 차례입니다. 일반적인 채팅에서 최신 공시 자료가 필요한 질문을 던져보세요:
"현재 Berkshire Hathaway의 가장 큰 주식 보유 종목은 무엇인가요? 최신 13F 공시를 바탕으로 상위 포지션들을 달러 가치와 포트폴리오 비중과 함께 알려주세요."
Claude는 이를 기억만으로는 신뢰성 있게 답변할 수 없음을 인지하고, 13F 도구를 선택한 뒤 사용자의 질문에서 입력값을 채웁니다. 내부적으로 클라이언트는 Actor의 파라미터를 포함한 tools/call을 전송합니다:
{
"name": "scrapers_lat--sec-13f-holdings-scraper",
"arguments": {
...
Apify MCP 서버는 Actor를 시작하고, 완료될 때까지 기다린 후 데이터셋 (dataset)을 반환합니다. 다음은 생성된 실제 실행 메타데이터 (run metadata)입니다:
{
"runId": "hmROrTClgzgQmphDX",
"actorName": "scrapers_lat/sec-13f-holdings-scraper",
...
단 12초 만에 원본 공시 자료로부터 직접 가져온 결과입니다.
단계 5: 실제 출력값 읽기
도구가 반환하는 데이터셋은 포지션당 하나의 구조화된 행 (structured row)으로 구성됩니다. 다음은 실행에서 가져온 실제 기록으로, 해당 펀드의 가장 큰 단일 보유 종목입니다 (보유 현황 확인에 중요한 필드들로 트리밍됨):
{
"managerName": "BERKSHIRE HATHAWAY INC",
"managerCik": "1067983",
...
Claude는 이를 읽고 평이한 언어로 답변합니다: Berkshire의 가장 큰 포지션은 약 $57.8B 가치의 Apple이며, 이는 90개의 보유 종목에 걸쳐 보고된 $263.1B의 주식 장부 중 **21.99%**를 차지하며, 지난 분기 대비 지분은 변동 없음 (unchanged) 상태입니다. 그 아래로는 American Express가 17.43%, Bank of America가 9.52%(감소)를 차지하고 있으며, 이번 분기에는 새로운 Alphabet 포지션이 나타났습니다. 이 모든 사실은 모델의 기억이 아니라, 접수 번호(accession number) 0001193125-26-226661을 통해 추적 가능합니다.

changeType 필드는 이것을 단순한 스냅샷 이상으로 만들어 줍니다. 각 행에는 해당 포지션이 이전 기간 대비 NEW(신규), UNCHANGED(변동 없음), REDUCED(감소) 또는 증가했는지 여부가 포함되어 있기 때문에, 에이전트(agent)는 확신(conviction)과 표류(drift)를 즉시 구분할 수 있으며, 기억에 의존한 답변으로는 절대 언급할 수 없는 새로운 Alphabet 매수 건을 드러낼 수 있습니다.
실제 사용 사례: 13F 모니터링 에이전트
맥락을 짚어보겠습니다. 여러 펀드를 담당하는 분석가는 매 13F 시즌이 끝난 후 무엇이 변했는지 알고 싶어 합니다. 즉, 누가 포지션을 새로 구축했는지, 누가 빠져나갔는지, 그리고 대중이 어디에 집중하고 있는지를 파악하고자 합니다. 이를 수동으로 수행한다는 것은 펀드당 한 번씩, 각 매니저의 공시 서류를 열고, CUSIP(자산 식별 번호) 테이블을 읽고, 지난 분기 데이터와 대조하는 과정을 의미합니다.
Claude에 이 도구가 연결되면, 분석가는 관리자(manager)의 관심 목록을 채팅창에 붙여넣고 에이전트에게 각 관리자의 최신 13F를 가져와 주목할 만한 움직임을 표시해 달라고 요청합니다. Claude는 각 관리자별로 Actor를 호출하여 모든 행의 changeType (변경 유형), portfolioPercent (포트폴리오 비중), portfolioRank (포트폴리오 순위)를 읽고 짧은 브리핑을 생성합니다. 여기에는 장부 가치의 1%가 넘는 신규 포지션, 보유 비중이 절반으로 줄어든 항목, 그리고 증거로서 접수 번호(accession number)가 첨부된 각 펀드의 상위 5개 집중 항목이 포함됩니다. 기계적인 테이블 읽기 작업은 사라지고, 그 움직임이 무엇을 의미하는지에 대한 판단은 분석가에게 남습니다.
이것이 모든 훌륭한 에이전트 도구의 형태입니다. 즉, 결정(decision)이 아닌 데이터 가져오기(fetch)를 제거하는 것입니다.
더 나아가기: 두 번째 도구 체이닝(chaining)
기관 보유 현황은 하나의 신호입니다. 내부자 거래(Insider activity)는 또 다른 신호이며, 이 두 가지는 함께 읽을 때 효과가 좋습니다. 동일한 MCP 연결을 통해 tools 파라미터를 확장함으로써 더 많은 Actor를 노출할 수 있습니다.
이제 에이전트는 한 번의 대화 내에서 펀드의 13F 포지션을 가져오는 동시에 동일한 기업의 최근 Form 4 내부자 매수 및 매도 내역을 확인할 수 있으며, 이 두 가지를 하나의 분석 결과로 결합할 수 있습니다. 예를 들어, 펀드가 비중을 늘리고 있는데 CEO도 매수 중이거나, 펀드는 보유 중인데 내부자들은 조용히 매도하고 있는 상황 등을 파악할 수 있습니다. 각 Actor는 별개의 도구이므로, 에이전트는 각 단계에 맞는 적절한 도구를 스스로 선택합니다.
🏹 문제 해결 (Troubleshooting): 만약 Claude에 도구가 나타나지 않는다면, 일반적인 두 가지 원인은 tools 파라미터에 Actor 핸들(handle)이 누락되었거나 오타가 있는 경우(Store URL에 있는 정확한 username/actor-name이어야 함), 그리고 Claude가 실행 중인 동안 설정을 편집한 경우입니다. 핸들을 수정하고 저장한 뒤, 클라이언트를 완전히 재시작하십시오.
📌 참고: 각 도구 호출(tool call)은 귀하의 Apify 계정으로 비용이 청구되는 실제 Actor 실행입니다 (이 Actor는 결과당 과금 방식입니다). 일회성 연구의 경우 비용은 1센트의 아주 적은 부분에 불과합니다. 만약 매 공시 시즌마다 수백 명의 매니저를 훑어볼 계획이라면, 채팅 메시지당 한 번씩 호출하는 대신 Apify API를 통해 Actor를 직접 실행하거나 예약된 작업(scheduled task)을 사용하십시오.
마무리
이제 귀하는 대화 도중에 요청만 하면, 실제 보유 분석에 필요한 달러 가치, 포트폴리오 비중, 전 분기 대비 변동 사항을 포함하여 대형 매니저의 실제 기관 보유 현황을 읽을 수 있는 AI 에이전트를 갖게 되었습니다. 이 패턴은 재사용이 가능합니다. 신뢰할 수 있는 구조화된 데이터(structured data)를 반환하는 Actor를 선택하고, tools 파라미터를 통해 Apify MCP 서버로 이를 노출시킨 뒤, 에이전트가 언제 이를 호출할지 결정하게 하면 됩니다.
더 나아가기 위해:
- Actor 핸들을 변경하여 다른 공시 자료나 데이터셋으로 교체하십시오. 설정 방식은 동일합니다.
- 내부자 거래(insider-trading), 공시(filings) 또는 소유권(ownership) Actor를 추가하여 다중 신호(multi-signal) 연구 에이전트를 구축하십시오.
- OAuth 설정, 리소스 읽기, 그리고 에이전트가 사전에 구성되지 않은 Actor를 스스로 찾아낼 수 있게 해주는
search-actors/call-actor도구에 대해서는 Apify MCP 서버 문서를 참조하십시오.
이 가이드에서 사용된 Actor: SEC 13F Institutional Holdings Scraper.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기