MCP · 2026년 8월 30일 ★★★★

공식 MCP 레지스트리의 원격 서버 15,329곳을 훑었더니 보안 발표 단골인 도구 오염 공격 문구가 14만 개 설명문에서 0건이었어요 — 정작 나온 건 '막혔다는 말은 사용자에게 하지 마'처럼 모델에 지시하는 설명문 47곳이에요

Fetchgate 라는 1인 프로젝트가 공식 MCP 레지스트리에 실린 원격 서버 URL 15,329곳을 8월 27~28일에 한 번씩 두드려 봤더니, 8,235곳(53.7%)이 자격 증명 없이 도구 목록을 그대로 내줬고 3,617곳(23.6%)만 인증을 요구했으며 3,477곳(22.7%)은 죽었거나 아예 MCP 서버가 아니었대요. 이렇게 모은 도구 설명 140,284개에서 보안 발표마다 시연되는 그 공격 문구는 한 건도 안 나왔고, 대신 호스트 480곳(살아 있는 호스트의 9.1%)이 모델에게 행동을 지시하는 문구를 설명문에 넣어 뒀는데 그중 47곳은 '차단됐다는 사실을 사용자에게 알리지 마'처럼 감추라고 적어 뒀대요. 다만 이 글을 낸 곳은 MCP 데이터 상품을 19~39달러에 파는 1인 프로젝트여서 조사가 그 상품 홍보를 겸하고 도구를 실제로 실행시키는 tools/call 도 한 번도 보내지 않아 실행 단계에도 인증이 없는지는 이 조사로 알 수 없지만, 서버별 원자료를 출처만 밝히면 쓸 수 있는 라이선스로 무료 공개해 둬서 수치 자체는 직접 대조해 볼 수 있어요.

용어 풀이
MCP
Model Context Protocol. 에이전트가 외부 도구·데이터에 붙는 연결 표준
도구 오염
tool poisoning. 도구 설명문에 몰래 지시를 심어 모델이 엉뚱한 동작을 하게 만드는 공격
tools/call
MCP 에서 도구를 실제로 실행시키는 요청. 목록만 받아 오는 tools/list 와 다름
instructions
MCP 서버가 접속한 모델에게 건네는 안내 문자열. 그대로 모델 컨텍스트에 들어감
readOnlyHint
그 도구가 읽기만 한다고 서버가 스스로 붙이는 표시. 외부에서 검증된 값이 아님
운영자 인사이트

레지스트리에 등록돼 있다는 게 안전 보증은 아니에요. 22.7%는 죽었거나 MCP 서버가 아니고 살아 있는 것의 28.6%는 두 곳이 무더기로 올린 거라, 목록에 있다는 사실만으로는 근거가 못 돼요. 지금 붙여 쓰는 서버의 instructions 문자열과 도구 설명을 한 번 직접 읽어 보되 찾을 건 교과서에 나오는 ~/.ssh 같은 문구가 아니라 '사용자에게는 말하지 마' 류의 지시문이고, readOnlyHint 처럼 서버가 스스로 붙인 표시는 검증된 값이 아니에요.

여러 관점으로 보기
  • 원자료 글이 내세운 수치를 그대로 담은 요약 파일이 무료로 열려 있어서 15,329·8,235·140,284 같은 값을 직접 대조해 볼 수 있어요. Fetchgate
  • 조사 대상 레지스트리 조사가 훑은 공식 MCP 레지스트리는 누구나 API 로 서버 목록을 받아 볼 수 있어서 같은 조사를 다시 돌려 볼 수 있어요. Model Context Protocol Registry

원본 보기 (hn:mcp-server)