# io.github.EricSeokgon/egovframe-scaffold-mcp (npm · egovframe-scaffold-mcp)

eGovFrame (전자정부 표준프레임워크) projects: templates, components, CRUD, build, 5.x migration, dependencies

- Trust score: 81/100 (high trust)
- Change this week: +32
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-18

## Components

- npm · `egovframe-scaffold-mcp`: 81/100 (this document), [markdown](https://verifymcp.io/servers/ericseokgon-egovframe-scaffold-mcp/egovframe-scaffold-mcp.md), [page](https://verifymcp.io/servers/ericseokgon-egovframe-scaffold-mcp/egovframe-scaffold-mcp)

## Channel facts

- Registry: `npm`
- Package: `egovframe-scaffold-mcp`
- Version: `1.0.2`
- Transport: `stdio`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-18.

- **Supply Chain Security**: 98/100
  - No malware found by supply-chain analysis.
  - No known CVEs affecting this package version or its production dependencies.
  - No install/post-install scripts declared.
  - 35 of 100 dependencies flagged as unhealthy.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to EricSeokgon/egovframe-scaffold-mcp).
  - Clear OSI-approved license (Apache-2.0).
  - Actively maintained (last published 0 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 70/100
  - 91% of prompts and resources have a non-trivial description (not blank, and not just the item's name).
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 11228 tokens (~273/item across 41 items; 34 tools + 7 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 13/100
  - Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (38% of tools); any adoption earns full credit.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.
  - An AI judge read all 35 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the io.github.EricSeokgon/egovframe-scaffold-mcp server?

io.github.EricSeokgon/egovframe-scaffold-mcp runs locally as an npm package, launched with npx -y egovframe-scaffold-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add ericseokgon-egovframe-scaffold-mcp -- npx -y egovframe-scaffold-mcp
```

### Cursor

```json
{
  "mcpServers": {
    "ericseokgon-egovframe-scaffold-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "egovframe-scaffold-mcp"
      ]
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "ericseokgon-egovframe-scaffold-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "egovframe-scaffold-mcp"
      ]
    }
  }
}
```

### Codex

```bash
codex mcp add ericseokgon-egovframe-scaffold-mcp -- npx -y egovframe-scaffold-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ericseokgon-egovframe-scaffold-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "egovframe-scaffold-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ericseokgon-egovframe-scaffold-mcp --command npx --arg -y --arg egovframe-scaffold-mcp
```

### Hermes

```yaml
mcp_servers:
  ericseokgon-egovframe-scaffold-mcp:
    command: "npx"
    args: ["-y", "egovframe-scaffold-mcp"]
```

### Netclaw

```json
{
  "McpServers": {
    "ericseokgon-egovframe-scaffold-mcp": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "egovframe-scaffold-mcp"
      ]
    }
  }
}
```

### Vellum

```bash
assistant mcp add ericseokgon-egovframe-scaffold-mcp -t stdio -c npx -a -y egovframe-scaffold-mcp
```

### Other

```json
{
  "mcpServers": {
    "ericseokgon-egovframe-scaffold-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "egovframe-scaffold-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-18 (score 81, +26)

- [security improvement] Malware scan: unverified → pass
- [security improvement] Known CVEs: unverified → pass
- [functional improvement] Dependency health: unverified → 0.84

### 2026-10-17 (score 55, −25)

- [security regression] Known CVEs: pass → unverified
- [security regression] Malware scan: pass → unverified
- [functional regression] Dependency health: 0.84 → unverified
- [functional] Package version: 0.47.0 → 1.0.2
- [functional] Package version: 0.47.0 → 1.0.1
- [functional] Package version: 0.47.0 → 1.0.0

### 2026-10-16 (score 80, 0)

- [functional] Package version: 0.46.0 → 0.47.0

### 2026-10-15 (score 80, 0)

- [security regression] Tool safety: pass → unverified
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [functional regression] Capabilities: pass → unverified
- [functional regression] Schema quality: 91 → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional improvement] Stability: unverified → 0.03
- [functional] Package version: 0.45.0 → 0.46.0

### 2026-10-14 (score 80, +31)

- [security improvement] Injection markers: unverified → pass
- [security] First check of Judged manipulation: pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] Schema quality: unverified → 91
- [functional improvement] MCP protocol: unverified → pass
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: fail
- [functional] First check of Destructive annotations: 100
- [functional] First check of Schema quality: good
- [functional] First check of Tool coverage: 100
- [functional] First check of Tool coverage: 38
- [functional] Package version: 0.44.0 → 0.45.0

### 2026-10-13 (score 49, 0)

- [functional] Package version: 0.43.0 → 0.44.0

### 2026-10-12 (score 49, 0)

- [functional] Package version: 0.38.0 → 0.43.0

### 2026-10-07 (score 49)

First indexed and scored.

## MCP tools (34)

### `list_egovframe_templates` (~33 tokens)

공식 템플릿 목록

사용 가능한 전자정부 표준프레임워크 프로젝트 템플릿 목록을 반환합니다.

### `create_egovframe_project` (~369 tokens)

프로젝트 생성

전자정부 표준프레임워크 공식 템플릿으로 새 프로젝트 골격을 생성합니다. 공식 GitHub 템플릿을 내려받아 projectName/groupId/DB 타입을 적용합니다. dryRun=true로 먼저 미리보기할 수 있습니다. alignParent=true 면 생성 직후 5.x parent·RTE 버전을 최신 5.0.x 로 맞춥니다(공식 Initializr 템플릿은 parent 5.0.0·5.0.1).

Input parameters:

- `alignParent` (boolean): true면 생성 직후 pom 의 5.x parent·RTE 버전을 최신 5.0.x(공식 parent 기준)로 맞춤. 기본 false = 공식 템플릿 그대로(Initializr 템플릿은 parent 5.0.0·5.0.1)
- `database` (string): DB 타입 (템플릿 지원: hsql|mysql|oracle|altibase|tibero)
- `dryRun` (boolean): true면 디스크에 쓰지 않고 생성 예정 내용만 미리보기
- `groupId` (string, required): 자바 groupId. 예: egovframework.example
- `outputDir` (string, required): 프로젝트를 생성할 상위 디렉터리(절대경로 권장)
- `projectName` (string, required): 프로젝트명(artifactId). 소문자·숫자·하이픈, 예: my-egov-app
- `ref` (string): 내려받을 브랜치/태그(미지정 시 템플릿 기본 브랜치). 예: main, v4.3.0
- `template` (string): 템플릿 종류

### `sync_egovframe_catalog` (~86 tokens)

컴포넌트 카탈로그 upstream 대조

공식 egovframe-common-components 태그·commit·아카이브 무결성을 검증하고, 고정 카탈로그 대비 upstream 변경과 sec.security 보안 패키지를 점검합니다.

Input parameters:

- `ref` (string): 확인할 태그·브랜치·commit. 미지정 시 카탈로그의 공식 고정 태그 사용

### `sync_egovframe_templates` (~154 tokens)

템플릿 카탈로그 upstream 대조

공식 프로젝트 템플릿 통합 카탈로그(Initializr·MCP·Development)를 upstream 과 대조해 추가·삭제·변경과 MCP 커버리지 격차를 보고하고, 동봉한 5.x 전환 규칙·의존성 기준 카탈로그의 drift(egovframe-runtime·공통컴포넌트의 새 태그, 공식 parent 의 새 버전, 고정 pom sha256 변화)도 함께 보고합니다. 파일은 고치지 않습니다.

Input parameters:

- `ref` (string): 확인할 Initializr 저장소의 브랜치·태그·commit. 미지정 시 고정 카탈로그의 branch 사용

