ko-security-mcp
v0.1.0
Published
Korean Framework for Security - MCP server providing Korean security standards (MOIS 49, ISMS-P, Privacy Act) for LLM-assisted secure coding
Maintainers
Readme
KFS (Korean Framework for Security)
한국 보안 기준을 LLM에 제공하는 MCP(Model Context Protocol) 서버
소개
KFS(Korean Framework for Security)는 한국의 주요 보안 기준과 가이드라인을 LLM이 활용할 수 있도록 구조화된 데이터로 제공하는 MCP stdio 서버입니다.
다음 6개 보안 도메인의 데이터를 포함합니다:
| 도메인 | 설명 | |--------|------| | mois-49 | 행정안전부 소프트웨어 보안약점 49개 항목 | | isms-p | ISMS-P 인증기준 체크리스트 및 도메인 | | privacy | 개인정보보호법 안전성 확보조치 기준 | | egovframe | 전자정부 표준프레임워크 보안 설정 가이드 | | mobile-egov | 모바일 전자정부 보안 검증 가이드 | | mappings | CWE 기반 교차 매핑 테이블 |
모든 보안 기준은 CWE(Common Weakness Enumeration) ID를 피벗 키로 사용하여 상호 교차 참조됩니다. 하나의 CWE ID로 행안부 보안약점, ISMS-P 인증기준, 개인정보보호 조치, 전자정부 프레임워크 가이드를 한번에 연결할 수 있습니다.
주요 기능
Tools (7개)
MCP 클라이언트에서 호출할 수 있는 도구입니다.
| 도구명 | 설명 |
|--------|------|
| kfs_diagnose_weakness | 코드에서 행안부 49개 보안약점을 진단합니다. 코드와 언어를 입력하면 관련 보안약점, 진단기준, 안전한 코드 예시를 제공합니다. |
| kfs_lookup_vulnerability | CVE ID, 키워드, CWE ID로 취약점을 조회합니다. NVD/OSV API와 한국 보안기준 교차매핑 정보를 함께 제공합니다. |
| kfs_search_kisa_notice | KISA(한국인터넷진흥원) 보안공지를 검색합니다. 키워드로 최신 보안공지를 조회할 수 있습니다. |
| kfs_scan_package | 패키지의 알려진 취약점을 스캔합니다. OSV 데이터베이스를 조회하고 한국 보안기준 매핑 정보를 제공합니다. |
| kfs_cross_reference | CWE, 행안부 보안약점, ISMS-P 코드 간의 교차 매핑을 조회합니다. 하나의 기준에서 관련된 모든 한국 보안기준을 찾을 수 있습니다. |
| kfs_check_ismsp | ISMS-P 인증기준 체크리스트를 조회합니다. 도메인별, 키워드별로 필터링하고 기술적 보호조치 관련 항목만 조회할 수 있습니다. |
| kfs_egovframe_guide | 전자정부 프레임워크 보안 설정 가이드를 조회합니다. 인증, XSS 방지, SQL Injection 방지, 파일 업로드, 세션 관리, 에러 처리 등의 토픽별 설정 가이드를 제공합니다. |
Resources (8개 URI)
MCP 클라이언트가 읽을 수 있는 정적/동적 리소스입니다.
| URI | 설명 |
|-----|------|
| kfs://mois49/weaknesses | 행안부 49개 보안약점 전체 목록 |
| kfs://mois49/weakness/{id} | 개별 보안약점 상세 조회 (예: SR1-01) |
| kfs://ismsp/checklist | ISMS-P 인증기준 전체 체크리스트 |
| kfs://ismsp/domain/{code} | ISMS-P 도메인별 체크리스트 필터 (예: 1, 2, 3) |
| kfs://privacy/measures | 개인정보보호 안전성 확보조치 전체 목록 |
| kfs://egovframe/security | 전자정부 프레임워크 보안 설정 전체 목록 |
| kfs://egovframe/security/{topic} | 토픽별 보안 설정 조회 (예: authentication, xss-prevention) |
| kfs://mappings/cross-reference | CWE 기반 전체 교차 매핑 테이블 |
Prompts (4개)
미리 정의된 프롬프트 템플릿입니다.
| 프롬프트명 | 설명 | 매개변수 |
|------------|------|----------|
| kfs_secure_code_review | 한국 보안기준(행안부 49개, ISMS-P) 기반 시큐어 코드 리뷰 | code (필수), language (필수), standard (선택: mois49 | ismsp) |
| kfs_compliance_checklist | 시스템 유형별 한국 보안 컴플라이언스 체크리스트 생성 | systemType (필수: web | mobile | api), framework (선택) |
| kfs_vulnerability_report | 패키지 취약점 평가 보고서 생성 | packageList (필수, 쉼표 구분), format (선택: summary | detailed) |
| kfs_egovframe_review | 전자정부 프레임워크 보안 설정 리뷰 | configXml (필수) |
설치 방법
소스에서 빌드 (현재 권장)
git clone https://github.com/picpal/KFS.git
cd KFS
npm install
npm run buildnpx (npm 게시 후 사용 가능)
# npm에 게시된 후 사용 가능합니다
npx kfsnpm global 설치 (npm 게시 후 사용 가능)
# npm에 게시된 후 사용 가능합니다
npm install -g kfs
kfsMCP 클라이언트 설정
Claude Desktop
설정 파일 경로:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
npx 방식 (npm 게시 후)
{
"mcpServers": {
"kfs": {
"command": "npx",
"args": ["-y", "kfs"],
"env": {
"NVD_API_KEY": "your-nvd-api-key"
}
}
}
}소스 빌드 방식
{
"mcpServers": {
"kfs": {
"command": "node",
"args": ["/absolute/path/to/KFS/dist/index.js"],
"env": {
"NVD_API_KEY": "your-nvd-api-key"
}
}
}
}환경 변수 (Optional)
| 환경 변수 | 설명 | 기본값 |
|-----------|------|--------|
| NVD_API_KEY | NVD API 키. 설정 시 API 레이트 제한이 완화됩니다. | 없음 (미인증 요청) |
| KFS_CACHE_DISABLED | true로 설정하면 내부 메모리 캐시를 비활성화합니다. | false (캐시 활성화) |
| KFS_DEBUG | true로 설정하면 디버그 로그를 활성화합니다. | false |
OSV API와 KISA 보안공지 조회에는 API 키가 필요하지 않습니다.
사용 예시
MCP 클라이언트(Claude Desktop 등)에서 다음과 같이 활용할 수 있습니다.
1. 코드 보안약점 진단
"이 Java 코드에서 보안약점을 진단해줘"
kfs_diagnose_weakness 도구가 코드를 분석하여 행안부 49개 보안약점 항목 중 해당되는 항목을 식별하고, 진단 기준과 안전한 코드 예시를 제공합니다.
2. 취약점 교차 참조
"CWE-89가 한국 보안기준에서 어떻게 매핑되는지 알려줘"
kfs_cross_reference 도구가 CWE-89(SQL Injection)와 관련된 행안부 보안약점(SR1-01), ISMS-P 인증기준, 개인정보보호 조치를 한번에 조회합니다.
3. 패키지 취약점 스캔
"lodash 4.17.20 버전의 알려진 취약점을 확인해줘"
kfs_scan_package 도구가 OSV 데이터베이스에서 해당 패키지의 취약점을 조회하고, 한국 보안기준과의 연관 정보를 함께 제공합니다.
데이터 구조
data/
├── mois-49/
│ ├── categories.json # 행안부 49개 보안약점 카테고리 (SR1~SR7)
│ └── weaknesses.json # 49개 보안약점 상세 (진단기준, 코드 예시 포함)
├── isms-p/
│ ├── domains.json # ISMS-P 인증기준 도메인 정의
│ └── checklist.json # ISMS-P 인증기준 체크리스트 항목
├── privacy/
│ └── measures.json # 개인정보보호법 안전성 확보조치 기준
├── egovframe/
│ └── security-configs.json # 전자정부 프레임워크 보안 설정 가이드
├── mobile-egov/
│ └── verification-guide.json # 모바일 전자정부 보안 검증 가이드
└── mappings/
└── cross-reference.json # CWE 기반 전체 교차 매핑 테이블모든 보안 기준은 CWE ID를 피벗 키로 연결됩니다. cross-reference.json에서 하나의 CWE ID를 조회하면 행안부 보안약점 ID, ISMS-P 코드, 개인정보보호 조치, 모바일 전자정부 검증 항목을 한번에 확인할 수 있습니다.
개발 가이드
요구사항
- Node.js >= 18.0.0
명령어
# 의존성 설치
npm install
# 개발 모드 실행 (tsx)
npm run dev
# 테스트 실행
npm test
# 테스트 감시 모드
npm run test:watch
# 린트 검사
npm run lint
# 프로덕션 빌드
npm run build코드 규칙
- 코드 언어: 변수, 함수, 주석 등 모든 코드는 영어로 작성
- 데이터 언어: 한국 보안 콘텐츠(보안약점명, 설명 등)는 한국어로 유지
- 모듈: ESM(ECMAScript Modules) 사용, import 경로에
.js확장자 필수 (Node16 module resolution) - 로깅:
src/utils/logger.ts를 통한 stderr 출력만 사용.console.log는 MCP stdio 프로토콜을 오염시키므로 절대 사용 금지 - 도구 네이밍: MCP Tool 이름은
kfs_접두사 사용 - 테스트: Kent Beck TDD(Red-Green-Refactor) 방식.
tests/디렉토리에src/구조를 미러링하여 배치
기술 스택
| 기술 | 용도 | |------|------| | TypeScript 5.8 | 정적 타입 검사 및 ESM 빌드 | | @modelcontextprotocol/sdk | MCP 프로토콜 서버 구현 | | Zod | 런타임 스키마 검증 (도구 입력 파라미터) | | cheerio | HTML 파싱 (KISA 보안공지 스크래핑) | | vitest | 테스트 프레임워크 | | tsx | 개발 모드 TypeScript 실행 |
라이선스
MIT License
