
Apify MCP 서버를 사용하여 Claude에 싱가포르 의료 자격 검증 도구 제공하는 방법
요약
Apify MCP 서버를 활용하여 Claude가 싱가포르 보건부(MOH)의 실시간 의료 자격 데이터를 조회할 수 있도록 구현하는 가이드입니다. AI 에이전트의 환각 문제를 해결하기 위해 외부 도구를 연결하는 MCP 표준의 이점과 실제 설정 방법을 다룹니다.
핵심 포인트
- MCP를 통해 Claude가 스스로 필요한 도구를 호출하도록 설정 가능
- Apify MCP 서버를 사용하여 수천 개의 Actor를 에이전트 도구로 활용
- 싱가포르 의료 전문가 등록부 스크래퍼를 통한 실시간 자격 검증 구현
- 구조화된 입출력과 인프라 관리 없는 간편한 도구 확장성 제공
AI 에이전트(AI agents)는 추론에는 능숙하지만 사실 관계에는 매우 취약합니다. Claude에게 "Dr Alex Tanoto Lim"이 싱가포르에서 진료하도록 등록된 의사인지 물어본다면, Claude는 몇 달 또는 몇 년 전의 오래된 학습 데이터나 단순히 지어낸 내용을 바탕으로 자신 있게 답변할 것입니다. 자격 검증(credentialing)과 관련된 사항에 있어서 "아마 맞을 것"이라는 답변은 충분하지 않습니다. 진료 자격증이 만료된 대리 의사(locum)나 등록부에는 전혀 나타나지 않는 이름은 절대로 그냥 통과시켜서는 안 되는 바로 그런 사례입니다.
이 가이드에서 우리는 이 문제를 해결합니다. 우리는 Claude를 공식 Apify MCP 서버에 연결하고, 싱가포르 보건부(MOH)의 의료 전문가 공공 등록부를 읽는 단일 액터(Actor)를 노출하여, "이 임상의가 실제로 등록되어 있는가?"라는 질문을 추측이 아닌 공식 기록(source of record)에 대한 실시간 조회로 전환합니다. 이 가이드를 마칠 때쯤이면 여러분은 Claude, Cursor 또는 모든 MCP 클라이언트가 대화 중에 호출할 수 있는 작동 가능한 검증 도구를 갖게 될 것이며, 실행 과정 중 어느 시점에 도구가 실행되고 무엇을 반환하는지 정확히 이해하게 될 것입니다.
아래의 모든 내용은 실제 출력값이 포함된 실제 설정입니다. 모의 응답(mocked responses)은 없습니다.
Apify MCP 서버란 무엇인가?
Model Context Protocol (MCP)는 AI 클라이언트가 외부 도구를 호출할 수 있게 해주는 개방형 표준입니다. Apify MCP 서버(https://mcp.apify.com)는 Apify 플랫폼 상에서 해당 표준을 구현하며, 이는 Apify Store에 있는 수천 개의 액터(Actors) 각각이 에이전트가 호출할 수 있는 도구가 된다는 것을 의미합니다.
왜 API 호출을 하드코딩하는 대신 MCP를 통해 액터를 라우팅할까요?
- 에이전트가 호출 시점을 결정합니다. Claude는 대화를 읽고 자신이 가지고 있지 않은 사실이 필요하다고 판단하면 스스로 도구를 호출합니다. 모든 질문에 대해 연결 코드 (glue code)를 작성할 필요가 없습니다.
- 구조화된 입출력. MCP 서버가 Claude에게 Actor의 입력 스키마 (input schema)를 전달하므로, 모델은 매개변수를 정확하게 채우고 추론할 수 있는 깔끔한 데이터 세트를 반환합니다.
- 하나의 연결로 여러 도구 사용. 동일한 MCP 엔드포인트가
search-actors,fetch-actor-details,call-actor를 노출하므로, 에이전트는 새로운 설정 없이도 어떤 Actor든 발견하고 실행할 수 있습니다. - 인프라 구축 불필요. 서버는 호스팅되어 있습니다. 설정 파일에 몇 줄만 추가하면 끝납니다.
사용할 Actor
우리는 Singapore MOH Healthcare Professionals Register Scraper를 노출할 것입니다. 이 도구는 싱가포르 보건부 (MOH)의 공개 등록부를 검색하여 등록된 전문가의 전체 기록을 반환합니다: 성명, 등록 번호, 직업 유형 및 등록부, 등록 유형 및 시작일, 진료 자격증 시작 및 종료일, 수여 기관 및 연도가 포함된 자격 요건, 그리고 현재 근무지 등이 포함됩니다.
MOH는 싱가포르에서 의사 (SMC), 치과의사 (SDC), 간호사 및 조산사 (SNB), 약사 (SPC), 전통 중의학 전문가 (TCMPB)를 등록하는 전문 위원회들을 관리하는 권위 있는 기관입니다. 이 데이터 세트는 자격 검증 (credentialing), 패널 온보딩 (panel-onboarding), 또는 보험사 네트워크 가입 확인에 정확히 필요한 정보입니다. 싱가포르는 등록부가 공개되어 있고 권위가 있으며, 로그인 장벽이 없기 때문에 매우 유용한 관할 구역입니다.

1단계: Apify API 토큰 가져오기
Apify Console에 로그인하여 Settings → Integrations를 열고 개인 API 토큰을 복사합니다. MCP 서버는 인증을 수행하고 Actor 실행 비용을 귀하의 계정으로 청구하기 위해 이 토큰을 사용합니다.
📌 참고: 토큰은 비밀 정보입니다. 클라이언트 설정(client 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을 사용합니다. 호스팅된 엔드포인트(hosted endpoint) 대신 stdio를 통해 로컬에서 실행하는 것을 선호한다면 다음과 같이 설정합니다:
{
"mcpServers": {
"apify": {
...
새로운 서버를 인식할 수 있도록 Claude Desktop을 재시작하세요.
3단계: 도구가 로드되었는지 확인하기
재시작 후, Actor가 호출 가능한 도구(callable tool)로 나타납니다. Apify 서버가 노출하는 도구 목록을 확인하면 스토리지 헬퍼(storage helpers)와 함께 스토어 핸들(Store handle)의 이름을 가진 Actor 자체를 볼 수 있습니다:
get-actor-run, get-dataset-items, get-key-value-store-record,
abort-actor-run, scrapers_lat--singapore-moh-health-professionals-scraper
마지막 항목인 scrapers_lat--singapore-moh-health-professionals-scraper가 바로 우리의 검증 도구입니다. 이제 Claude는 이 도구가 존재한다는 것과, 무엇을 하는지(Actor의 README를 통해), 그리고 어떤 입력값(서버가 전달하는 입력 스키마(input schema)를 통해)을 받는지 알고 있습니다.
4단계: Claude에게 전문가 검증 요청하기
이제 결과물을 확인할 차례입니다. 일반적인 채팅에서 실제 사실(ground truth) 확인이 필요한 질문을 던져보세요:
"'Alex Tanoto Lim'이라는 이름의 대리 의사(locum doctor)가 우리 클리닉 패널에 합류하기 위해 신청했습니다. 그가 싱가포르 보건부(MOH) 등록 명부에 있는지 확인해 주고, 그의 등록 번호, 자격 요건, 그리고 현재 진료 자격증(practising certificate)이 유효한지 알려주세요."
Claude는 기억만으로는 이 질문에 신뢰할 수 있는 답변을 할 수 없음을 인지하고, MOH 도구를 선택한 뒤 사용자의 질문에서 입력값을 채웁니다. 내부적으로 클라이언트는 Actor의 파라미터가 포함된 tools/call을 전송합니다:
{
"name": "scrapers_lat--singapore-moh-health-professionals-scraper",
"arguments": {
...
Apify MCP 서버는 Actor를 실행하고, 실행이 완료될 때까지 기다린 후 데이터셋(dataset)을 반환합니다. 다음은 생성된 실제 실행 메타데이터(run metadata)입니다:
{
"runId": "vP5udmMb50cVuwGe1",
"actorName": "scrapers_lat/singapore-moh-health-professionals-scraper",
...
MOH 등록부(register)를 대상으로 11초 만에 실시간 조회가 완료되었습니다.
5단계: 실제 출력 결과 읽기
도구가 반환하는 데이터셋은 구조화된 등록 데이터입니다. 다음은 (자격 검증에 중요한 필드만 남기고 다듬은) 실제 실행 기록입니다:
{
"name": "ALEX TANOTO LIM",
"registrationNo": "M66411A",
...
Claude는 이를 읽고 평이한 언어로 답변합니다: 네, Alex Tanoto Lim은 싱가포르 의료 위원회(Singapore Medical Council) 등록부에 등록 번호 M66411A를 보유하고 있으며, 정식 등록(Full Registration) 상태입니다. 그는 NTU-Imperial College London(싱가포르, 2020년)에서 MBBS 학위를 취득하였고, 2025년 1월 1일부터 2026년 12월 31일까지 유효한 진료 자격증(practising certificate)을 보유하고 있으므로 현재 진료가 가능합니다. 기재된 진료 장소는 Tan Tock Seng Hospital입니다. 이 모든 사실은 모델의 기억이 아닌 공식 등록부를 통해 추적 가능한 정보입니다.

반례(counter-example) 또한 매우 중요합니다. 만약 신청자의 이름이 검색되지 않거나, practisingCertEndDate(진료 자격증 종료일)가 이미 지난 기록이 반환된다고 가정해 봅시다. 의사가 정식으로 '등록(registered)'되어 있더라도 현재 유효한 진료 자격증(practising certificate)을 보유하고 있지 않을 수 있으며, 이는 환자를 진료할 권한이 없음을 의미합니다. 자격 검증(credentialing)을 수행하는 에이전트는 이러한 차이를 식별해야 하며, 진료 자격증 날짜는 이를 직접적으로 드러내 줍니다. 도구는 이 격차를 보여주지만, 모델 단독으로는 불가능합니다.
실제 사용 사례: 자격 검증 접수 에이전트
맥락을 짚어봅시다. 클리닉 네트워크, 원격 의료 플랫폼, 또는 보험사의 의료진 네트워크 팀은 의료진을 온보딩(onboarding)할 때, 패널 접근 권한이나 네트워크 입성을 허용하기 전에 다음 사항을 확인해야 합니다:
- 해당 전문가가 실제로 보건부(MOH) 등록부에 있는지,
- 등록 유형이 적절한지 (정식(full)인지, 조건부(conditional) 또는 임시(provisional)인지),
- 진료 자격증이 만료되지 않고 현재 유효한지.
도구가 없다면, 접수 담당자는 신청자 한 명당 매번 보건부(MOH) 웹사이트를 열고, 적절한 위원회를 선택하고, 이름을 입력하고, 일치하는 기록을 열어 자격 검증 양식에 필드를 복사해야 합니다. Claude에 연결된 도구가 있다면, 담당자는 신청자 목록을 채팅창에 붙여넣고 에이전트에게 각 인원을 확인하도록 요청하기만 하면 됩니다. Claude는 이름별로 Actor를 호출하여 등록 번호와 등록부를 읽어오고, practisingCertEndDate를 오늘 날짜와 대조하며, 자격증이 만료되었거나 아예 나타나지 않는 인원을 표시하고, 등록 번호를 증거로 하는 짧은 통과/참조(pass/refer) 노트를 생성합니다. 수동 조회 단계는 사라지고, 판단은 인간의 몫으로 남습니다.
이것이 모든 훌륭한 에이전트 도구의 형태입니다. 즉, 결정(decision)을 제거하는 것이 아니라 기계적인 데이터 가져오기(mechanical fetch)를 제거하는 것입니다.
더 나아가기: 두 번째 도구 체이닝(chain)
자격 검증은 개별 의료진 단계에서 끝나지 않는 경우가 많습니다. 그들을 고용하거나 계약하는 '의료 기관(practice)' 또한 실제 운영 중인 싱가포르 법인인지 확인해야 할 때가 자주 있습니다. 동일한 MCP 연결을 통해 tools 파라미터를 확장함으로써 더 많은 Actor를 노출할 수 있습니다:
이제 에이전트는 동일한 대화 내에서 MOH(보건부) 등록부의 의료진을 검증하는 동시에, Singapore ACRA Company Registry Scraper를 통해 고용된 클리닉이나 의료 그룹을 확인할 수 있습니다. 이를 통해 해당 엔티티의 UEN(고유 엔티티 번호), 상태, 등록 주소를 가져온 뒤 두 결과를 하나의 온보딩 요약본으로 결합할 수 있습니다. 각 Actor는 별개의 도구(tool)이므로, 에이전트는 각 단계에 맞는 적절한 도구를 스스로 선택합니다. 즉, 개인에 대해서는 MOH를, 그 뒤의 법인 엔티티에 대해서는 ACRA를 선택합니다.
🏹 문제 해결 (Troubleshooting): 만약 Claude에 도구가 나타나지 않는다면, 일반적인 두 가지 원인은 tools 파라미터에 Actor 핸들(handle)이 누락되었거나 오타가 있는 경우(Store URL에 있는 정확한 username/actor-name 형태여야 함), 그리고 Claude가 실행 중인 상태에서 설정을 수정했을 경우입니다. 핸들을 수정하고 저장한 뒤, 클라이언트를 완전히 재시작하십시오.
📌 참고 (Note): 각 도구 호출은 귀하의 Apify 계정으로 비용이 청구되는 실제 Actor 실행입니다 (이 Actor는 결과당 과금 방식입니다). 광범위한 목록 대신 원하는 기록을 반환받으려면 특정 성(surname)으로 검색하고 직업(council)을 설정하십시오. 일회성 검증 비용은 1센트의 아주 적은 부분에 불과하지만, 수천 명의 전문가를 정기적으로 검증할 계획이라면 채팅 메시지당 한 번씩 호출하는 대신 Apify API나 예약된 작업(scheduled task)을 통해 Actor를 직접 실행하는 것이 좋습니다.
마치며
이제 여러분은 공식 MOH 등록부를 바탕으로, 대화 도중 요청 시점에 등록 번호, 등록 유형, 자격, 그리고 자격 인증 검증에 실제로 필요한 면허 유효성까지 확인하여 싱가포르 의료 전문가를 검증할 수 있는 AI 에이전트를 갖추게 되었습니다. 이 패턴은 재사용이 가능합니다. 권위 있는 구조화된 데이터(structured data)를 반환하는 Actor를 선택하고, tools 파라미터를 통해 Apify MCP 서버로 노출시킨 뒤, 에이전트가 언제 호출할지 결정하게 하면 됩니다.
더 나아가려면:
- 동일한 도구를 사용하여
council입력을 전환함으로써 치과의사, 간호사, 약사 또는 중의사(TCM practitioners)를 확인할 수 있습니다. - ACRA 기업 등록, 제재(sanctions) 또는 라이선스 관련 Actor를 추가하여 다단계 서비스 제공자 온보딩(provider-onboarding) 에이전트를 구축할 수 있습니다.
- OAuth 설정, 리소스 읽기, 그리고 에이전트가 사전에 구성되지 않은 Actor를 스스로 찾아낼 수 있게 해주는
search-actors/call-actor도구에 대한 자세한 내용은 Apify MCP server docs를 참조하세요.
이 가이드에서 사용된 Actor: Singapore MOH Healthcare Professionals Register Scraper.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기