엔지니어가 mcp-scan과 Notion MCP를 결합해 MCP 서버 보안 감시 시스템 구축으로 10개 서버에서 3건의 HIGH, 9건의 MEDIUM 심각도 이슈 적발
I Built an MCP Security Audit System with mcp-scan and Notion MCP
AI 요약
Context
Claude Desktop, Cursor, VS Code 같은 AI 도구들이 백그라운드에서 MCP 서버를 실행하면서 파일시스템, 환경변수, 네트워크에 대한 전체 접근 권한을 가진다. 터미널에서 mcp-scan을 실행하면 한 번의 출력으로 끝나기 때문에 보안 이슈가 추적되지 않는다. 설정 파일을 읽는 것만으로는 exfiltration 벡터나 검증되지 않은 패키지 사용 같은 복합적인 위험을 파악할 수 없다.
Technical Solution
- CLI 스캐닝 도구 개발: mcp-scan이 모든 AI 도구의 MCP 서버 설정을 JSON 형식으로 파싱해 구조화된 출력 생성
- Notion 데이터베이스 동기화: Node.js 브리지 스크립트가 JSON을 stdin에서 읽어 Notion API로 전송
- 중복 방지 메커니즘: 기존 레코드 조회 시 서버명, 발견 ID, AI 도구명 조합으로 idempotency 검사 후 업데이트 또는 신규 생성
- 구조화된 추적: 각 발견을 Notion 데이터베이스의 행으로 저장하되 심각도(select), 스캔 날짜(date), 수정 권장사항(text), 상태(Open/In Progress/Fixed) 필드로 구성
- Claude 통합 옵션: .mcp.json에 Notion MCP 서버 추가로 Claude가 직접 스캔 결과를 데이터베이스로 생성 가능
Impact
작성자의 머신에서 10개 MCP 서버 중 3건의 HIGH 심각도 이슈와 9건의 MEDIUM 심각도 이슈가 발견됐다. 한 서버는 파일시스템 접근과 네트워크 송신을 모두 가지고 있었고, 다른 서버는 @modelcontextprotocol org 외부의 검증되지 않은 npm 패키지를 가져오고 있었다. 설정 파일 검토만으로는 이런 이슈들이 드러나지 않았다.
Key Takeaway
보안 감시 결과를 터미널 출력이 아닌 데이터베이스로 영속화하면 팀의 수정 진행률을 추적하고 재스캔 시 상태가 초기화되지 않도록 보호할 수 있다. MCP 서버 같은 배경 프로세스의 권한 체인을 정적 분석으로 매핑해 두면 복합적인 exfiltration 경로를 사전에 차단할 수 있다.
실천 포인트
여러 AI 코딩 도구를 사용하는 개발팀에서 정기적으로 mcp-scan --json 을 실행해 Notion 데이터베이스에 동기화하면, 중복 실행 시에도 기존 수정 상태가 유지되면서 새로운 보안 이슈만 추가로 적발할 수 있다.