### `list_egovframe_components` (~49 tokens)

공통컴포넌트 목록

선택 설치를 지원하는 공통컴포넌트 카탈로그를 반환합니다 (저장소 스캔으로 자동 생성, scripts/generate-catalog.mjs).

### `add_egovframe_components` (~235 tokens)

공통컴포넌트 조립

공통컴포넌트를 골라 기존 프로젝트에 조립합니다. 의존 컴포넌트를 포함해 소스·매퍼·JSP를 복사하고, database 지정 시 DB DDL·DML 스크립트도 복사합니다. 기존 파일과 충돌하면 아무것도 쓰지 않고 거부합니다. dryRun=true로 먼저 미리볼 수 있습니다.

Input parameters:

- `components` (array, required): 컴포넌트 id 목록. 예: ["bbs", "login"]
- `database` (string): DB 스크립트 복사 대상 DB (altibase|cubrid|goldilocks|maria|mysql|oracle|postgres|tibero)
- `dryRun` (boolean): true면 복사 없이 설치 순서·규모만 미리보기(네트워크 불필요)
- `includeDependencies` (boolean): 의존 컴포넌트 자동 포함 여부
- `projectDir` (string, required): 대상 프로젝트 디렉터리(절대경로 권장). 먼저 create_egovframe_project로 생성

### `search_egovframe_components` (~107 tokens)

공통컴포넌트 검색

키워드로 공통컴포넌트를 검색합니다 (id·이름·설명·카테고리 부분 일치, 점수순 상위 10건).

Input parameters:

- `category` (string): 카테고리 필터 (cmm|cop|uss|sym|sec|utl|dam|ext|ssi|sts|uat)
- `query` (string, required): 검색어. 예: 게시판, bbs, 로그인

### `remove_egovframe_components` (~172 tokens)

공통컴포넌트 제거

add_egovframe_components로 조립한 컴포넌트를 제거합니다. 설치 매니페스트에 기록된 파일만 삭제하며, 다른 설치 컴포넌트가 의존하거나 설치 시점 hash와 달라진 파일은 기본 거부합니다. force=true는 remove-backup/에 사본을 만든 뒤 트랜잭션 제거하며, dryRun 미리보기를 지원합니다.

Input parameters:

- `components` (array, required): 제거할 컴포넌트 id 목록
- `dryRun` (boolean): true면 삭제 없이 대상만 미리보기
- `force` (boolean): 사용자 수정·hash 미검증 파일도 remove-backup/에 백업한 뒤 제거
- `projectDir` (string, required): 대상 프로젝트 디렉터리

### `validate_egovframe_project` (~66 tokens)

프로젝트 무결성 검증

조립된 프로젝트의 무결성을 진단합니다: 설치 매니페스트 기준 파일 존재 확인, Globals.DbType과 복사된 DB 스크립트 일치 확인.

Input parameters:

- `projectDir` (string, required): 검증할 프로젝트 디렉터리

Output parameters:

- `aiChecks` (array)
- `components` (array)
- `dbScriptDirs` (array)
- `dbType` (string|null)
- `manifestFound` (boolean)
- `ok` (boolean)
- `projectDir` (string)
- `warnings` (array)

### `get_egovframe_guide` (~109 tokens)

공식 가이드 조회

컴포넌트의 공식 가이드 문서(표준프레임워크 포털 egovframe-docs)를 가져옵니다. 문서가 여러 건이면 목록을 함께 반환하며 docIndex로 선택할 수 있습니다.

Input parameters:

- `component` (string, required): 컴포넌트 id. 예: bbs, login, cop.cmy
- `docIndex` (integer): 문서가 여러 건일 때 선택 (0부터, 기본 0)

### `add_ai_components` (~309 tokens)

AI 계층 조립

공식 egovframe-ai-rag 샘플 기반 AI RAG 챗봇(문서 업로드→임베딩→하이브리드 검색→LLM 응답)을 기존 Boot 프로젝트에 조립합니다. 소스·설정(application-ai.yml 프로필)·UI·인프라를 복사하고 pom에 누락 의존성만 마커 구간으로 삽입합니다(백업 생성, 제거 시 원복). 기존 파일과 충돌하면 아무것도 쓰지 않고 거부합니다. dryRun=true로 먼저 미리볼 수 있습니다.

Input parameters:

- `dryRun` (boolean): true면 복사·병합 없이 계획만 미리보기(네트워크 불필요)
- `includeInfra` (boolean): docker-compose.ai.yml·Dockerfile.ai·k8s/ai 복사
- `includeTests` (boolean): 샘플 테스트 복사
- `includeUi` (boolean): 채팅 UI(chat.html·static) 복사
- `projectDir` (string, required): 대상 프로젝트 디렉터리(절대경로 권장). egovframe-boot-starter-parent 기반 Boot 프로젝트
- `ref` (string): egovframe-ai-rag 브랜치/태그 (기본: 카탈로그 기준 브랜치)
- `stack` (string, required): AI 스택: spring-ai(Redis Stack) | langchain4j(PGVector). 상호 배타

### `list_egovframe_recipes` (~55 tokens)

레시피 목록

큐레이션된 레시피(템플릿+컴포넌트 번들) 목록을 반환합니다. apply_egovframe_recipe로 한 번에 조립할 수 있습니다.

### `apply_egovframe_recipe` (~184 tokens)

레시피 적용

레시피 하나를 골라 프로젝트 생성 → 공통컴포넌트(필요 시 AI 계층) 조립까지 순차 실행합니다. dryRun=true로 전체 계획을 먼저 미리볼 수 있습니다.

Input parameters:

- `database` (string): DB 스크립트 대상(미지정 시 레시피 기본값)
- `dryRun` (boolean): true면 디스크 변경 없이 전체 계획만 미리보기
- `groupId` (string): 자바 groupId
- `outputDir` (string, required): 생성할 상위 디렉터리(절대경로 권장)
- `projectName` (string, required): 프로젝트명(artifactId). 소문자·숫자·하이픈
- `recipeId` (string, required): list_egovframe_recipes의 id. 예: board-login

### `diagnose_egovframe_project` (~118 tokens)

프로젝트 진단

기존(스캐폴딩 도구로 만들지 않은 것 포함) 전자정부 표준프레임워크 프로젝트를 스캔해 빌드시스템·RTE 버전·DbType·설치된 공통컴포넌트(카탈로그 pathPrefixes 지문)·설정 문제를 진단합니다. 디스크를 변경하지 않는 읽기 전용입니다.

Input parameters:

- `projectDir` (string, required): 진단할 프로젝트 디렉터리(절대경로 권장)

Output parameters:

- `aiLayer` (boolean)
- `buildSystem` (string)
- `database` (string|null)
- `detectedComponents` (array)
- `egovVersion` (string|null)
- `hasManifest` (boolean)
- `isEgovProject` (boolean)
- `issues` (array)
- `projectDir` (string)
- `suggestions` (array)

### `migrate_egovframe_project` (~899 tokens)

5.x 전환 진단·적용

