개발자들이 손으로 스크롤해 보던 8년 된 "awesome list"가 조용히 AI 에이전트를 위한 기계 판독형 소싱 레이어로 바뀌고 있다. 이유는 컬럼에 있다.
사람이 보던 목록이 에이전트의 소싱 매니페스트가 된 이유
public-apis/public-apis 저장소는 무료 웹 API를 커뮤니티가 큐레이션한 Markdown 색인이다. 2016-03-20에 만들어졌고 , 2026년 7월 기준 약 447,000개의 스타를 받은 GitHub 최상위 인기 저장소 중 하나가 되었다 . 2026년에는 Model Context Protocol(MCP) 서버 작성자를 위한 사전 검증된 엔드포인트 인벤토리로 다시 해석되고 있다.
이 목록을 에이전트가 읽을 수 있게 만드는 것은 엔드포인트가 아니라 스키마다. README의 모든 행에는 이름과 설명 외에도 기계가 파싱할 수 있는 네 가지 필드가 붙어 있다. Auth(No / apiKey / OAuth), HTTPS(yes/no), CORS(yes/no/unknown), 그리고 문서 링크다 . 이 세 가지 판별 필드 구조는 자율 호출자가 엔드포인트를 실제로 호출하기 전에 요청을 걸러내는 데 정확히 필요한 정보다. 바로 호출할지, 자격 증명을 주입할지, 브라우저에서 안전한 호출로 볼지를 결정할 수 있다.
2026년 5월 한 실무자 글은 이 변화를 명확하게 설명한다. public-apis는 어떤 엔드포인트가 존재하고 어떤 인증이 필요한지에 대한 실시간 유지보수 카탈로그를 제공해 LLM 학습 컷오프 이후 정보 노화를 보완한다 . 중요한 구분이 하나 있다. 이 디렉터리 자체가 MCP 서버나 매니페스트는 아니다. 인벤토리 레이어다. 빌더는 Auth/HTTPS/CORS를 읽어 소싱 결정을 내린 다음, 기반 API를 직접 작성하거나 자동 변환해 MCP 도구 정의로 만든다.
래퍼를 시작하려면 런타임, 시크릿 저장소, 분야 선택부터

README의 한 행을 건드리기 전에 네 가지를 먼저 준비해야 한다. 첫째, 도구 정의를 등록할 MCP 런타임이 필요하다. Claude Desktop, VS Code Agent Mode, 또는 TypeScript나 Python 공식 MCP SDK로 만든 커스텀 호스트가 여기에 해당한다. MCP는 2024년 말 Anthropic이 처음 소개했으며 , 호스트가 없으면 tools/list를 통해 도구를 노출할 곳도 없다.
둘째, 모든 apiKey 단계 항목에 키를 주입할 수 있는 시크릿 저장소나 환경 변수 메커니즘이 필요하다. OAuth 항목은 추가로 자격 증명 브로커가 필요하며, 이것이 없으면 에이전트가 다루기 가장 까다로운 단계다 . 셋째, 약 50개 README 섹션 중 하나의 분야를 고른다. Finance, Sports & Fitness, Weather, News가 흔한 출발점이다. 이렇게 해야 초기 도구 표면적을 작게 유지할 수 있다. 넷째, 변환 경로를 미리 정한다. 정밀도를 위해 직접 도구를 작성할 수도 있고, 기반 REST 표면에 이미 스펙이 있다면 OpenAPI→MCP 변환기를 쓸 수도 있다.
Auth와 HTTPS로 후보를 추리는 실제 예시

