내 MCP 설정을 스캔했더니 100점 만점에 0점이 나왔다. 무엇이 문제였을까.
요약
MCP(Model Context Protocol) 설정의 보안 취약점과 효율성 문제를 진단하는 CLI 도구인 mcp-audit를 소개합니다. 인증 부재, SSRF 취약점, 토큰 팽창 등 MCP 서버 사용 시 발생할 수 있는 주요 리스크와 해결 방법을 다룹니다.
핵심 포인트
- mcp-audit는 로컬에서 MCP 설정을 스캔하여 보안 및 성능 문제를 진단하는 CLI 도구입니다.
- 많은 MCP 서버가 인증 부재 및 SSRF 취약점을 가지고 있어 보안 위협이 존재합니다.
- 설정 파일 내 평문 비밀 정보 노출과 버전 미고정(npx -y)은 공급망 리스크를 유발합니다.
- 과도한 MCP 서버 사용은 도구 스키마 로드로 인해 컨텍스트 토큰을 급격히 소모(Token bloat)시킵니다.
저는 몇 달 동안 Claude와 Cursor에 GitHub, 파일 시스템 서버, 몇 개의 검색 서버, 그리고 제가 직접 작성한 작은 내부 HTTP 서버 등 MCP 서버들을 추가해 왔습니다. 아주 잘 작동했죠. 그러다 두 가지 문제가 저를 괴롭혔습니다.
- 일부 서버에는 인증 (Authentication)이 전혀 없습니다. URL에 접근할 수 있는 사람이라면 누구나 제 도구(tools)를 호출할 수 있습니다.
- 프롬프트를 입력하기도 전에 컨텍스트 윈도우 (Context window)가 이미 가득 찬 느낌이 들었습니다.
알고 보니 저만의 문제가 아니었습니다. 약 7,000개의 공개 MCP 서버를 분석한 2026년의 조사 결과에 따르면, 41%는 인증이 필요하지 않았고, 36.7%는 SSRF(Server-Side Request Forgery) 취약점이 있었으며, 단 8.5%만이 OAuth를 사용하고 있었습니다. 그래서 저는 제 설정을 점검하기 위한 작은 도구를 만들었는데, 제 점수는 100점 만점에 0점이었습니다.
도구
mcp-audit (https://github.com/alih552/mcp-audit)는 의존성이 없는 CLI 도구로, 사용자의 MCP 설정(Claude Desktop, Cursor, VS Code, Windsurf 또는 일반 .mcp.json)을 읽어 무엇이 잘못되었는지 알려줍니다. 이 도구는 **100% 로컬 (Locally)**에서 실행됩니다. 사용자의 서버에 연결하거나 설정을 어디로도 전송하지 않습니다.
pipx install git+https://github.com/alih552/mcp-audit
mcp-audit
다음은 제가 (의도적으로 엉망으로 만든) 테스트 설정에서 이 도구가 찾아낸 내용의 예시입니다:
MCP Audit — ~/.cursor/mcp.json
7 server(s) - ~13,160 context tokens - score 0/100 (F)
...
각 진단 결과의 실제 의미
원격 서버의 인증 부재 (No auth on a remote server). 만약 MCP 서버가 HTTP를 통해 접근 가능하면서 토큰을 확인하지 않는다면, 모델 — 또는 URL을 찾아낸 누구나 — 사용자의 도구를 실행할 수 있습니다. 프롬프트 인젝션 (Prompt injection)이 실전에서 발생하는 상황을 고려하면, 모델이 아니라 _서버_가 방어선을 지켜야 합니다.
설정 파일 내의 평문 비밀 정보 (Plaintext secrets in the config). .mcp.json에 들어있는 GITHUB_TOKEN은 파일 자체와 git 히스토리를 통해 유출됩니다. 이를 환경 변수 (env var)나 비밀 관리자 (secret manager)로 옮기세요.
버전 고정 없이 사용하는 npx -y / uvx. 이는 가장 최근에 게시된 무엇이든 조용히 실행합니다. 이는 공급망 리스크 (Supply-chain risk)입니다. 버전을 고정하고 업데이트를 검토하세요.
지나치게 넓은 파일 시스템 루트 (Over-broad filesystem roots). /Users 또는 $HOME을 가리키는 파일 시스템 서버는 모델이 프로젝트보다 훨씬 더 많은 영역을 읽고 쓸 수 있게 합니다. 범위를 프로젝트 디렉토리로 제한하세요.
토큰 팽창 (Token bloat). 이것은 제가 예상하지 못했던 부분입니다. 모든 서버는 도구 스키마 (tool schemas)를 모든 요청에 로드합니다. 5개의 서버를 사용하면 단 한 단어를 입력하기도 전에 컨텍스트 (context)로 50-75k 토큰이 소모됩니다 — 이는 실제 비용이자 실제 지연 시간 (latency)입니다. 활발하게 사용하지 않는 서버는 비활성화하세요.
해결 방법
설정 문제의 경우: 버전을 고정하고, 비밀 정보 (secrets)를 환경 변수 (env vars)로 옮기며, 파일 시스템 접근 범위를 제한하고, 원격 서비스 앞에는 인증 (auth)을 배치하세요. 여기에서 전체 MCP 서버 보안 체크리스트 (MCP Server Security Checklist)를 확인할 수 있습니다: https://alih552.github.io/mcp-forge/checklist.html
만약 MCP 서버를 직접 구축하고 첫 커밋부터 보안을 유지하고 싶다면, MCP Forge Kit (https://alih552.github.io/mcp-forge/)도 함께 준비했습니다. 이는 기본적으로 보안이 적용된 스타터 키트 (bearer + JWT 인증, SSRF 방지 fetch, 속도 제한 (rate limiting), 검증 (validation), 테스트, CI 포함)입니다. 하지만 위의 감사 도구 (auditor)는 무료이며 MIT 라이선스이고, 그 자체로도 진정으로 유용합니다.
여러분의 설정에 적용해 보세요
pipx install git+https://github.com/alih552/mcp-audit
mcp-audit --json
검사 항목에 대한 피드백을 환영합니다 — 특히 오탐 (false positives) 및 누락되었다고 생각되는 검사 항목에 대해 알려주세요. 저장소 (Repo): https://github.com/alih552/mcp-audit
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기