
MCP 서버를 감싸는 프록시 서버로, 행동 프로파일링, 보안 스캐닝, 위험 게이팅, 안전한 실행을 제공합니다. 프롬프트 인젝션, 악성 툴 메타데이터, 인수 인젝션, 소스 코드 위험, 자격 증명 노출을 탐지합니다.
MCP safety warden은 모든 MCP 서버를 감싸고 해당 도구에 동작 프로파일링, 보안 스캐닝, 위험 게이팅, 안전한 실행을 추가하는 프록시 서버입니다.
[!IMPORTANT] MCP 보안은 활발한 연구 분야입니다. 최근 조사 보고서들은 프로토콜 특화 위협 유형(도구 중독, 프롬프트 인젝션, 러그풀 공격, 공급망 손상, 자격 증명 유출, 전체 서버 수명 주기에 걸친 구성 공격 등)을 광범위하게 분류하고 있습니다. Securing the MCP (OpenReview), Landscape & Threats (arXiv), When MCP Servers Attack (arXiv), MCP-38 Taxonomy (arXiv)를 참조하세요.
프록시로 사용하여 모든 MCP 서버에 안전 게이팅을 추가하거나, 소유하지 않은 서버를 대상으로 도구 호출 없이 전체 보안 감사를 실행할 수 있습니다.
그림 1. 두 가지 작동 모드: 프록시 및 감사
동작 프로파일링: 효과 클래스, 재시도 안전성, 파괴성. LLM 기반(Anthropic, OpenAI, Gemini, Ollama) 및 규칙 기반 대체. 모든 프록시 호출 후 관측 통계(지연 시간 p50/p95, 실패율, 출력 크기) 업데이트.
보안 스캐닝: mcpsafety+ 5단계 파이프라인(Recon, Planner, Hacker, Auditor, Supervisor). Cisco AI Defense (AST/YARA). Snyk (메타데이터 분석). Kali 및 Burp Suite 통합으로 파이프라인에 실제 네트워크 데이터와 HTTP 계층 프로브를 제공합니다. GitHub의 소스 코드 스캐닝(엔트로피, AST, 오염 흐름, 러그풀 탐지 포함).
그림 2. mcpsafety+ 5단계 파이프라인 – 모든 MCP 서버에 대해 전체 보안 감사를 실행할 때 작동
안전한 실행: 인수 스캐닝(20개 이상의 공격 카테고리, LLM 2차 검증). 2계층 출력 인젝션 스캐닝. 대안 및 도구별 정책을 포함한 위험 게이팅. 모든 호출 시 드리프트 탐지 및 독립형 검사.
그림 3. 안전한 실행 파이프라인: 프록시된 모든 도구 호출이 통과하는 5가지 검사
CLI: 24개 서브명령어, 대화형 위험 메뉴, 모든 명령에 --json 플래그, CI용 --yes.
탐지 항목
키가 없으면 래퍼는 규칙 기반 전용 모드로 작동합니다: 낮은 신뢰도의 도구 분류, 정규식 전용 인젝션 스캔, 위험 게이트의 대안 없음, mcpsafety+ 파이프라인 비활성화. 완전 로컬 설정을 위해 Ollama를 실행하고 OLLAMA_MODEL을 설정한 후 명시적으로 --provider ollama를 전달하세요 (Ollama는 자동 감지되지 않음).
[!NOTE] 로컬 설정이 필요한 stdio 서버(시작 전 로컬 구성이 필요한 stdio 서버 – 누락된 구성 파일, 자격 증명, 데이터 디렉터리, OS별 종속성)는 래퍼가 검사할 수 없습니다. 도구 검색이 실패하고 0개의 도구가 저장됩니다.
scan/onboard에--github-url을 전달하거나security_scan_server에github_url매개변수를 전달하여 서버를 실행하지 않고도 전체 소스 코드 보안 스캔을 실행할 수 있습니다. mcpsafety+ 파이프라인은 GitHub에서 직접 소스를 가져와 분석합니다.sse및streamable_http서버는 영향을 받지 않습니다.
pip install mcpsafetywarden
모든 옵션 추가 기능 포함:
pip install "mcpsafetywarden[all]"
또는 특정 추가 기능:
pip install "mcpsafetywarden[anthropic,snyk]"
소스에서 설치:
git clone https://github.com/gautamvarmadatla/mcpsafetywarden
cd mcpsafetywarden
pip install .
SQLite 데이터베이스는 첫 실행 시 플랫폼 사용자 데이터 디렉터리(Linux의 경우 ~/.local/share/mcpsafetywarden/, macOS의 경우 ~/Library/Application Support/mcpsafetywarden/, Windows의 경우 %APPDATA%\mcpsafetywarden\)에 자동 생성됩니다. MCP_DB_PATH로 재정의할 수 있습니다.
자격 증명 보호 (자동, 추가 작업 불필요)
register_server 또는 onboard_server에 전달된 비밀 값(Bearer 토큰, headers 또는 env의 API 키)은 모델 컨텍스트에 닿기 전에 자동으로 감지되어 불투명한 cref_ 식별자로 대체됩니다. 실제 자격 증명은 데이터베이스에 암호화되어 저장되며 연결 시점에 자동으로 해석됩니다. 모델, 대화 내역, 로그는 cref_<id>만 볼 수 있습니다.
선택 사항: 저장된 자격 증명의 저장 시 암호화
pip install cryptography
python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
서버 시작 전에 출력된 키를 MCP_DB_ENCRYPTION_KEY로 설정하세요. 이렇게 하면 서버 자격 증명과 cref_ 값이 저장 시 암호화됩니다.
모든 구성은 환경 변수를 통해 이루어집니다.
보안 참고: API 키나 암호화 키를 커밋하지 마십시오. 래퍼는 stdio 서버를 실행하기 전에 자식 프로세스 환경에서 자체 비밀을 제거합니다.
래퍼를 claude_desktop_config.json에 추가:
{
"mcpServers": {
"mcpsafetywarden": {
"command": "mcpsafetywarden-server",
"args": [],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-...",
"MCP_DB_ENCRYPTION_KEY": "<생성된_fern_키>"
}
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"]
}
}
}
각 서버를 사용 전에 래퍼에 등록:
mcpsafetywarden register filesystem --transport stdio \
--command npx \
--args '["-y", "@modelcontextprotocol/server-filesystem", "/Users/yourname/Documents"]'
모든 도구 호출이 래퍼를 거쳐야 하는 필수 게이트웨이 설정은 docs/DEPLOYMENT.md를 참조하세요.
전체 도구 참조는 docs/TOOLS.md를 참조하세요.
25개 MCP 도구를 포괄하는 24개 서브명령어. 모든 명령은 기계 판독 가능 출력을 위한 --json과 확인 프롬프트를 건너뛰기 위한 --yes / -y를 지원합니다.
전체 참조(플래그 및 예제 포함)는 docs/CLI.md를 참조하세요.
Kali Linux MCP, Burp Suite MCP, Snyk는 등록되면 자동으로 통합됩니다. Kali는 Recon 단계와 ping_server에 실제 nmap/traceroute 데이터를 제공합니다. Burp는 원시 HTTP 프로빙, 대역 외 콜백, 프록시 증거를 추가합니다. Snyk는 도구 메타데이터를 분석하여 인젝션 문자열, 도구 섀도잉, 하드코딩된 비밀 및 기타 16가지 검사를 수행합니다.
설정 방법은 docs/INTEGRATIONS.md를 참조하세요.
편집 가능 모드로 설치:
pip install -e ".[all]"
서버 실행 및 로그 확인:
mcpsafetywarden-server 2>server.log
모든 모듈은 logging.getLogger(__name__)을 사용합니다. 서버는 logging.basicConfig를 직접 호출하지 않습니다. 엔트리 포인트에서 로깅을 구성한 후 임포트하세요.
pytest tests/ -v
LLM 지원 테스트를 포함하려면 LLM API 키를 설정하세요. 키가 없으면 자동으로 건너뜁니다. 분류, 인젝션 스캔, 위험 게이팅, 정책 적용에 대한 단계별 확인은 docs/TESTING.md를 참조하세요.
코드 표준 및 풀 리퀘스트 지침은 CONTRIBUTING.md를 참조하세요.
Apache License 2.0. 자세한 내용은 LICENSE를 참조하세요.
| 변수 | 기본값 | 용도 |
|---|
MCP_TRANSPORT | stdio | 전송 모드: stdio, sse, 또는 streamable_http |
MCP_HOST | 127.0.0.1 | HTTP 전송용 바인드 주소 |
MCP_PORT | 8000 | HTTP 전송용 바인드 포트 |
MCP_AUTH_TOKEN | (설정 안 됨) | HTTP 전송 인증용 Bearer 토큰 |
MCP_DB_ENCRYPTION_KEY | (설정 안 됨) | 저장된 자격 증명을 저장 시 암호화하는 Fernet 키 |
ANTHROPIC_API_KEY | (설정 안 됨) | LLM 제공자로 Anthropic 활성화 |
OPENAI_API_KEY | (설정 안 됨) | LLM 제공자로 OpenAI 활성화 |
GEMINI_API_KEY 또는 GOOGLE_API_KEY | (설정 안 됨) | LLM 제공자로 Gemini 활성화 (GEMINI_API_KEY 권장) |
OLLAMA_MODEL | (설정 안 됨) | Ollama용 모델 이름 (예: llama3.1) |
OLLAMA_BASE_URL | http://localhost:11434/v1 | Ollama API 기본 URL |
SNYK_TOKEN | (설정 안 됨) | Snyk E001 프롬프트 인젝션 탐지 활성화 |
MCP_SCANNER_API_KEY | (설정 안 됨) | Cisco AI Defense 클라우드 ML 엔진 키 |
MCP_SCANNER_LLM_API_KEY | (설정 안 됨) | Cisco 내부 AST 분석용 LLM 키 |
MCP_DB_PATH | (설정 안 됨) | SQLite 데이터베이스 파일 경로 재정의 |
MCP_GRAPH_POLICY | warn | safe_tool_call에서 그래프 적용: off (비활성화), warn (위험 컨텍스트를 응답에 첨부), block (치명적/높은 블래스트 반경 도구를 approved=True가 아닌 경우 하드 블록) |
GITHUB_TOKEN | (설정 안 됨) | 소스 코드 스캐닝용 GitHub 개인 액세스 토큰 (요청 속도 제한을 60에서 5,000 req/hour로 증가) |
| 도구 | 기능 |
|---|
onboard_server | 등록 + 검사 + 보안 스캔을 한 번에 수행 |
register_server | 서버 등록; 선택적으로 자동 검사 |
inspect_server | 도구 목록 및 프로필 새로고침 |
check_server_drift | 저장된 기준과 스키마 및 도구 목록 드리프트 감지 |
list_servers | 등록된 모든 서버 나열 |
list_server_tools | 서버의 도구와 요약 프로필 나열 |
preflight_tool_call | 실행 없이 위험 평가 |
safe_tool_call | 위험 게이팅 및 대안과 함께 실행 |
get_tool_profile | 관측 통계가 포함된 전체 동작 프로필 |
get_retry_policy | 재시도 및 타임아웃 권장 사항 |
suggest_safer_alternative | LLM 순위 매긴 더 안전한 대안 |
run_replay_test | 멱등성 테스트 (도구를 두 번 호출) |
security_scan_server | 라이브 보안 감사 (mcpsafety+, Cisco, Snyk) |
scan_all_servers | 등록된 모든 서버에 대한 mcpsafety+ 파이프라인 실행 |
get_security_scan | 가장 최근 저장된 스캔 보고서 |
set_tool_policy | 도구에 대한 영구 허용/차단 정책 설정 |
get_run_history | 도구의 최근 실행 기록 |
ping_server | 지연 시간 포함 연결 확인 |
discover_servers | 파일시스템에서 MCP 클라이언트 구성 검색 및 서버 항목 추출 |
onboard_discovered_servers | 발견된 서버를 일괄 등록 |
get_risk_graph | 인벤토리 위험 그래프 구축 또는 조회 (서버, 도구, 결과, 에이전트 클라이언트) |
explain_tool_risk | 도구의 위험 경로 탐색: 블래스트 반경, 구성 위험, MITRE 태그, 권장 조치 |
explain_client_risk | 하나의 에이전트 클라이언트 아래 모든 서버에 대한 교차 서버 위험 분석 |
analyze_cve_blast_radius | 동일한 클라이언트 아래 여러 서버에 영향을 미치는 CVE 보고 |
export_graph | 위험 그래프를 JSON 또는 Mermaid 다이어그램으로 내보내기 |
| 문서 | 내용 |
|---|
| docs/TOOLS.md | 25개 MCP 도구 전체 참조 |
| docs/CLI.md | CLI 서브명령어, 플래그, 예제 |
| docs/INTEGRATIONS.md | Kali, Burp Suite, Snyk 설정 |
| docs/DEPLOYMENT.md | stdio, HTTP, 컨테이너, 게이트웨이 배포 |
| docs/TROUBLESHOOTING.md | 일반적인 오류 및 해결 방법 |
| docs/SECURITY.md | 비밀, 인증, 격리, 스캔 세부 사항 |
| docs/TESTING.md | 각 기능별 확인 단계 |
| docs/COMPARISON.md | 관련 도구와 비교 |
| docs/ROADMAP.md | 계획된 기능 |