후보 추리기는 설명이 아니라 컬럼을 읽는 것에서 시작한다. 표준 README.md를 열고 원하는 분야로 이동한다. 예를 들어 Finance 섹션만 해도 2026년 중반 기준 수십 개의 테이블 행이 있다. 각 항목은 Name | Description | Auth | HTTPS | CORS | Link 형태의 Markdown 행이므로, 가운데 세 컬럼이 링크를 클릭하기 전 1차 선별을 맡는다 .
1단계 — 분야로 이동한다. 이 목록은 약 50개 카테고리에 걸쳐 대략 1,400개 이상의 엔드포인트를 담고 있다 . 섹션 하나를 고르고 위에서 아래로 읽는다.
2단계 — Auth 컬럼을 훑는다. 마찰이 낮은 순서에서 높은 순서로 세 단계로 압축된다.
| Auth 값 | 에이전트가 해야 할 일 | 가장 잘 맞는 용도 |
|---|---|---|
No | 자격 증명 설정 없이 즉시 호출 | 무설정 데모, 브라우저 안전 호출 |
apiKey | 요청마다 시크릿을 저장하고 주입 | 대부분의 금융/뉴스/날씨 제공자 |
OAuth | 브로커를 통해 다단계 토큰 흐름 실행 | 브로커가 없으면 에이전트 친화성이 가장 낮음 |
3단계 — HTTPS와 CORS를 교차 확인한다. 전송 안전성을 위해 HTTPS=Yes를 요구한다. CORS=Unknown 행은 브라우저 측 호출을 계획할 때만 표시해 둔다. Unknown은 직접 테스트해야 하며 대개 프록시가 필요하다는 뜻이다. 서버 측 MCP 호스트에서는 CORS가 관련 없다 .
4단계 — 링크를 열어 무료 티어를 확인한다. 후보로 남긴 각 행의 문서 링크를 따라가 무료 티어가 여전히 존재하는지 확인한 뒤, 일별 또는 월별 할당량을 기록한다. 이 디렉터리는 의도적으로 rate limit, SLA, 가격 정보를 넣지 않으므로 이 데이터는 제공자 문서에서만 얻을 수 있다.
5단계 — 집중된 도구 하나를 작성한다. MCP 2025-06-18 스펙에 따르면 도구에는 고유한 이름, 설명, JSON Schema inputSchema가 필요하다 . 전체 REST 표면을 그대로 비추기보다, 하나의 작업을 하나의 사용자 목표에 맞춰 범위를 정한다.
Model Context Protocol 도구 스펙에 따르면, "특정 사용자 목표에 맞춰 잘 범위 지정된 소수의 도구는, 특히 컨텍스트 창과 지연 시간 예산이 빡빡할 때 전체 REST 표면을 기계적으로 노출하는 것보다 더 좋은 성능을 낸다."
컬럼만으로는 알 수 없는 것: 할당량, 죽은 행, 유료화 전환