표준프레임워크 3.x/4.x 프로젝트를 5.x(Jakarta EE 9+, Spring 6, Java 17) 로 옮기기 위해 바꿔야 할 것을 파일·라인 단위로 진단하고(1단계), apply=true 이면 auto 항목을 실제로 치환합니다(2단계). 진단: RTE Maven 좌표(egovframework.rte → org.egovframe.rte:egovframe-rte-*)·패키지(egovframework.rte.* → org.egovframe.rte.*)·5.x 에서 이름이 바뀌거나 제거된 클래스·javax→jakarta 패키지와 의존성·web.xml 스키마·제거된 egov-* XML 네임스페이스·교체 필요 라이브러리, 항목마다 auto(기계 치환 가능)/manual(코드 수정 필요). 적용: apply=true 는 dryRun=true(기본)면 파일별 변경 미리보기만 돌려주고, dryRun=false 면 auto 항목을 하나의 transaction 으로 치환하며 원본을 migration-backup/<시각>/ 에 보관하고 migration-plan.json 을 남깁니다(중간 실패 시 작업 전 상태로 복구). manual 항목은 건드리지 않고 결과에 남깁니다. verify=true 는 3단계(검증): 적용 뒤 compile 을 실행해 컴파일 오류를 수동 항목과 연결하고 "이 항목을 처리하면 해결될 오류 수" 순으로 작업 목록을 만듭니다. 3.x 공통컴포넌트 소스가 섞여 있으면 컴포넌트 단위 재조립 권고를 내고 skipComponents 로 치환에서 뺄 수 있습니다. 규칙은 egovframe-runtime·egovframe-common-components 태그 비교로 만든 동봉 카탈로그(catalog/migration-rules.json)에서 읽습니다. target 에 5.0.2 같은 5.0.x 를 주면 이미 5.x 인 프로젝트의 갱신 모드가 됩니다: parent·RTE 버전 속성·RTE 의존성 리터럴 버전과 예전 parent 기본값을 그대로 덮어쓴 속성은 auto, 그 사이 바뀐 RTE API·동작(보안 설정 Bean 시그니처, 엑셀 수식 주입 방지, XML XXE 차단 등)을 프로젝트가 참조하는 곳과 공통컴포넌트 최신 유지(upgrade·reassemble 안내)는 manual 로 보고하며, apply·dryRun·verify 는 전환과 같게 동작합니다(백업에 update-plan.json, 규칙 catalog/update-rules.json).

Input parameters:

- `apply` (boolean): true 면 2단계(적용). false(기본)면 진단만
- `dryRun` (boolean): apply=true 일 때만 의미. true(기본)면 파일별 변경 미리보기만, false 면 실제로 치환(백업 생성)
- `format` (string): 출력 형식. markdown=사람이 읽는 요약, json=항목 배열 그대로
- `projectDir` (string, required): 대상 프로젝트 디렉터리(절대경로 권장)
- `skipComponents` (boolean): true 면 3.x 공통컴포넌트 디렉터리(재조립 권고 대상)의 자동 항목을 치환하지 않고 수동으로 남김
- `target` (string): 전환 목표. 5.x(기본) = 3.x/4.x → 5.x 전환, 5.0.2 같은 5.0.x = 이미 5.x 인 프로젝트를 그 버전으로 갱신(parent·RTE 버전 auto, 그 사이 바뀐 RTE API·동작 참조 manual, 공통컴포넌트 최신 유지 안내)
- `verify` (boolean): true 면 3단계(검증): 진단 후 compile 을 실행해 컴파일 오류를 수동 항목과 연결한 작업 목록을 반환(apply 와 함께 쓰지 않음, 빌드 도구 필요)

Output parameters:

- `applied` (object)
- `backupDir` (string)
- `build` (object)
- `buildSystem` (string)
- `conflicts` (array)
- `dryRun` (boolean)
- `files` (array)
- `filesScanned` (integer)
- `items` (array)
- `links` (array)
- `mode` (string)
- `notes` (array)
- `planPath` (string)
- `projectDir` (string)
- `remaining`
- `rteVersion` (string|null)
- `rules` (object)
- `skippedManual` (integer)
- `sourceEra` (string)
- `summary` (object)
- `target` (string)
- `unlinked` (array)
- `update` (object)
- `worklist` (array)

### `check_egovframe_dependencies` (~517 tokens)

의존성 점검

프로젝트의 Maven/Gradle 의존성(resolve=true 면 빌드 도구로 해석한 전이 의존성까지, 트리 경로와 선언·해석 버전 차이 포함)을 공식 5.x parent(egovframe-web-config-parent·egovframe-boot-starter-parent)가 관리하는 기준 버전, Spring Boot BOM 전체(spring-boot-dependencies + import 한 단계), RTE 모듈 18종의 전이 의존성과 대조해 기준 충족/기준 미만/parent 관리/전환 대상(3.x·4.x RTE, javax 좌표)/교체 필요(DBCP 1.x·Log4j 1.x·Jackson 1·Ehcache 2 등)/벤더 배포(국내 DBMS·GPKI 등)/기준 없음 으로 분류하고 항목마다 기준 출처(parent 직접·계열·Boot BOM·RTE 전이)를 적으며, 5.x parent 사용 여부와 Java 버전, 보안 설정 존재 여부(sec.security 컴포넌트·CSRF·XSS 필터·보안 헤더·HTTPS 저장소)를 파일·라인 근거와 함께 보고합니다. 기본은 오프라인(동봉 기준 catalog/dependency-baseline.json)이며 offline=false 일 때만 OSV(api.osv.dev)로 알려진 취약점을 조회합니다. 디스크를 변경하지 않습니다. 멀티 모듈 작업공간이면 모듈별로 판정하고(모듈 parent·Gradle 버전 변수·공식 parent BOM) 모듈 요약을 함께 냅니다.

Input parameters:

- `format` (string): 출력 형식
- `offline` (boolean): true(기본)면 네트워크 없이 기준 대조만, false 면 OSV 취약점 조회 추가
- `projectDir` (string, required): 점검할 프로젝트 디렉터리(절대경로 권장)
- `resolve` (boolean): true 면 빌드 도구(Maven dependency:tree / Gradle dependencies)로 전이 의존성까지 해석해 함께 판정(빌드 도구·저장소 접근 필요, 수십 초)
- `resolveScope` (string): resolve 범위: runtime(compile+runtime, 기본) | all(test·provided 포함)
- `resolveTimeoutMs` (integer): 해석 명령 타임아웃(ms)

Output parameters:

- `baseline` (object)
- `buildSystem` (string)
- `checks` (array)
- `findings` (array)
- `java` (object)
- `notes` (array)
- `offline` (boolean)
- `osvError` (string)
- `parent` (object)
- `projectDir` (string)
- `resolution` (object)
- `summary` (object)
- `vulnerabilities` (array)
- `workspace` (object)

### `reassemble_egovframe_components` (~594 tokens)

공통컴포넌트 재조립 (5.x)

3.x/4.x(또는 이전 5.x) 프로젝트에 복사돼 있는 공통컴포넌트 소스를 카탈로그 고정 버전(현재 v5.0.7)으로 다시 조립합니다. (1) 프로젝트 파일의 git blob id 를 공식 egovframe-common-components 후보 태그(좌표 세대별)와 대조해 원본 태그를 식별하고(파일 내용을 내려받지 않음, sourceTag 로 지정 가능) (2) 원본·현재·목표로 파일마다 목표와 같음/원본 그대로(교체)/사용자 수정/5.x 신규/5.x 에서 제거/원본 미확인/사용자 추가를 판정한 뒤 (3) dryRun=false 면 하나의 transaction 으로 목표 파일을 쓰고(아카이브 sha256 검증), 5.x 에 없는 원본 파일은 백업 후 지우고, 사용자 수정 소스는 교체하되 원본 대비 변경을 unified diff 패치로 보존하며(설정·자산 파일은 사용자본을 유지하고 목표본을 참고로 저장) 매니페스트를 기록해 이후 upgrade·validate·remove 도구가 적용되게 합니다. 백업·패치·reassemble-plan.json 은 migration-backup/<시각>-reassemble-*/ 에 남고, 작업 목록(패치 다시 반영·5.x 제거 파일·설정 비교)을 돌려줍니다. verify=true 면 적용 뒤 compile 을 실행해 오류를 작업 목록 파일에 붙입니다. 원본 태그 비교에 git 이 필요하며 캐시는 EGOVFRAME_CACHE_DIR(기본 ~/.cache/egovframe-scaffold-mcp)에 둡니다. 패치를 자동으로 다시 적용하지는 않습니다.

