Community코딩 & 개발github.com

sushant-me/mcpaudit-mcp-security

MCP 서버가 에이전트에 연결되기 전에 선언하는 내용을 검사합니다 — 도구 설명 내 프롬프트 인젝션 텍스트, 보이지 않는 유니코드(제로 너비에서 인쇄 가능한 ASCII를 인코딩하는 태그 블록 포함), 유사하거나 중복된 도구 이름, 프레임워크 이름 충돌 및 제약 없는 셸 싱크를 확인합니다. MCP 서버를 검토하거나, MCP 통합을 설치하거나, 타사 도구 제공자를 평가하거나, 누군가 "이 MCP 서버가 안전한가요" 또는 "이 도구 정의를 감사해 주세요"라고 물을 때 사용하세요.

mcpaudit-mcp-security란 무엇인가요?

이 스킬은 MCP(Model Context Protocol) 서버가 `tools/list` 엔드포인트를 통해 클라이언트에 노출하는 도구 선언을 보안 감사하는 데 사용됩니다. 도구 설명은 단순한 문서가 아니라 모델의 컨텍스트에 직접 삽입되어 명령어를 전달할 수 있으므로, 프롬프트 인젝션, 보이지 않는 유니코드 문자(예: 태그 블록), 유사한 도구 이름, 프레임워크 이름 충돌, 제약 없는 셸 싱크 등을 검사합니다. `sushant-me/mcpaudit` 리포지토리에서 설치된 `mcpaudit` CLI 도구로 실행되며, `tools.json` 파일이나 파이프된 입력을 분석하여 11가지 보안 검사를 수행합니다. 중요한(critical) 발견은 연결 전에 반드시 해결해야 하며, 깨끗한 결과는 서버가 안전하게 광고되고 있음을 의미합니다. 이 검사는 선언만 읽고 실제 동작은 검증하지 않는다는 한계가 있습니다.

지원 대상~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/sushant-me/mcpaudit-mcp-security/tree/HEAD/plugins/mcp-tool-audit/skills/mcp-tool-audit

Installed? Explore more 코딩 & 개발 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

MCP 서버가 선언하는 내용 확인하기

도구 설명은 문서가 아닙니다. 클라이언트는 tools/list를 통해 도구 이름과 설명을 받습니다. 이는 어떤 도구가 호출되기 전에 이루어지며, 이 정보는 모델의 컨텍스트에 들어갑니다. 따라서 설명은 명령어를 전달할 수 있는 의미에서 실행 가능합니다.

적용 시점

  • 에이전트에 MCP 서버를 추가하고 노출될 내용을 알고 싶을 때
  • 보안 검토에서 에이전트가 호출할 수 있는 타사 도구를 질문할 때
  • 에이전트가 이상하게 동작하며 도구 설명이 의심스러울 때

실행 방법

pip install "git+https://github.com/sushant-me/mcpaudit"
mcpaudit audit tools.json        # 발견 시 exit 1, 깨끗하면 0

PyPI가 아닌 리포지토리에서 설치하세요 — PyPI의 mcpaudit 이름은 다른 관련 없는 프로젝트이며, 해당 CLI는 파일 인수를 받지 않습니다.

tools.json은 클라이언트가 받은 내용을 통해 얻습니다: mcp-client --list > tools.json, 또는 공급업체의 게시된 선언 파일(가장 좋음, 아무것도 실행되지 않음). 파이핑도 작동합니다: mcp-client --list | mcpaudit audit -

11가지 검사 항목

critical — reserved-name-collision: 프레임워크가 도구 테이블 외부에 설치하는 이름(set_model_response, google_search, finish)과 충돌하는 도구 이름으로, 기본 기능을 조용히 대체합니다.

high — instruction-in-declaration, invisible-characters, look-alike-tool-names, destructive-declared-read-only, duplicate-tool-name.

medium / low — confusable-tool-name, missing-annotations, unconstrained-sink-parameter, url-in-description, undocumented-tool.

이 중 두 가지는 선언문을 읽는 것만으로는 확인할 수 없습니다. 유니코드 태그 블록은 인쇄 가능한 ASCII를 보이는 너비가 없는 텍스트로 인코딩하며, mcpaudit은 디코딩된 내용을 보고합니다. 동일한 ASCII로 정규화되는 두 이름(search / ѕearch)은 메모리로 작성된 허용 목록을 우회합니다.

트라이지

심각도 기준으로 위에서 아래로 작업합니다. critical 발견은 중단점입니다: 연결하기 전에 해결하거나 위험을 문서로 승인받으세요. 깨끗한 결과는 결과입니다 — 잘 동작하는 서버는 발견이 없으며, 검토자가 빠르게 승인할 수 있습니다.

한계

이 도구는 선언문, 동작이 아닌 것을 읽습니다. 서버 구현이 올바른지 여부는 알 수 없으며, 광고 내용이 모델 앞에 두기에 안전한지만 확인합니다.

강제 적용 절반

승인된 도구 세트를 정책 파일로 고정하여, 검토 후 서버가 조용히 설명을 편집해도 CI가 실패하고 변경이 조용히 이루어지지 않도록 하는 것은 유료 버전입니다: MCP 서버 보안 검토, Agensi에 등록되어 있습니다. 해당 목록이 활성화될 때까지, 작업 예제가 포함된 규칙 참조는 https://github.com/sushant-me/mcpaudit-mcp-security 에 있습니다.

한계

이 도구는 선언문, 동작이 아닌 것을 읽습니다. 서버 구현이 올바른지 여부는 알 수 없으며, 광고 내용이 모델 앞에 두기에 안전한지만 확인합니다.

관련 스킬