@itapi-core/mcp-critical
v0.1.3
Published
AI가 Web/WAS 서버의 도메인/IP/포트를 입력받아 보안 취약점과 성능 개선점을 진단하고 조치 정보를 제공받을 수 있도록 하는 MCP 서버
Maintainers
Readme
mcp-critical
AI가 Web/WAS 서버의 도메인·IP·포트 정보를 입력받아 보안 취약점과 성능 개선점을 진단하고, 바로 적용 가능한 조치(코드/설정 스니펫 포함) 정보를 제공받을 수 있도록 하는 MCP 서버입니다.
안전 사용 원칙
이 도구는 본인이 소유했거나 서면으로 점검을 인가받은 자산에만 사용해야 합니다.
analyze_server/analyze_performance는 지정한 포트에만(기본 최대 10개, 대역 스캔 불가) 정확히 1회씩 비침습적으로 연결하며,
사설망/클라우드 메타데이터 주소는 기본적으로 차단됩니다. 네트워크 레벨 점검이 필요한 scan_active는
authorization.confirmedOwnerOrAuthorized를 명시적으로 true로 전달해야만 동작하며, 익스플로잇 페이로드는
전송하지 않습니다(포트 연결 확인 + 일반 브라우저 수준의 HEAD 요청만 수행). 인가되지 않은 시스템에
사용하는 것은 관련 법령 위반이 될 수 있습니다.
제공 도구
| 도구 | 설명 |
|---|---|
| analyze_server | 도메인/IP + 포트를 받아 HTTP 보안 헤더·쿠키·TLS·배너를 점검 (대표 진입점, 인가 불필요) |
| analyze_performance | 도메인/IP + 포트를 받아 압축·캐싱·HTTP/2·Keep-Alive·리다이렉트·응답지연(TTFB) 등 성능 개선점을 점검 (인가 불필요) |
| scan_active | 지정 포트에 순차 연결해 열림 여부/배너를 확인, 관리 콘솔·AJP 노출 등 진단 (옵트인, 인가 필수) |
| analyze_config | Nginx/Apache/Tomcat/JEUS/WebLogic/WebToB 설정 파일 텍스트 하드닝 분석 |
| analyze_dependencies | npm/Maven/Gradle/PyPI/Go 의존성을 OSV.dev와 대조 (SCA) |
| check_software_vulnerabilities | 배너로 식별된 소프트웨어/버전의 최신 CVE를 OSV.dev에서 조회 |
| get_remediation_guide | 룰 ID/CWE/OWASP 또는 자유 텍스트로 조치 가이드 조회 |
| generate_report | 여러 스캔 결과를 Markdown/JSON 리포트로 병합 |
모든 스캔 결과는 정적 룰 매칭 결과(findings)와 함께 수집된 원본 근거(rawEvidence)를 반환해,
정적 룰이 아직 다루지 못하는 최신/신규 취약점 패턴을 AI가 직접 판단할 수 있게 합니다.
Claude에서 설정하기
Claude Code (CLI)
claude mcp add mcp-critical -- npx -y @itapi-core/mcp-critical여러 프로젝트에서 공용으로 쓰려면 -s user를, 스캔 대상 화이트리스트 등 환경변수를 함께 설정하려면
-e KEY=VALUE를 반복 사용한다(예: -e ALLOWED_SCAN_TARGETS=example.com). 등록 확인은 claude mcp list,
제거는 claude mcp remove mcp-critical. 정확한 플래그는 설치된 버전에 따라 다를 수 있으니
claude mcp add --help로 확인하는 것을 권장한다.
프로젝트 저장소에 팀 공용 설정을 커밋하고 싶다면 루트에 .mcp.json을 추가한다.
{
"mcpServers": {
"mcp-critical": {
"command": "npx",
"args": ["-y", "@itapi-core/mcp-critical"],
"env": {
"ALLOWED_SCAN_TARGETS": "",
"ALLOW_PRIVATE_TARGETS": "false"
}
}
}
}Claude Desktop
Settings → Developer → Edit Config에서 claude_desktop_config.json을 열고 아래를 추가한다(설정 후 앱 재시작 필요).
{
"mcpServers": {
"mcp-critical": {
"command": "npx",
"args": ["-y", "@itapi-core/mcp-critical"],
"env": {
"ALLOWED_SCAN_TARGETS": "",
"ALLOW_PRIVATE_TARGETS": "false"
}
}
}
}설치 확인
새 대화에서 "mcp-critical의 analyze_server 도구로 example.com의 443 포트를 점검해줘"처럼 요청해
AI가 도구를 호출하고 보안 헤더/TLS 점검 결과와 조치 가이드를 반환하는지 확인한다. scan_active처럼
인가가 필요한 도구는 AI가 먼저 "본인 소유/인가된 자산이 맞는지" 확인을 요청하는 것이 정상 동작이다.
환경변수
| 변수 | 설명 | 기본값 |
|---|---|---|
| MCP_TRANSPORT | stdio | http | stdio |
| HTTP_PORT | HTTP transport 사용 시 포트 | 3333 |
| ALLOWED_SCAN_TARGETS | analyze_server/scan_active 대상 화이트리스트(CIDR/도메인, 콤마 구분) | 미설정 |
| ALLOW_PRIVATE_TARGETS | 사설 대역 스캔 허용 여부 | false |
| ACTIVE_SCAN_TIMEOUT_MS | scan_active 전체 스캔 타임아웃(ms) | 30000 |
| OSV_API_BASE | OSV.dev API 엔드포인트 | https://api.osv.dev |
| AUDIT_LOG_PATH | 감사 로그(JSONL) 파일 경로 | ./data/audit.log.jsonl |
로컬에서 실행 (개발/기여용)
npm install
npm run build
npm start # stdio로 MCP 서버 실행개발 중에는 npm run dev(tsx, 빌드 없이 즉시 실행)를 사용한다.
npm run typecheck
npm run lint
npm test # 네트워크 없이 실행되는 단위 테스트
RUN_LIVE_TESTS=true npm test # 실제 네트워크를 사용하는 회귀 테스트 포함
npm auditDocker
docker build -t mcp-critical:local .
docker run --rm -i --env-file .env mcp-critical:local라이선스
MIT