Input parameters:

- `components` (array): 재조립할 컴포넌트 id(그룹 id 는 하위 컴포넌트로 펼침). 미지정 시 감지된 컴포넌트 전부
- `database` (string): 지정 시 컴포넌트별 DDL·DML 을 scripts/egovframe-components/<db>/ 에 함께 생성
- `dryRun` (boolean): true(기본)면 분류·계획만, false 면 적용(transaction)
- `format` (string): 출력 형식
- `projectDir` (string, required): 대상 프로젝트 디렉터리(절대경로 권장)
- `sourceTag` (string): 원본 태그(예: v3.10.0). auto(기본)면 파일 대조로 식별
- `timeoutMs` (integer): verify 컴파일 타임아웃(ms)
- `verify` (boolean): 적용 뒤 compile 실행해 오류를 작업 목록에 연결

Output parameters:

- `actions` (object)
- `backupDir` (string)
- `components` (array)
- `dryRun` (boolean)
- `files` (array)
- `manifestUpdated` (boolean)
- `notes` (array)
- `origin` (object)
- `planPath` (string)
- `projectDir` (string)
- `sourceEra` (string)
- `sql` (array)
- `summary` (object)
- `target` (object)
- `verify` (object)
- `worklist` (array)

### `diagnose_egovframe_network` (~237 tokens)

네트워크 진단

이 서버의 도구들이 내려받는 외부 호스트(codeload.github.com·raw.githubusercontent.com·media.githubusercontent.com·maven.egovframe.go.kr·repo1.maven.org·registry.npmjs.org·api.osv.dev)에 DNS 조회와 HEAD 요청을 실제로 보내 접속 가능 여부·소요 시간·실패 종류(DNS·타임아웃·TLS·프록시 인증·거부)를 보고하고, 환경에 맞는 처방(HTTPS_PROXY+NODE_USE_ENV_PROXY=1, NODE_OPTIONS=--dns-result-order=ipv4first, NODE_EXTRA_CA_CERTS)을 bash/cmd/PowerShell 명령으로 안내합니다. 프로젝트 생성·컴포넌트 조립이 타임아웃으로 실패할 때 먼저 실행하세요. 파일을 쓰지 않으며 프로젝트 디렉터리도 필요 없습니다.

Input parameters:

- `format` (string): 출력 형식
- `hosts` (array): 점검할 호스트(기본: 전부)
- `timeoutMs` (integer): 호스트당 제한 시간(ms, 기본 10000)

Output parameters:

- `env` (object)
- `envProxySupported` (boolean)
- `hosts` (array)
- `node` (string)
- `notes` (array)
- `platform` (string)
- `prescriptions` (array)
- `summary` (object)

### `generate_agents_md` (~263 tokens)

AGENTS.md 생성

프로젝트를 진단해 AI 코딩 도구(Claude Code·Copilot·Cursor 등)용 AGENTS.md 를 생성합니다 — 빌드·테스트 명령(래퍼 감지), RTE 버전과 5.x 전환 상태, DbType, 기본 패키지·설정 디렉터리, 설치 공통컴포넌트(매니페스트 관리 여부), 지켜야 할 규칙(좌표·백업 디렉터리·비밀 정보·의존성 기준), 사용할 수 있는 MCP 도구. 기존 파일은 overwrite=true 가 아니면 거부하고, dryRun=true 면 내용만 돌려줍니다. 한국어(기본)·영어.

Input parameters:

- `dryRun` (boolean): true 면 파일을 쓰지 않고 내용만 반환
- `fileName` (string): 파일명(프로젝트 루트 기준, 기본 AGENTS.md — CLAUDE.md 등으로 바꿀 수 있음)
- `lang` (string): 문서 언어
- `overwrite` (boolean): 기존 파일 덮어쓰기(transaction, 실패 시 원복)
- `projectDir` (string, required): 대상 프로젝트 디렉터리(절대경로 권장)

### `generate_egovframe_sbom` (~605 tokens)

SBOM 생성 (CycloneDX)

Maven/Gradle 프로젝트의 SBOM 을 CycloneDX 1.6 JSON(기본) 또는 SPDX 2.3 JSON(bomFormat=spdx-json — 패키지·DEPENDS_ON 관계·purl·공급자·작성자·생성 시각)으로 만듭니다(빌드 파일 변경 없음). Maven 은 cyclonedx-maven-plugin(makeAggregateBom, 해시·라이선스 포함), Gradle 은 해석된 의존성 트리로 문서를 구성합니다. enrich=true(기본)면 component 마다 기준 판정(egovframe:status·basis·baseline)을 properties 로 붙이고, offline=false 면 OSV 로 알려진 취약점을 vulnerabilities[] 로 넣습니다. 출력은 프로젝트 안 경로(기본 sbom/bom.cdx.json)만 허용하고 기존 파일은 overwrite=true 가 아니면 거부하며, dryRun(기본)은 실행 없이 계획만 돌려줍니다. 2027년부터 단계화되는 공공기관 SBOM 등록·제출에 쓸 수 있는 표준 형식입니다.

Input parameters:

- `author` (string): SBOM 작성자(metadata.authors) — 없으면 supplier
- `bomFormat` (string): SBOM 형식: cyclonedx-json(CycloneDX 1.6, 기본) | spdx-json(SPDX 2.3 — CycloneDX 로 만든 뒤 변환)
- `componentName` (string): 주 component 이름 덮어쓰기(기본 artifactId)
- `componentVersion` (string): 주 component 버전 덮어쓰기(기본 pom version)
- `dryRun` (boolean): true(기본)면 실행 없이 명령·출력 경로만 보고
- `enrich` (boolean): component 마다 기준 판정 속성 부착
- `fillSuppliers` (boolean): 공급자가 없는 component 를 공급자 표(catalog/sbom-rules.json)로 보완(egovframe:supplierBasis=catalog) — 기본은 enrich 와 같음
- `format` (string): 응답 형식
- `offline` (boolean): false 면 OSV 조회 결과를 vulnerabilities[] 로 포함
- `outputPath` (string): 프로젝트 상대 출력 경로(기본 sbom/bom.cdx.json, spdx-json 이면 sbom/bom.spdx.json)
- `overwrite` (boolean): 기존 출력 파일 덮어쓰기 허용
- `projectDir` (string, required): 프로젝트 디렉터리(절대경로 권장)
- `scope` (string): runtime(compile+runtime, 기본) | all(test·provided 포함)
- `supplier` (string): 공급자(주 component·문서 metadata.supplier) — 없으면 pom <organization><name>
- `timeoutMs` (integer): 생성 명령 타임아웃(ms)

Output parameters:

- `absolutePath` (string)
- `buildTool` (string)
- `bytes` (integer)
- `command` (string)
- `components` (integer)
- `direct` (integer)
- `dryRun` (boolean)
- `durationMs` (number)
- `format` (string)
- `generator` (string)
- `logTail` (string)
- `minimum` (object)
- `notes` (array)
- `osvError` (string)
- `outputPath` (string)
- `overwritten` (boolean)
- `projectDir` (string)
- `specVersion` (string)
- `statuses` (object)
- `transitive` (integer)
- `vulnerabilities` (integer)
- `written` (boolean)