네 가지 메타데이터 컬럼은 인증 방식과 브라우저에서 안전하게 호출할 수 있는지만 알려 줍니다. 얼마나 많이 호출할 수 있는지는 말해 주지 않습니다. public-apis는 엔드포인트별 속도 제한 할당량을 전혀 추적하지 않으므로, No 인증의 "free" 라벨이 무제한을 뜻하지는 않습니다. 제공자는 흔히 하루 또는 한 달 요청 수를 제한하며, 그런 제한은 README 행이 아니라 제공자 자체 문서 페이지에서만 확인됩니다 . 예약 실행되는 에이전트 작업을 배포하기 전에 429 응답을 염두에 두세요.
링크 부패는 우연이 아니라 구조적인 문제입니다. 2016-03-20 생성 이후 거의 5,000개 커밋이 쌓인 수동 큐레이션 Markdown 목록은 행이 제출된 뒤 엔드포인트가 오프라인이 되었는지, 기본 URL이 바뀌었는지, 유료 플랜 뒤로 들어갔는지를 계속 추적할 수 없습니다. 모든 항목은 보장이 아니라 다시 검증해야 할 후보로 다루세요.
CORS는 조용히 실패하는 지점입니다. 많은 행에 CORS=Unknown이 붙어 있는데, 이는 브라우저 fetch 호출을 조용히 깨뜨릴 수 있습니다. 서버 측 MCP 호스트는 요청이 브라우저 밖에서 시작되므로 영향을 받지 않지만, 클라이언트 측 래퍼를 노출할 계획이라면 배포 전에 모든 Unknown 행을 개별적으로 테스트하세요 .
프로그래밍 방식 수집에도 함정이 있습니다. 디렉터리를 무인증 JSON-over-HTTPS로 제공해 온 동반 REST 서비스 davemachado/public-api는 2026년 중반 기준 유지보수가 제한적입니다 . cron 기반 자동화에 연결하기 전에 실제 응답 여부를 확인하거나, README를 직접 파싱하는 방식으로 되돌아가세요.
커뮤니티 포크, 변환 체인, 최소 래퍼
동반 서비스가 불안정하다면 커뮤니티 포크가 더 깔끔한 수집 경로가 됩니다. public-api-lists/public-api-lists 포크는 약 48개 카테고리를 아우르는 무료 JSON API를 제공합니다 . 원시 Markdown을 스크래핑하는 것보다 바로 수집하기 좋고, 에이전트 오케스트레이션 안에서 동적 후보 선별 단계의 탄탄한 기반으로 쓰기 좋습니다.
후보 엔드포인트를 찾았다고 해서 모든 것을 자동 생성하려 들 필요는 없습니다. OpenAPI→MCP 변환기는 제공자의 스펙에서 바로 도구 정의를 합성할 수 있지만, 모델에 노출하기 전에 출력 도구 수를 확인하세요. 기계적 변환은 네 개면 충분한 곳에도 30개 이상의 도구를 흔히 만들어 냅니다. MCP 스펙 자체 가이드(2025-06-18 개정판)는 더 적고 목표 중심적인 도구를 선호합니다. 보통 래핑된 엔드포인트당 2~5개 정도입니다. REST 경로를 빠짐없이 비추는 방식은 빡빡한 지연 시간과 컨텍스트 창 예산 아래에서 성능이 떨어지기 때문입니다 .
처음부터 래핑하기 전에 registry.modelcontextprotocol.io를 검색하세요 . public-apis 카탈로그의 Finance, Weather, News 분야는 2026년 기준 이미 커뮤니티 제작 MCP 서버가 그곳에 게시되어 있습니다.
핵심은 이렇습니다. public-apis는 소싱 매니페스트로, 포크의 JSON은 후보 선별 피드로, 레지스트리는 직접 만들지 재사용할지 확인하는 지점으로 삼으세요. 그런 다음 에이전트에 실제로 필요한 몇 개의 도구만 직접 작성하면 됩니다.
자주 묻는 질문
MCP 프로토타입에서는 어떤 Auth 컬럼 값으로 시작하는 것이 가장 쉬운가요?
Auth = No부터 시작하세요. 이 항목들은 자격 증명 관리가 전혀 필요 없으므로 첫 MCP 도구가 비밀 저장소나 토큰 흐름 없이 곧바로 엔드포인트를 호출할 수 있습니다. 브라우저와 서버 어느 쪽에서도 완전히 마찰 없는 호출을 원한다면 Auth = No에 HTTPS = Yes와 CORS = Yes를 함께 고르세요. Finance와 Weather 섹션 모두 키가 필요 없는 행을 여러 개 제공하므로 첫 데모에 자연스러운 분야입니다 .
public-apis 자체가 MCP 매니페스트나 도구 정의를 제공하나요?
아니요. public-apis는 런타임이 아니라 정적 Markdown 디렉터리입니다. JSON-RPC를 사용하지 않으며 MCP 도구 정의나 inputSchema도 노출하지 않습니다 . 워크플로는 수동입니다. README의 Name, Auth, HTTPS, CORS 컬럼을 읽고 호출 가능한 엔드포인트를 고른 뒤, 그 주위에 작은 MCP 도구 묶음을 직접 작성하거나 underlying API에 OpenAPI→MCP 변환기를 적용합니다. 실제 동작하는 MCP 서버의 발견은 이 목록이 아니라 공식 레지스트리를 통해 이루어집니다 .
CORS = unknown으로 표시된 API는 어떻게 처리해야 하나요?
먼저 브라우저 fetch로 직접 테스트하세요. 요청이 브라우저에서 차단되면 서버 측 프록시를 통해 호출을 라우팅하세요. CORS는 브라우저 측 직접 호출자만 제한한다는 점에 유의하세요. 서버 측 MCP 호스트에서는 브라우저 밖에서는 CORS 강제가 적용되지 않기 때문에 이 컬럼이 무의미합니다. 따라서 unknown 값은 에이전트가 클라이언트 측 JavaScript에서 엔드포인트를 직접 호출할 때만 차단 요인입니다 .
README를 직접 스크래핑하는 것 말고 어떤 프로그래밍 방식 대안이 있나요?
JSON 표면을 제공하는 포크를 사용하세요. 커뮤니티 포크 public-api-lists/public-api-lists는 약 48개 카테고리를 아우르는 무료 JSON API를 제공하므로, 에이전트가 Markdown을 스크래핑하지 않고도 구조화된 목록을 가져와 카테고리와 Auth = No 기준으로 필터링할 수 있습니다 . 더 오래된 davemachado/public-api 동반 서비스도 무인증 HTTPS JSON을 제공하지만 유지보수가 제한적이었습니다. 자동화 파이프라인에서 의존하기 전에 살아 있는지 확인하세요 .
모든 REST 경로를 MCP 도구로 그대로 복제하면 안 되는 이유는 무엇인가요?
경로를 빠짐없이 복제하면 컨텍스트 창 사용량이 커지고 호출마다 지연 시간이 늘어납니다. 모델이 매 턴마다 큰 도구 목록을 로드하고 그 위에서 판단해야 하기 때문입니다. MCP 도구 사양(2025-06-18)은 REST 표면을 기계적으로 1:1 매핑하기보다 특정 사용자 목표에 맞춘, 적고 범위가 명확한 도구를 권장합니다 . 실제로는 래핑된 엔드포인트당 2~5개의 목표 중심 작업이 빡빡한 컨텍스트와 지연 시간 예산 아래에서 전체 API를 노출하는 것보다 더 잘 작동합니다.
이 글이 도움이 되셨다면, 새 글이 올라올 때마다 이메일로 받아보세요.