### `prepare_egovframe_offline_bundle` (~370 tokens)

폐쇄망 오프라인 번들 만들기

망분리(폐쇄망) 개발 환경용 오프라인 번들을 인터넷 PC 에서 만듭니다. OSV Maven 취약점 전체 덤프·고정 공통컴포넌트 아카이브(sha256 검증)·Initializr zip 템플릿(고정 지문)·재조립용 공식 공통컴포넌트 태그 미러를 한 디렉터리에 담고 bundle-manifest.json(파일별 sha256·크기·출처 URL·받은 시각)을 씁니다. 새(또는 빈) 디렉터리에만 쓰며 dryRun(기본)은 받을 목록만 보여 줍니다. 폐쇄망 PC 에서 환경변수 EGOVFRAME_OFFLINE_BUNDLE 에 옮긴 경로를 지정하면 다운로드는 번들 파일을 지문 검증 후 쓰고, offline=false 의 OSV 조회는 로컬 덤프로 판정하며(스냅숏 기준일 표시·30일 넘으면 경고), 재조립은 번들 미러를 씁니다. Maven 의존성 jar 는 담지 않습니다(기관 저장소 미러 사용).

Input parameters:

- `dryRun` (boolean): true(기본)면 받을 목록만
- `format` (string): 응답 형식
- `include` (array): 담을 항목
- `outputDir` (string, required): 번들을 만들 디렉터리(없거나 비어 있어야 함)
- `templates` (array): 담을 템플릿 id(기본: 고정 지문이 있는 Initializr zip 템플릿 전부, 저장소 템플릿은 지정할 때만)

Output parameters:

- `dryRun` (boolean)
- `items` (array)
- `manifestPath` (string)
- `notes` (array)
- `origin` (object)
- `outputDir` (string)
- `totalBytes` (integer)
- `usage` (array)
- `written` (boolean)

### `rehearse_egovframe_migration` (~432 tokens)

5.x 전환 리허설 (사본에서 실측)

프로젝트를 건드리지 않고 사본에서 5.x 전환을 미리 돌려 봅니다. 사본(EGOVFRAME_CACHE_DIR/rehearsal, 빌드 산출물·VCS·백업 제외)에서 (1) 공통컴포넌트 재조립(원본 태그 식별이 깨지지 않도록 전환 적용보다 먼저) (2) 전환 자동 항목 적용 (3) 컴파일 — Maven 은 javac 를 fork 해 -Xmaxerrs 로 오류 100개 상한 없이 모두 셈 (4) 사본 pom 을 공식 공통컴포넌트 고정 태그 pom 기준(parent·누락 좌표·버전·scope·parent 관리 속성)으로 맞춘 뒤 다시 컴파일합니다. 두 시점의 오류 수, 누락 패키지와 후보 좌표, 같은 파일의 연쇄 오류, 남는 수동 항목·파일, 사라지는 오류 순 작업 목록, 사본에 적용한 pom 패치를 돌려주고, 실행 전후 디렉터리 지문으로 원본 불변을 확인합니다. 최근 결과는 평가서 6절에 실측으로 표시됩니다. keepWorkspace=true 면 사본을 남깁니다.

Input parameters:

- `components` (array): 재조립 대상 컴포넌트 id(기본: 감지된 전부)
- `format` (string): 응답 형식
- `keepWorkspace` (boolean): true 면 사본을 지우지 않고 경로를 돌려줌
- `projectDir` (string, required): 프로젝트 디렉터리(절대경로 권장) — 읽기만 함
- `sourceTag` (string): 재조립 원본 태그(기본 auto = 식별)
- `steps` (array): 실행할 단계(순서는 고정)
- `timeoutMs` (integer): 컴파일 1회 타임아웃(ms)
- `topN` (integer): 작업 목록 수

Output parameters:

- `afterAutomation` (object)
- `afterPomAlignment` (object)
- `buildTool`
- `migrate` (object)
- `notes` (array)
- `original` (object)
- `projectDir` (string)
- `reassemble` (object)
- `savedTo` (string)
- `startedAt` (string)
- `steps` (array)
- `worklist` (array)
- `workspace` (object)

### `generate_egovframe_deploy` (~795 tokens)

컨테이너·배포 산출물 생성

프로젝트 진단(빌드 도구·패키징·Boot 여부·웹·actuator·DbType·설정 파일)으로 컨테이너·배포 산출물을 만듭니다 — Dockerfile(멀티 스테이지: Maven/Gradle 빌드 → Classic war 는 Tomcat 10.1(Servlet 6.1 이상이면 11.0)에 ROOT 로 풀어서, Boot jar 는 eclipse-temurin JRE 로; 비루트·HEALTHCHECK·Asia/Seoul·UTF-8, buildInImage=false 면 미리 빌드한 산출물), .dockerignore, deploy/docker-compose.yml(앱 + DbType 별 DB 컨테이너 mysql·mariadb·postgres, 템플릿 DDL·DATA 초기화, 상용 DB 는 연결 정보만), Kubernetes 매니페스트(deploy/k8s/<app>.yaml — Deployment(startup·readiness·liveness 프로브, 비루트 securityContext, 리소스)·Service·ConfigMap·Secret·선택 Ingress). DB 설정은 Boot 는 Spring 환경 변수(Globals.mysql.Url → GLOBALS_MYSQL_URL), Classic 은 globals.properties 사본을 볼륨·Secret 으로 덮어씁니다. imageRegistry 로 기반 이미지를 사내 레지스트리(폐쇄망)에서 받습니다. 새 파일만 쓰고(기존 파일 거부) dryRun(기본)은 내용만 보여 줍니다. 멀티 모듈·라이브러리 jar·빌드 파일 없는 프로젝트는 이유를 돌려줍니다. 멀티 모듈 작업공간(Maven <modules>·Gradle include·루트 빌드 파일 없는 독립 프로젝트 묶음)이면 서비스 모듈마다 이미지(자체 Dockerfile 은 그대로)와 하나의 docker-compose·서비스별 Kubernetes 매니페스트를 만들고, 설정의 localhost 참조(설정 서버·디스커버리·DB·메시지 브로커·캐시)를 서비스 이름으로 바꿉니다(모듈 설정은 환경 변수, 설정 서버 저장소는 사본). modules 로 일부 서비스만 고릅니다.

Input parameters:

- `appName` (string): 앱 이름(기본 artifactId)
- `buildInImage` (boolean): true: 이미지 안에서 빌드(멀티 스테이지) · false: 미리 빌드한 target/*.war·jar 를 담음(폐쇄망에서 컨테이너 안 Maven 접근이 어려울 때)
- `dockerfilePath` (string): Dockerfile 경로(프로젝트 상대) — 템플릿에 이미 Dockerfile 이 있으면 deploy/Dockerfile 등
- `dryRun` (boolean): true(기본)면 쓰지 않고 내용만
- `format` (string): 응답 형식
- `image` (string): 앱 이미지 이름(기본 <appName>:<version>)
- `imageRegistry` (string): 기반 이미지 레지스트리(폐쇄망 사내 레지스트리·프록시 캐시) — Dockerfile ARG BASE_REGISTRY 기본값
- `ingressHost` (string): Kubernetes Ingress 호스트(주면 Ingress 추가)
- `jdk` (string): JDK(빌드·실행 이미지)
- `modules` (array): 멀티 모듈 작업공간에서 일부 서비스만(모듈 이름·경로). 그 서비스가 먼저 띄워야 하는 서비스·인프라는 함께 들어감
- `projectDir` (string, required): 프로젝트 디렉터리(절대경로 권장)
- `targets` (array): 만들 산출물(compose 는 Dockerfile 도 함께)

Output parameters:

- `dryRun` (boolean)
- `files` (array)
- `notes` (array)
- `profile` (object)
- `projectDir` (string)
- `supported` (boolean)
- `unsupported` (object)
- `usage` (array)
- `workspace` (object)
- `written` (boolean)

### `check_egovframe_secure_coding` (~645 tokens)

보안약점 점검 (개발보안 가이드)

행정안전부·KISA 「소프트웨어 개발보안 가이드」(2021) 구현단계 보안약점 중 정적 패턴으로 오탐을 통제할 수 있는 항목을 소스에서 찾습니다 — SQL 삽입(MyBatis ${…}·iBATIS $…$·JDBC 문자열 연결), 크로스사이트 스크립트(요청 값·EL param/header/cookie 무이스케이프 출력, <c:out escapeXml="false">), 경로 조작, 신뢰되지 않는 URL 자동접속, 운영체제 명령어, XML 외부개체, 취약한 해시·암호, 보안 문맥의 부적절한 난수, 코드·설정의 하드코드된 중요정보, HttpOnly·Secure 없는 쿠키, printStackTrace, 빈 catch, 역직렬화, 남은 디버그 출력. 규칙은 catalog/secure-coding-rules.json 데이터이고 주석은 무시합니다. 항목마다 파일·라인·CWE·등급·조치와 출처(공통컴포넌트 원본·수정본·매니페스트 없음·프로젝트 코드·테스트)를 냅니다. 예외는 .egovframe-secure-ignore.json(사유·검토자 필수), baselinePath(이전 JSON 결과·SARIF)와 비교해 새 항목 표시, format=sarif 또는 sarifPath 로 SARIF 2.1.0(GitHub code scanning 등). 패턴 기반 진단 보조이며 공인 진단을 대체하지 않습니다.

Input parameters:

- `baselinePath` (string): 이전 결과(format=json 출력 또는 SARIF, 프로젝트 상대 경로) — 새로 생긴 항목만 표시
- `format` (string): 응답 형식(sarif 는 SARIF 2.1.0 JSON 본문)
- `includeTests` (boolean): src/test 도 점검(등급은 낮음으로)
- `maxFindings` (integer): 응답에 담을 최대 항목 수(SARIF 파일에는 전부)
- `overwrite` (boolean): sarifPath 가 있으면 덮어쓰기
- `paths` (array): 프로젝트 상대 경로 접두어로 좁히기(예: src/main/java/egovframework/example)
- `projectDir` (string, required): 프로젝트 디렉터리(절대경로 권장) — 읽기만 함
- `rules` (array): 점검할 규칙 id(기본 전체)
- `sarifPath` (string): SARIF 2.1.0 을 쓸 프로젝트 상대 경로(예: egovframe-secure.sarif)
- `top` (integer): [deprecated 1.0.0 — topN 을 쓰세요, 2.0.0 에서 제거] Markdown 상세 항목 수
- `topN` (integer): Markdown 상세 항목 수(기본 40)

Output parameters:

- `baseline` (object)
- `byModule` (array)
- `byOrigin` (object)
- `byRule` (array)
- `byTarget` (object)
- `disclaimer` (string)
- `filesScanned` (integer)
- `findings` (array)
- `notes` (array)
- `projectDir` (string)
- `rulesVersion` (object)
- `sarif` (object)
- `summary` (object)
- `suppressions` (object)
- `truncated` (boolean)

### `check_egovframe_sbom` (~479 tokens)

SBOM 점검 (최소 요소·비교·VEX)

이미 만든 CycloneDX 또는 SPDX 2.x JSON SBOM 을 제출물로서 점검합니다(SBOM 파일은 바꾸지 않음, 형식은 자동 판별). (1) 최소 요소 7종 — 공급자·구성요소명·버전·고유식별자(purl/cpe)·의존관계·작성자·생성 시각(NTIA 최소 요소 = 국내 SW 공급망 보안 가이드라인 핵심 구성요소)을 component 마다 세어 '제출 가능/보완 필요'와 빠진 component 를 보고 (2) 빌드 도구 없이 purl 만으로 기준 판정을 다시 해 생성 당시와 달라진 판정을, offline=false 면 OSV 를 다시 조회해 생성 이후 새로 알려진 취약점을 보고(운영 중 주기 점검) (3) baselinePath(이전 SBOM)를 주면 추가·제거·버전 변경·판정 변화·새 취약점을 비교 (4) vex=true 면(CycloneDX 입력만) CycloneDX VEX 초안(기본 sbom/vex.cdx.json)을 씁니다 — 새 취약점은 analysis.state=in_triage, affects 는 BOM-Link 로 원본 SBOM 참조, 기존 VEX 에 사람이 적은 판단(not_affected·exploitable 등)은 보존하고 새 취약점만 추가합니다(dryRun=true 면 미리보기). 2027년 공공 SBOM 제출 제도화 대비.

Input parameters:

- `baselinePath` (string): 비교할 이전 SBOM(프로젝트 상대 경로)
- `dryRun` (boolean): vex=true 일 때 쓰지 않고 미리보기
- `format` (string): 응답 형식
- `offline` (boolean): false 면 OSV 재조회로 생성 이후 새 취약점 확인
- `projectDir` (string, required): 프로젝트 디렉터리(절대경로 권장)
- `sbomPath` (string): 점검할 SBOM(프로젝트 상대 경로)
- `vex` (boolean): true 면 VEX 초안 작성·갱신(판단 보존)
- `vexPath` (string): VEX 파일(프로젝트 상대 경로)

Output parameters:

- `absolutePath` (string)
- `diff` (object)
- `document` (object)
- `minimum` (object)
- `notes` (array)
- `projectDir` (string)
- `recheck` (object)
- `sbomPath` (string)
- `vex` (object)

### `search_egovframe_docs` (~166 tokens)

가이드 문서 검색

공식 가이드 문서(egovframe-docs) 인덱스를 키워드로 검색합니다. 기본은 오프라인 인덱스 검색(제목·경로·연계 컴포넌트·카테고리 점수순)이며, fetchTop>0이면 상위 결과의 문서 본문을 내려받아 스니펫도 함께 제공합니다.

Input parameters:

- `fetchTop` (integer): 본문을 내려받아 스니펫을 붙일 상위 결과 수 (0=오프라인, 최대 5)
- `limit` (integer): 최대 결과 수 (기본 10)
- `query` (string, required): 검색어. 예: "로그인", "게시판 권한"

### `generate_egovframe_report` (~589 tokens)

프로젝트 리포트 · 전환 준비도 평가서

프로젝트 리포트를 Markdown(또는 format=json)으로 만듭니다. sections=["components"](기본)는 설치 공통컴포넌트·참조 테이블·가이드 문서 링크·이슈, sections=["assessment"]는 5.x 전환 준비도 평가서 — (1) 개요(빌드 도구·RTE 세대·parent·Java·공통컴포넌트) (2) 전환 범위(migrate 진단 요약: 자동/수동·종류별·재조립 권고·예상 수동 작업 상위 N) (3) 의존성(기준 판정 집계·조치 목록, resolve=true 면 전이 포함, offline=false 면 OSV 취약점) (4) 보안 설정 점검 (5) SBOM 요약(sbomPath 에 있으면) (6) 등급과 근거 — 전환 난이도·공급망 상태를 각각 A–D 로 매기고 산식(요인·구간·점수)을 리포트에 그대로 적어 사람이 재계산할 수 있게 합니다. 비용·공수는 산정하지 않습니다. outputPath 를 주면 프로젝트 안에 새 파일로만 저장하고(기존 파일 거부, transaction), 그 외에는 디스크를 바꾸지 않습니다.

Input parameters:

- `dryRun` (boolean): true 면 outputPath 가 있어도 쓰지 않고 내용만
- `format` (string): 출력 형식(json 은 assessment 데이터 포함)
- `offline` (boolean): assessment: true(기본)면 네트워크 없이, false 면 OSV 로 알려진 취약점 조회(공급망 등급 확정에 필요)
- `outputPath` (string): 프로젝트 상대 .md 경로. 주면 새 파일로 저장(기존 파일이 있으면 거부)
- `projectDir` (string, required): 리포트를 만들 프로젝트 디렉터리(절대경로 권장)
- `resolve` (boolean): assessment: 빌드 도구로 전이 의존성까지 해석해 판정(빌드 도구·저장소 접근 필요)
- `resolveScope` (string): resolve 범위
- `resolveTimeoutMs` (integer): 해석 명령 타임아웃(ms)
- `sbomPath` (string): assessment: 요약할 SBOM 의 프로젝트 상대 경로(없으면 '없음'으로 표시, 생성하지 않음)
- `sections` (array): 포함할 절: components(설치 컴포넌트 리포트, 기본) · assessment(전환 준비도 평가서) — 둘 다 주면 이어 붙임
- `topN` (integer): assessment: 예상 수동 작업 목록 상위 N

Output parameters:

- `absolutePath` (string)
- `assessment` (object)
- `bytes` (integer)
- `dryRun` (boolean)
- `notes` (array)
- `outputPath` (string)
- `projectDir` (string)
- `sections` (array)
- `written` (boolean)

### `upgrade_egovframe_project` (~191 tokens)

공통컴포넌트 업그레이드

매니페스트에 기록된 설치 공통컴포넌트를 upstream 최신본과 비교해 갱신합니다. 사용자가 수정한 파일은 force 없이는 보존하며, dryRun(기본)으로 변경 계획을 먼저 확인합니다. 덮어쓰기 전 upgrade-backup/에 백업하고, 하드 충돌 시 아무것도 쓰지 않고 거부합니다.

Input parameters:

- `components` (array): 대상 컴포넌트 id (미지정 시 매니페스트 전체)
- `dryRun` (boolean): true(기본)면 계획만 미리보기, 디스크 변경 없음
- `force` (boolean): 사용자 수정 파일(충돌)도 백업 후 덮어쓸지
- `projectDir` (string, required): 업그레이드할 프로젝트 디렉터리(절대경로 권장)

### `explain_egovframe_component` (~97 tokens)

컴포넌트 상세

공통컴포넌트 하나의 상세(설명·직접/전이 의존성·이 컴포넌트에 의존하는 컴포넌트·참조 테이블·가이드 문서 링크·설치 명령)를 한 번에 반환합니다. (읽기 전용)

Input parameters:

- `id` (string, required): 컴포넌트 id. 예: bbs

### `generate_egovframe_config` (~455 tokens)

Spring 설정 파일 생성

공식 eGovFrame Initializr 설정 템플릿(21종, 오프라인 동봉)으로 Spring 설정 파일을 생성합니다 — datasource(DBCP/C3P0/JDBC·JNDI), transaction(datasource/JPA/JTA), cache(Ehcache), logging(log4j2 console/file/rolling/time-rolling/jdbc), scheduling(Quartz job/trigger/scheduler), idGeneration(sequence/table/uuid), property. 형식은 xml(Spring XML)·javaConfig(@Configuration 클래스)·yaml·properties(logging 만). 필드를 생략하면 Initializr 웹뷰 폼과 같은 기본값을 쓰고, 기존 파일이 있으면 덮어쓰지 않고 거부합니다. 템플릿별 필드·기본값·선택지는 리소스 egovframe://catalog/config-templates 에서 확인하거나 dryRun 결과의 context 로 볼 수 있습니다.

Input parameters:

- `configId` (string, required): 설정 템플릿 id (예: datasource, transaction-datasource, logging-rolling-file, scheduling-cron-trigger)
- `dryRun` (boolean): true면 파일을 쓰지 않고 내용·경로·컨텍스트만 반환
- `fields` (object): 템플릿 변수 덮어쓰기 (예: { txtDatasourceName: 'dataSource', rdoType: 'DBCP', txtUrl: 'jdbc:mysql://…', txtConfigPackage: 'kr.go.sample.config' }). 템플릿에 없는 필드는 거부
- `fileName` (string): 파일명(확장자 제외) 또는 JavaConfig 클래스명. 미지정 시 Initializr 기본값(예: context-datasource, EgovDataSourceConfig)
- `format` (string): xml | javaConfig | yaml | properties (yaml·properties 는 logging 계열만)
- `outputDir` (string): 프로젝트 상대 출력 디렉터리. 미지정 시 xml→src/main/resources/egovframework/spring(logging 은 src/main/resources), javaConfig→src/main/java/<패키지>
- `projectDir` (string, required): 대상 프로젝트 디렉터리(절대경로 권장)

### `generate_egovframe_crud` (~445 tokens)

CRUD 코드 생성

eGovFrame Development의 공식 CRUD wizard 입력 체계에 맞춰 VO·Mapper(XML)·Service·Controller·JSP(선택)·JUnit 5 테스트(선택) 골격을 생성합니다. Classic XML과 Boot REST 프로필을 지원하며, 전체 파일 충돌을 먼저 검사해 하나라도 존재하면 아무것도 쓰지 않습니다.

Input parameters:

- `author` (string): 공식 wizard의 author
- `basePackage` (string, required): 기본 자바 패키지. 예: egovframework.example.board
- `checkDataAccess` (boolean): 공식 wizard DataAccess 그룹 생성 여부
- `checkService` (boolean): 공식 wizard Service 그룹 생성 여부
- `checkWeb` (boolean): 공식 wizard Web 그룹 생성 여부
- `controllerPackage` (string): Controller 패키지
- `createDate` (string): 공식 wizard의 createDate. 미지정 시 오늘 날짜
- `dryRun` (boolean): true면 파일을 쓰지 않고 생성 계획만 반환
- `entityName` (string): 생성 클래스명. 미지정 시 tableName에서 PascalCase로 생성
- `fields` (array, required): 테이블 컬럼 정의
- `implPackage` (string): ServiceImpl 패키지
- `includeJsp` (boolean): classic 프로필의 JSP 2종 생성 여부(기본 true)
- `jspFolder` (string): 프로젝트 기준 JSP 폴더
- `mapperFolder` (string): 프로젝트 기준 Mapper XML 폴더
- `mapperPackage` (string): Mapper 인터페이스 패키지
- `profile` (string): classic=Spring MVC+JSP, boot=REST Controller
- `projectDir` (string, required): 대상 프로젝트 디렉터리(절대경로 권장, pom.xml 또는 build.gradle 필요)
- `servicePackage` (string): Service 패키지
- `tableName` (string, required): CRUD 대상 테이블명. 단일 SQL 식별자, 예: SAMPLE_BOARD
- `voPackage` (string): VO 패키지
- `withTest` (boolean): JUnit 5 서비스 계약 테스트 골격 생성

### `generate_egovframe_ci` (~598 tokens)

CI 워크플로 생성

프로젝트에 CI 설정을 생성합니다 — platform=github(.github/workflows/egovframe-ci.yml, 기본)·gitlab(.gitlab-ci.yml)·jenkins(Jenkinsfile, Declarative). 빌드도구(maven/gradle) 자동 감지, JDK 지정, 빌드·테스트(GitLab 은 JUnit 리포트). supplyChain=true 면 이 서버의 CLI(npx egovframe-scaffold-mcp)로 SBOM 생성 → 최소 요소 7종 점검(sbom-check --fail-on minimum) → 전환 준비도 평가서(failOn 기준, 기본 supplyChain:D)를 돌려 기준을 넘으면 실패하고 보고서·SBOM 을 아티팩트로 남기는 공급망 게이트를 추가합니다(GitHub 은 PR 요약에 등급, GitLab 은 CycloneDX 리포트). npmRegistry(사내 npm 레지스트리)·offlineBundle(러너에서 본 오프라인 번들 경로)은 환경 변수로 넣습니다. dryRun으로 내용만 미리볼 수 있고, 실제 생성 시 기존 파일이 있으면 덮어쓰지 않고 거부합니다.

Input parameters:

- `dryRun` (boolean): true면 파일 생성 없이 내용만 반환
- `failOn` (string): 공급망 게이트(평가서)의 --fail-on 식
- `jdk` (string): JDK 버전 (기본 17, 숫자·점만 허용)
- `npmRegistry` (string): 사내 npm 레지스트리 URL(NPM_CONFIG_REGISTRY 로 설정 — npx 가 이 서버를 받는 곳)
- `offlineBundle` (string): 폐쇄망 러너·에이전트에서 본 오프라인 번들 경로(EGOVFRAME_OFFLINE_BUNDLE 로 설정)
- `osv` (boolean): 공급망 게이트에서 OSV 취약점 조회(--offline=false)
- `platform` (string): CI 플랫폼: github(GitHub Actions, 기본) | gitlab(.gitlab-ci.yml) | jenkins(Jenkinsfile, Declarative)
- `projectDir` (string, required): 프로젝트 디렉터리(절대경로 권장)
- `secureCoding` (boolean): v0.44: 게이트에 보안약점 점검 단계 추가(secure --fail-on high, SARIF 를 GitHub code scanning 에 업로드·GitLab·Jenkins 는 보관)
- `supplier` (string): SBOM 공급자(pom <organization><name> 이 없으면 최소 요소 '공급자'가 빠져 게이트가 실패하므로 지정)
- `supplyChain` (boolean): true 면 공급망 게이트 추가: SBOM 생성 → 최소 요소 점검(--fail-on minimum) → 전환 준비도 평가서(failOn) → 아티팩트

### `build_egovframe_project` (~260 tokens)

프로젝트 빌드

생성한 eGovFrame 프로젝트를 실제로 빌드(컴파일·테스트·패키지)하고 결과를 구조화해 반환합니다. 빌드도구(maven/gradle)와 래퍼(mvnw/gradlew)를 자동 감지하고, 컴파일·테스트 오류를 파일·라인 단위로 파싱합니다. dryRun으로 실행 예정 명령만 미리볼 수 있습니다. (생성→검증 루프 완성)

Input parameters:

- `dryRun` (boolean): true면 실행 없이 감지된 빌드도구·명령만 반환
- `goal` (string): 빌드 작업: compile(컴파일만), test(테스트까지), package(패키징, 테스트 생략). 기본 compile
- `maxLogLines` (integer): 반환 로그의 최대 줄 수(마지막 N줄). 기본 200줄
- `projectDir` (string, required): 빌드할 프로젝트 루트 디렉터리(pom.xml 또는 build.gradle 위치, 절대경로 권장)
- `timeoutSeconds` (integer): 빌드 타임아웃(초). 초과 시 중단. 기본 300초

### `test_egovframe_project` (~325 tokens)

테스트 실행

eGovFrame 프로젝트의 테스트를 실제로 실행하고 JUnit XML 리포트(surefire/gradle)를 읽어 결과를 구조화합니다. 스위트별 통과·실패·오류·건너뜀 수와, 실패 케이스의 메시지·예외 타입·테스트 파일/라인을 반환합니다. testFilter로 특정 클래스/메서드만 실행할 수 있고, dryRun으로 실행 예정 명령을 미리볼 수 있습니다. (build_egovframe_project 의 테스트 후속)

Input parameters:

- `dryRun` (boolean): true면 실행 없이 감지된 빌드도구·명령·리포트 위치만 반환
- `maxFailures` (integer): 반환할 실패·오류 케이스 최대 수. 기본 50
- `maxLogLines` (integer): 반환 로그의 최대 줄 수(마지막 N줄). 기본 200줄
- `projectDir` (string, required): 테스트할 프로젝트 루트 디렉터리(pom.xml 또는 build.gradle 위치, 절대경로 권장)
- `testFilter` (string): 실행할 테스트 패턴(빌드도구 문법 그대로). maven: `FooTest`, `FooTest#bar`, `com.acme.*Test` / gradle: `com.acme.FooTest`, `*FooTest.bar`. 생략 시 전체
- `timeoutSeconds` (integer): 테스트 타임아웃(초). 초과 시 중단. 기본 600초

## Diagnostics

Captured diagnostic sections: Provenance, Dependencies. The full working is on the page: https://verifymcp.io/servers/ericseokgon-egovframe-scaffold-mcp/egovframe-scaffold-mcp#diagnostics

## Score history

- 2026-10-18: 81
- 2026-10-17: 55
- 2026-10-16: 80
- 2026-10-15: 80
- 2026-10-14: 80
- 2026-10-13: 49
- 2026-10-12: 49
- 2026-10-07: 49

## Common questions

### What is the io.github.EricSeokgon/egovframe-scaffold-mcp server?

io.github.EricSeokgon/egovframe-scaffold-mcp is listed in the public MCP registry as io.github.EricSeokgon/egovframe-scaffold-mcp. eGovFrame (전자정부 표준프레임워크) projects: templates, components, CRUD, build, 5.x migration, dependencies. This page covers its npm package (egovframe-scaffold-mcp).

### Is the io.github.EricSeokgon/egovframe-scaffold-mcp server safe to use?

io.github.EricSeokgon/egovframe-scaffold-mcp scores 81 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 18 October 2026. It declares no install or post-install scripts. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the io.github.EricSeokgon/egovframe-scaffold-mcp server expose?

io.github.EricSeokgon/egovframe-scaffold-mcp exposes 34 tools: list_egovframe_templates, create_egovframe_project, sync_egovframe_catalog, sync_egovframe_templates, list_egovframe_components, and 29 more. Their descriptions and schemas cost roughly 11,008 tokens of context every time the server is loaded.

### Is the io.github.EricSeokgon/egovframe-scaffold-mcp server still maintained?

io.github.EricSeokgon/egovframe-scaffold-mcp is still listed as active in the MCP registry. We last reached this channel on 18 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

### What licence is the io.github.EricSeokgon/egovframe-scaffold-mcp server under?

io.github.EricSeokgon/egovframe-scaffold-mcp declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.

## Links

- npm package: https://www.npmjs.com/package/egovframe-scaffold-mcp
- Socket report: https://socket.dev/npm/package/egovframe-scaffold-mcp
- Repository: https://github.com/EricSeokgon/egovframe-scaffold-mcp
- Changelog RSS feed: https://verifymcp.io/servers/ericseokgon-egovframe-scaffold-mcp/egovframe-scaffold-mcp.xml
- Changelog JSON feed: https://verifymcp.io/servers/ericseokgon-egovframe-scaffold-mcp/egovframe-scaffold-mcp.json
- HTML version of this page: https://verifymcp.io/servers/ericseokgon-egovframe-scaffold-mcp/egovframe-scaffold-mcp
