egovframe-scaffold-mcp
This server provides MCP tools to scaffold eGovFrame (전자정부 표준프레임워크) projects using official templates, enabling AI assistants (Claude, VS Code Copilot, Cursor, etc.) to create project skeletons interactively — without needing the eGovFrame IDE.
List available templates (list_egovframe_templates): Retrieve official eGovFrame templates and their supported database types.
Create a new eGovFrame project (create_egovframe_project): Download an official GitHub template and scaffold a project with customized settings:
Project name — used as Maven
artifactIdJava
groupId(e.g.,egovframework.example)Template type:
simple-backend(Spring Boot REST, default) orsimple-react(frontend)Database type:
hsql(default),mysql,oracle,altibase, ortiberoOutput directory for the generated project
Custom git ref (branch or tag) for template download
Dry-run mode — preview generated files and settings without writing to disk
Automatic configuration: Adjusts pom.xml (groupId, artifactId, name), application.properties (Globals.DbType), and package.json (name for frontend projects).
Safety features: Prevents overwriting existing directories and enforces a 30-second timeout for template downloads.
Generates eGovFrame project scaffolds with a React frontend template, enabling AI agents to set up full-stack projects that include a React-based user interface.
Generates eGovFrame project scaffolds based on Spring Boot REST templates, allowing AI agents to create standard framework projects with configurable database types.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@egovframe-scaffold-mcpcreate an eGovFrame project named my-web-app with groupId org.myorg, using oracle database"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
egovframe-scaffold-mcp
전자정부 표준프레임워크(eGovFrame) 프로젝트 스캐폴딩·조립·진단을 제공하는 MCP(Model Context Protocol) 서버 — 커뮤니티 PoC
eGovFramework/egovframe-common-components#1120 제안의 개념 증명(Proof of Concept) 구현입니다. #628(eGovFrame MCP Server 제안)을 "프로젝트 생성 → 컴포넌트 조립 → 진단·업그레이드" 수명주기로 구체화했습니다.
Claude, VS Code(Copilot), Cursor 등 MCP를 지원하는 AI 도구에서 대화 중 즉시 표준프레임워크 프로젝트를 만들고 공통컴포넌트·AI 계층을 조립할 수 있습니다. 기존 프로젝트 진단, 리포트, 안전한 upstream 재동기화도 지원합니다.
현재 v0.23.0은 **도구 20종, 공식 템플릿 7종, 공통컴포넌트 카탈로그 190항목(리프 176종+그룹 14종)**을 제공합니다.
진행 현황 (2026-08-18)
소스 기준: v0.23.0(
package.json), 도구 20종·공식 템플릿 7종·카탈로그 190항목.안전성 기준선 완료: PR #7~#16을 반영해 provenance·strict assertion·safe remove와 프로젝트 생성/레시피/직접 조립/AI 조립/업그레이드 transaction을 갖췄습니다.
v0.22.0 추가:
EGOVFRAME_ALLOWED_ROOTS를 19개 도구 진입점에 적용해..·symlink/junction 이탈을 차단하고, 실패 시 rollback 결과를 구조화해 반환합니다. PR #16은 7파일(+340/−31), 로컬 16종 스위트 전체 통과 후 병합됐습니다.v0.23.0 추가:
build_egovframe_project— 생성한 프로젝트를 실제로 빌드(maven/gradle·mvnw/gradlew 자동 감지)하고 컴파일·테스트 오류를 파일/라인 단위로 구조화해 생성→검증 루프를 완성합니다. 타임아웃·로그 상한·허용 root·dryRun 포함. PR #18은 4파일(+458/−3), 오프라인 40단언과 실제 spawn 경로를 검증했습니다.배포 상태: 저장소 소스는 v0.23.0이며 npm은 v0.22.0까지 배포된 상태입니다. v0.23.0 배포 전에는 아래 설치 명령이 v0.22.0을 받을 수 있으므로, 기능 검증 시 소스 버전과 배포 버전을 구분해 확인하세요.
Related MCP server: AI Code Toolkit
제공 도구
도구 | 설명 |
| 공식 템플릿을 내려받아 projectName(artifactId)·groupId·DB 타입을 적용한 새 프로젝트 생성 |
| 사용 가능한 공식 템플릿 목록 |
| 공식 common-components 태그·commit·archive SHA-256/크기/파일 수 검증, |
| 선택 설치 가능한 공통컴포넌트 카탈로그 (공식 v5.0.6 고정, 리프 176종 + 그룹 14종 — 리프는 서비스 단위, 그룹 id는 하위 일괄 설치) |
| 공통컴포넌트 완전 조립 — 소스·매퍼·JSP와 message·IDGN·scheduling·정적 자산·Spring/web fragment 복사, Maven 좌표 탐지, 컴포넌트별 선별 DDL·DML 생성( |
| 키워드로 컴포넌트 검색 (id·이름·설명, 점수순 상위 10건) |
| 설치 매니페스트 기반 트랜잭션 제거 — 의존 컴포넌트·사용자 수정 hash 보호, |
| 조립 프로젝트 무결성 진단 — 파일 존재·DbType↔DB 스크립트 일치 |
| 컴포넌트의 공식 가이드 문서 조회 (egovframe-docs, 151종 매핑) |
| 공식 egovframe-ai-rag 샘플 기반 AI RAG 챗봇 조립 — Spring AI(Redis Stack)·LangChain4j(PGVector) 스택 선택(상호 배타), 소스·설정( |
| 큐레이션된 레시피(템플릿+컴포넌트 번들) 목록 |
| 레시피 하나로 생성→컴포넌트(→AI 계층)까지 조립하고 전체 성공 시에만 최종 경로로 atomic commit. 공식 템플릿이 제공하는 공통기반은 확인·보존하고 추가 컴포넌트만 설치 ( |
| 기존/레거시 프로젝트를 스캔해 빌드시스템·RTE 버전·DbType·설치 공통컴포넌트(pathPrefixes 지문)·설정 문제 진단 (읽기 전용) |
| 공식 가이드 문서(egovframe-docs) 인덱스를 키워드로 검색 — 제목·경로·연계 컴포넌트, 문서 URL·조립용 id 반환 (오프라인) |
| 프로젝트를 스캔해 설치 컴포넌트·참조 테이블·가이드 링크·이슈를 Markdown 리포트로 생성 (읽기 전용) |
| 설치 컴포넌트를 upstream과 3-way 비교해 갱신 — 사용자 수정 보존, dryRun 기본, 적용 직전 재검증, 파일·백업·매니페스트 단일 transaction (파괴적, 게이트) |
| 컴포넌트 하나의 상세(설명·직접/전이 의존성·역의존·참조 테이블·가이드 링크·설치 명령)를 한 번에 반환 (읽기 전용) |
| GitHub Actions CI 워크플로(빌드·테스트) 생성 — maven/gradle 자동 감지, dryRun, 기존 파일 보호 |
| 공식 Development CRUD wizard 입력 체계 기반 코드 생성 — VO·Mapper(XML)·Service·Controller·JSP(선택)·JUnit 5(선택), Classic/Boot 분기, 전체 충돌 사전 검사 |
create_egovframe_project 파라미터
projectName— 프로젝트명(artifactId). 소문자·숫자·하이픈 (예:my-egov-app)groupId— 자바 groupId (예:egovframework.example)database—hsql(기본) |mysql|oracle|altibase|tibero(템플릿Globals.DbType지원 값)template—simple-backend(기본, Spring Boot REST) |simple-react|simple-homepage|portal-site|enterprise-business|web-sample|msa-edu레거시 템플릿(simple-homepage·portal-site·enterprise-business·web-sample)은
egovProps/globals.properties의Globals.DbType에 DB 타입을 적용합니다.msa-edu는 멀티 프로젝트(backend/frontend/k8s)라 좌표·DB 자동 적용 없이 원본 그대로 생성하고 README 안내를 반환합니다.
outputDir— 생성 위치 상위 디렉터리ref— (선택) 내려받을 브랜치/태그. 미지정 시 템플릿 기본 브랜치. 예:main,v4.3.0dryRun— (선택, 기본false)true면 디스크에 쓰지 않고 생성 예정 파일 수·적용 설정만 미리보기
동작: 공식 템플릿 zip 다운로드 → 압축 해제(zip-slip 방지) → pom.xml의 groupId/artifactId/name 적용(부모 POM 좌표는 유지) → application.properties의 Globals.DbType 설정, 프론트엔드 템플릿은 package.json의 name 설정. 기존 디렉터리가 있으면 거부합니다. 다운로드에는 30초 타임아웃이 적용되어 무응답 시 무한 대기하지 않습니다. dryRun으로 먼저 안전하게 미리볼 수 있습니다.
generate_egovframe_crud 핵심 파라미터
projectDir— 대상 Maven/Gradle 프로젝트tableName,entityName— DB 테이블과 생성할 클래스명 (entityName생략 시 테이블명에서 변환)basePackage— 기본 패키지. mapper·VO·service·impl·controller 패키지를 개별 재정의할 수도 있습니다.fields—columnName,javaType,jdbcType,primaryKey,generated,nullable,label컬럼 스펙. 안전한 update/delete 생성을 위해 기본키가 최소 1개 필요합니다.profile—classic(Spring MVC+JSP) 또는boot(REST Controller)checkDataAccess,checkService,checkWeb— 공식wizard.xml의 생성 그룹과 대응includeJsp,withTest,dryRun— JSP·JUnit 5 테스트 선택 생성 및 무기록 미리보기
generate_egovframe_crud(
projectDir="/work/my-egov-app",
tableName="SAMPLE_BOARD",
entityName="Board",
basePackage="egovframework.example.board",
profile="classic",
fields=[
{ columnName: "BOARD_ID", javaType: "Long", jdbcType: "BIGINT", primaryKey: true, generated: true },
{ columnName: "TITLE", javaType: "String", jdbcType: "VARCHAR", nullable: false }
],
withTest=true,
dryRun=true
)생성 전 모든 대상 경로를 검사하며 기존 파일이 하나라도 있으면 아무 파일도 쓰지 않습니다. 지원 타입과 출력 계약은 CRUD 생성 설계를 참고하세요.
sync_egovframe_catalog / 컴포넌트 조립
카탈로그는 common-components 공식
v5.0.6태그와 commit23d01889…에 고정됩니다.sync_egovframe_catalog()는 태그 이동, archive SHA-256·크기·파일 수 불일치,sec.security누락, 미매핑 Java·Mapper·JSP를 검사합니다.add_egovframe_components는 기존 파일이 upstream과 동일하면 재사용하고 내용이 다르면 전체 조립을 거부합니다.감지된
mavenDependencies는 결과에 반환합니다. 프로젝트별 dependency management·버전 정책을 보호하기 위해 기존pom.xml과web.xml은 자동 덮어쓰지 않습니다.
상세 스키마와 안전 게이트는 카탈로그 동기화·완전 조립 설계를 참고하세요.
설치·사용
npm에 배포되어 설치 없이 바로 실행할 수 있습니다:
{
"mcpServers": {
"egovframe-scaffold": {
"command": "npx",
"args": ["-y", "egovframe-scaffold-mcp"]
}
}
}소스에서 직접 빌드하려면:
npm install
npm run buildClaude Desktop / Claude Code 설정 예 (mcpServers):
{
"mcpServers": {
"egovframe-scaffold": {
"command": "node",
"args": ["/절대경로/egovframe-scaffold-mcp/dist/index.js"]
}
}
}빌드 없이 실행하려면 (로컬 클론 후):
{
"mcpServers": {
"egovframe-scaffold": {
"command": "npx",
"args": ["-y", "tsx", "/절대경로/egovframe-scaffold-mcp/src/index.ts"]
}
}
}사용 예 (AI 도구에서):
"표준프레임워크로
my-egov-app프로젝트를~/work에 만들어줘. groupId는egovframework.example, DB는 mysql."
리소스·프롬프트 (MCP Resources/Prompts)
도구(tools)뿐 아니라 MCP의 리소스·프롬프트도 제공합니다 (MCP 3대 프리미티브 완비).
Resources (읽기 전용) — 지원 클라이언트에서 도구 호출 없이 카탈로그를 탐색·인용:
egovframe://catalog/components·egovframe://catalog/components/{id}·egovframe://catalog/templates·egovframe://catalog/recipes·egovframe://catalog/ai-components
Prompts — 가이드형 워크플로: scaffold_board_login, scaffold_ai_chatbot, scaffold_portal, maintain_existing
레시피 — 자주 쓰는 조합을 한 번에 조립합니다. 예: apply_egovframe_recipe(recipeId="board-login", projectName="my-egov-app", outputDir="~/work"). 목록은 catalog/recipes.json에서 관리하며 기여 환영합니다.
보안 설정 — 허용 root (선택)
환경변수 EGOVFRAME_ALLOWED_ROOTS를 설정하면, 모든 도구의 디렉터리 인자(outputDir·projectDir)가 지정한 root 내부일 때만 실행됩니다. 미설정 시 기존과 동일하게 제한이 없습니다.
// MCP 클라이언트 설정 예 (여러 root는 OS 경로 구분자로 연결: POSIX ":", Windows ";")
{ "mcpServers": { "egovframe-scaffold": {
"command": "npx", "args": ["-y", "egovframe-scaffold-mcp"],
"env": { "EGOVFRAME_ALLOWED_ROOTS": "/home/user/workspaces" }
} } }검사는 realpath 기준이라 symlink를 통한 우회도 차단합니다.
위반 시 도구는 아무 파일도 만들지 않고
AllowedRootsError(허용 root 목록 포함)로 거부합니다.transaction 실패 메시지에는 사람용 문구와 함께 기계가 읽을 수 있는
rollback-report: {...}JSON 한 줄(복원·제거·정리 건수, 실패 목록)이 포함됩니다.
검증
함수 레벨: 실제 템플릿(약 296파일) 생성, pom 좌표·DbType 적용, 중복 생성 거부,
dryRun미리보기(무기록) 확인 (npm run smoke)Maven 좌표 레벨: 프로젝트 직접 groupId/artifactId/name만 변경하고 parent·dependency artifactId 보존 (
npm run test:pom, 네트워크 불필요)카탈로그 레벨: schema v2, 고정 source/archive 지문, 자산 메타데이터, 무결성·위상 정렬·미리보기 검증 (
npm run test:catalog,npm run test:catalog-sync, 네트워크 불필요)동기화 레벨: 공식 v5.0.6 태그→commit, SHA-256·크기·파일 수,
sec.security, 미매핑 경로 0건 검증 (npm run test:catalog-sync-live, 네트워크 필요)조립 레벨: 실제 공통컴포넌트 저장소로 bbs+login+sec.security(+cmm) 843파일 조립, message·IDGN·웹 자산·공용 fragment·Maven 좌표·선별 DB 스크립트·충돌 전체 거부·파일/SQL/매니페스트 fault-injection rollback·상위 symlink 경계 검증 (
npm run test:components)수명주기 레벨: 설치 매니페스트 기록, 중복 설치 거부, 의존 컴포넌트 제거 보호, 제거·검증 동작 (
npm run test:components)프로토콜 레벨: MCP initialize / tools/list 핸드셰이크 및
ref·dryRun파라미터 노출 확인레시피 레벨:
catalog/recipes.json의 컴포넌트 id·의존성·템플릿 제공 컴포넌트 정합 검증 (npm run test:recipes, 네트워크 불필요). 공식simple-backend의 기존cmm을 보존하고 board-login의 bbs 88파일·login 41파일·SQL 4건(총 133파일)을 조립한 뒤 검증하며, 컴포넌트 이후 fault injection의 전체 staging rollback도 확인 (npm run test:recipe-transaction)진단 레벨: 픽스처(pom·DbType·컴포넌트 패키지)로
diagnose_egovframe_project의 빌드·버전·DbType·컴포넌트 지문·의존성 검출 검증 (npm run test:diagnose, 네트워크 불필요)문서 검색 레벨:
search_egovframe_docs의 키워드 매칭·점수 정렬·컴포넌트 매핑·빈질의/미존재어 처리 검증 (npm run test:docs, 네트워크 불필요)리포트 레벨: 픽스처로
generate_egovframe_report의 컴포넌트·테이블·가이드 링크 렌더링 검증 (npm run test:report, 네트워크 불필요)업그레이드 레벨: 3-way 판정 6분류(unchanged/update/user-modified/conflict/added/removed)·v1 보수모드·정상 적용/백업 계획·파일/매니페스트 fault-injection rollback·상위 symlink 경계 검증 (
npm run test:upgrade, 네트워크 불필요)컴포넌트 설명 레벨:
explain_egovframe_component의 의존성(직접·전이)·역의존·테이블·가이드 URL·미존재 예외 검증 (npm run test:explain, 네트워크 불필요)CI 생성 레벨:
generate_egovframe_ci의 maven/gradle 감지·YAML·dryRun 무기록·기존 파일 거부·빌드파일 부재 예외 검증 (npm run test:ci, 네트워크 불필요)CRUD 생성 레벨: 공식 wizard 그룹, Classic/Boot 분기, DB 생성키, JUnit 5, dryRun, PK·경로 검증, 충돌 시 전체 무기록 검증 (
npm run test:crud, 네트워크 불필요)CRUD 컴파일 레벨: 공식 simple-backend/Boot CRUD 7파일과 web-sample/Classic CRUD 9파일 생성 → JDK 17에서
mvn -q -DskipTests compile(npm run test:crud-integration, 네트워크 필요, CI 실행)안전성 레벨: 19개 도구 공통 허용 root의 미설정 호환·격리·
..이탈·symlink 우회·다중 root·비대상 인자 무해 6케이스와 구조화 rollback 필드를 검증합니다 (npm run test:allowed-roots,npm run test:transaction, 네트워크 불필요).
현재 지원 범위와 알려진 제약
공통컴포넌트 실행 자산과 Maven 좌표 탐지는 지원합니다. 기존
pom.xml·web.xml의 구조적 노드 병합은 프로젝트별 dependency management·설정 경로를 보호하기 위해 자동 수행하지 않습니다.카탈로그는 공식 v5.0.6 태그·commit·archive 지문에 고정됩니다. 최신 main 변경은
sync_egovframe_catalog(ref="main")결과를 검토한 뒤 생성 스크립트로 승격합니다.generate_egovframe_ci는 워크플로를 생성하지만 MCP 프로세스가 프로젝트 빌드·테스트를 직접 실행하고 오류를 구조화해 반환하지는 않습니다.자바 패키지 구조 변경(groupId에 맞춘 소스 디렉터리 이동)은 미지원입니다. 현재는 IDE rename refactoring을 권장합니다.
템플릿·컴포넌트·가이드 원본을 받을 때 GitHub(
codeload.github.com,raw.githubusercontent.com) 네트워크 접근이 필요합니다.
로드맵
v0.23.0까지 프로젝트·CRUD 생성, 검증된 공통컴포넌트 실행 자산 조립, 안전성 기반(테스트 판정 강제·사용자 파일 보호·전 도구 트랜잭션·허용 root·구조화 rollback 보고), 그리고 생성→검증 루프(실제 빌드·오류 구조화)를 완료했습니다.
버전 | 핵심 기능 | 목표 |
v0.20 완료 |
| 공식 |
v0.21 완료 |
| common-components v5.0.6 태그/commit/archive 고정, 190항목, message·IDGN·scheduling·정적 자산·web fragment 조립, Maven 좌표 탐지, sec.security·미매핑 경로 검증, 매니페스트 v3 |
v0.22 완료 | 전 도구 안전성 기반 | 모든 쓰기 경로 transaction, 사용자 파일 보호, 전 도구 허용 root, symlink/junction 이탈 차단, 구조화 rollback 보고 |
v0.23 완료 |
| Maven/Gradle·래퍼(mvnw/gradlew) 자동 감지, 타임아웃·로그 상한, 파일/라인 단위 오류 구조화로 생성→검증 에이전트 루프 완성(PR #18). |
v0.24 후보 | IDE·Initializr·MCP 공통 카탈로그 | Initializr JSON, Development |
v0.25 후보 |
| 3.x→4.x import·XML bean·빌드 좌표 전환. dryRun·백업·원자적 거부와 자동 변환 불가 API 보고 |
v0.26 후보 |
| 폐쇄망 최소 버전 규칙과 선택적 CVE 조회, CSRF·보안 설정·공식 패치 기준 점검 |
v0.27+ 후보 | 접근성·배포·AI 컨텍스트 | 영문 응답/README, Homebrew·MCP Registry, |
로드맵 근거:
egovframe-development에는 공식 CRUD 마법사 입력과 두 템플릿 트리가 있으며, MCP가 같은 입력 체계를 사용하면 IDE와 대화형 도구의 경험을 맞출 수 있습니다.egovframe-vscode-initializr에는 기계 판독 가능한 프로젝트·context XML 카탈로그가 이미 있어 새 목록을 만들기보다 공통 스키마로 승격하는 편이 유지보수에 유리합니다.egovframe-common-componentsv5.0.6 분석 결과, 실제 실행에는 소스·Mapper·JSP 외 리소스·설정·기능별 의존성·보안 패치 추적이 필요합니다.
상세 기획과 조사 근거는 egovframe-contribution-notes의 v0.20+ 로드맵에서 관리합니다.
개발 기반 개선도 병행합니다: GitHub Actions와 prepublishOnly 전체 테스트 일치, lockfile 기반 재현 설치, 단일 src/index.ts 모듈 분리, Windows·한글 경로·대용량 zip 검증 강화.
변경 이력
0.21.1 (완료, v0.22.0에 통합) — 사용자 프로젝트를 손상시키지 않는 실패·복구 경계를 우선 강화했습니다.
PR #9: 설치 SHA-256과 현재 파일을 비교해
unchanged/modified/unverified/missing으로 분류하고 사용자 수정·기준선 미확인 파일을 기본 보존합니다.force=true는 기존 파일과 제거 계획을remove-backup/에 보존한 뒤 제거하며, 중간 실패는 파일·POM·매니페스트를 작업 전 상태로 롤백합니다.PR #10: 재사용 가능한
ProjectFileTransaction을 도입하고 AI 파일·POM 백업/갱신·매니페스트를 한 transaction으로 commit합니다.PR #11: 프로젝트를 sibling staging에서 압축 해제·커스터마이징한 뒤 atomic rename하며, 실패·목적지 경합 시 부분 프로젝트를 노출하지 않습니다.
PR #12: 프로젝트 생성→공통컴포넌트→선택적 AI 조립을 하나의 디렉터리 transaction으로 실행하고 모든 단계가 성공한 뒤에만 최종 경로를 공개합니다. 공식 템플릿·컴포넌트 rollback 통합 테스트와 CI gate를 포함합니다.
PR #13: 직접 공통컴포넌트 조립의 파일·SQL·매니페스트를 공통 file transaction으로 commit하고, 중간 실패와 상위 symlink 경계 이탈에서 작업 전 상태로 복구합니다.
PR #14: 컴포넌트 업그레이드의 대상 hash를 적용 직전에 재검증하고, 파일·고유 백업·
upgrade-plan.json·매니페스트를 공통 transaction으로 반영합니다. 중간 실패와 상위 symlink 경계 이탈에서는 작업 전 상태로 복구합니다.PR #15: 공식 템플릿에 이미 포함된
cmm을providedComponents로 확인·보존하고, recipe가 추가하는 bbs/login만 설치합니다. 기존 38파일을 덮거나 도구 소유로 기록하지 않으며 성공 조립·검증과 후반 rollback을 모두 통합 테스트합니다.PR #16:
EGOVFRAME_ALLOWED_ROOTS를 전 도구 진입점에 적용하고 realpath 기준으로 symlink/junction 우회를 차단합니다. transaction 실패는RollbackReport(filesAttempted·restoredFiles·removedNewFiles·cleanedDirs·failures·ok)를 제공합니다.상세 분석·검증·실패/복구 이력은
egovframe-contribution-notes/작업이력.md를 단일 원장으로 사용합니다.
0.22.0 — 안전성 기반 완성: 모든 쓰기 도구를 롤백 가능한 transaction으로 통일하고(프로젝트 생성·레시피·직접 조립·AI 조립·업그레이드), 회귀 시 테스트가 실패하도록 판정을 강제했으며, 컴포넌트 제거 시 사용자 파일을 보호합니다. 신규
EGOVFRAME_ALLOWED_ROOTS로 전 도구 공통 허용 root를 강제(realpath 기반, symlink 우회 차단, 미설정 시 무제한 하위 호환)하고, transaction 실패 시 사람용 문구와 함께 기계가 읽는rollback-report: {json}(복원·제거·정리 건수, 실패 목록)을 제공합니다. 레시피의 템플릿 컴포넌트 보존 픽스 포함. (#8–#16)0.21.0 — 검증된 공통컴포넌트 완전 조립:
sync_egovframe_catalog를 추가하고 common-components 공식 v5.0.6 태그·commit(23d01889…)·archive SHA-256/크기/파일 수를 고정했습니다. 카탈로그 schema v2를 190항목(리프 176+그룹 14)으로 재생성해 message bundle 278건, IDGN context 91건, scheduling context 18건, 웹 자산 662건, Spring/web fragment 26건과 Maven 좌표를 연결했습니다.add_egovframe_components가 이 자산을 함께 복사하며 동일 파일 재사용, 다른 내용 충돌 전체 거부, 쓰기 실패 롤백, DB 비사용 컴포넌트의 SQL 폴백 방지를 적용합니다.sec.security신규 보안 패키지와 미매핑 upstream 경로를 CI에서 검증하고 매니페스트 schema v3에 source 고정 정보를 기록합니다. 기존 카탈로그 schema v1·매니페스트 v1/v2 하위 호환.0.20.0 — CRUD 코드 생성:
generate_egovframe_crud추가. eGovFrame Development의 공식wizard.xml입력 그룹(author/createDate, DataAccess·Service·Web, mapper/VO/service/controller/JSP 경로)에 맞춰 VO·DefaultVO·EgovMapper 인터페이스·MyBatis XML·Service·ServiceImpl·Controller를 생성합니다. Classic은 MVC+JSP 2종, Boot는 REST Controller를 생성하고withTest로 JUnit 5 계약 테스트를 추가합니다. PK 필수, SQL/Java 식별자·상대경로 검증, dryRun, 전체 충돌 사전 검사, 쓰기 실패 롤백을 적용했습니다. 오프라인 테스트(npm run test:crud)와 공식 simple-backend/Boot·web-sample/Classic Maven compile 통합 테스트를 추가했습니다. 프로젝트 직접 Maven 좌표만 변경해 parent·dependency를 보존하고, lockfile·npm 패키지 설계 문서·CI 전체 릴리스 게이트를 추가했으며adm-zip0.6.0으로 고위험 ZIP 취약점을 해소했습니다. 기존 17개 도구 하위 호환.0.19.0 — CI 생성 + 문서 검색 deep:
generate_egovframe_ci추가(프로젝트에 GitHub Actions 빌드·테스트 워크플로 생성, maven/gradle 자동 감지·dryRun·기존 파일 거부).search_egovframe_docs에fetchTop옵션 추가 — 상위 결과 문서 본문을 내려받아 스니펫 제공(기본 0=오프라인). 테스트(npm run test:ci) 추가. 기존 도구 하위 호환.0.18.0 — 컴포넌트 설명 + 리소스/프롬프트 확장:
explain_egovframe_component추가 — 컴포넌트 하나의 설명·직접/전이 의존성·이 컴포넌트에 의존하는 컴포넌트·참조 테이블·가이드 링크·설치 명령을 한 번에 반환(읽기 전용). 리소스egovframe://catalog/ai-components추가, 프롬프트scaffold_portal·maintain_existing(진단→리포트→업그레이드) 추가. 테스트(npm run test:explain) 추가. 기존 도구 불변(완전 하위 호환).0.17.0 — 컴포넌트 업그레이드:
upgrade_egovframe_project추가 — 매니페스트 설치 컴포넌트를 upstream 최신본과 3-way 비교(설치 기준선 해시·현재 디스크·upstream)해 갱신합니다. 사용자가 수정한 파일은force없이 보존,dryRun기본(계획 미리보기), 덮어쓰기 전upgrade-backup/에 백업, 하드 충돌 시 아무것도 쓰지 않고 거부. 매니페스트 스키마 v2(파일별 해시 기준선) —add_egovframe_components가 이후 설치본에 해시 기록. 오프라인 판정 테스트(npm run test:upgrade) 추가. 기존 도구·기존 매니페스트(v1) 하위 호환(해시 없으면 보수 모드).0.16.0 — 프로젝트 리포트:
generate_egovframe_report추가 — 프로젝트를 스캔해 설치 공통컴포넌트·참조 테이블·가이드 문서 링크·이슈를 Markdown 리포트로 생성합니다(읽기 전용,diagnose+카탈로그+가이드 매핑 재사용). 조립 결과 문서화/README 첨부용. 테스트(npm run test:report) 추가. 기존 도구 불변(완전 하위 호환).0.15.0 — 가이드 문서 검색:
search_egovframe_docs추가 — 카탈로그 가이드 매핑(제목·경로·연계 컴포넌트·카테고리)을 키워드로 점수순 검색하고 문서 URL과 조립용 컴포넌트 id를 반환합니다. 오프라인 동작(네트워크 불필요). 테스트(npm run test:docs) 추가. 기존 도구 불변(완전 하위 호환).0.14.0 — 프로젝트 진단 도구:
diagnose_egovframe_project추가 — 기존(스캐폴딩 도구로 만들지 않은 것 포함) 프로젝트를 읽기 전용으로 스캔해 빌드시스템(maven/gradle)·eGovFrame RTE 버전·Globals.DbType·설치된 공통컴포넌트(카탈로그pathPrefixes지문 매칭)·AI 계층·매니페스트 유무를 파악하고, 의존성 누락·DbType 미설정 등 이슈와 다음 단계 제안을 리포트합니다. 픽스처 테스트(npm run test:diagnose) 추가. 기존 도구 불변(완전 하위 호환).0.13.0 — MCP 리소스·프롬프트 + 레시피:
tools외에resources(카탈로그·템플릿·가이드 읽기 전용 노출, 단일 컴포넌트는 resource template)와prompts(scaffold_board_login·scaffold_ai_chatbot)를 지원해 MCP 3대 프리미티브를 완비. 레시피(catalog/recipes.json)와list_egovframe_recipes·apply_egovframe_recipe도구 추가 — 생성→컴포넌트→AI 계층 조립을 한 번에 오케스트레이션(각 단계dryRun전파·원자적 거부 계승). 정합성 테스트(npm run test:recipes) 추가. 기존 도구·카탈로그 불변(완전 하위 호환).0.12.0 — 카탈로그 커버리지 확대(68 → 188항목): 컴포넌트 단위를 2단계 패키지에서 리프 패키지(서비스 단위, 최대 4단계) 로 세분화해 리프 174종을 개별 선택 설치할 수 있습니다. 기존 2단계 id는
children을 가진 그룹으로 유지되어 하위 호환됩니다(그룹 요청 시 리프로 확장 설치, 그룹+리프 동시 요청 중복 제거). 리프 한글명은 Service 인터페이스 Javadoc에서 자동 추출(96종), 가이드 문서 매핑은 리프 우선으로 재계산(151종).0.11.0 — 템플릿 확장: 공식 템플릿 2종 → 7종 (
simple-homepage·portal-site·enterprise-business·web-sample·msa-edu추가). 레거시 템플릿은egovProps/globals.properties의Globals.DbType적용을 새로 지원, 멀티 프로젝트(msa-edu)는 좌표/DB 재작성을 건너뛰어 하위 모듈 참조를 보호. 템플릿별 빌드 안내(nextSteps) 분기, 통합 테스트(npm run test:templates) 추가.0.10.0 — AI 컴포넌트 조립 M3: langchain4j 스택 실조립·제거 사이클 통합 검증(init-scripts/ai/·JPA 의존성·pom 원복),
validate_egovframe_project에 AI 실행 전제 진단(aiChecks) 추가 —application-ai.yml의 ONNX 모델/토크나이저·임베딩 설정 경로를${user.home}·환경변수 플레이스홀더까지 해석해 존재 확인, docker compose 기동 안내 (경고와 분리되어 ok 판정에 영향 없음).0.9.0 — AI 컴포넌트 조립 M2(실조립):
add_ai_components가 실제로 조립합니다 — 소스(com.example.chat)·설정(application-ai.yml프로필, 기존 설정 불변)·UI·인프라(docker-compose.ai.yml·Dockerfile.ai·k8s/ai/) 복사(전체 사전 충돌 검사·원자적 거부), pom에 누락 좌표만 마커 주석 구간으로 삽입(exclusions 보존,pom.xml.bak-ai백업), 매니페스트 기록으로remove_egovframe_components가 파일·pom 삽입분을 함께 원복(바이트 단위 복원 검증),validate_egovframe_project에 pom 마커 진단 추가, 통합 테스트(npm run test:ai-assembly) 추가.0.8.0 — AI 컴포넌트 조립 M1:
add_ai_componentsdryRun 미리보기(파일 복사 계획·pom 의존성 diff·부모 POM 호환성 게이트·스택 상호 배타 검사), AI 카탈로그(catalog/ai-components.json, egovframe-ai-rag 모듈 스캔 자동 생성npm run generate:ai-catalog),list_egovframe_components에 AI 컴포넌트 노출, 오프라인 테스트(npm run test:ai) 추가.0.7.0 —
get_egovframe_guide: 컴포넌트 id로 표준프레임워크 공식 가이드 문서(egovframe-docs)를 조회. 카탈로그에 문서 매핑 자동 생성(--docs, 지배적 패키지 참조 기준 45종) 추가. 한글명 큐레이션 12→27종.0.6.0 — 컴포넌트별 테이블 선별 DDL(M4): 카탈로그에 매퍼 기반 참조 테이블 자동 추출(48/68종),
database지정 시 통합 스크립트에서 해당 컴포넌트 구문만 추출해ddl|dml/<컴포넌트id>.sql생성(테이블 미상 컴포넌트는 통합본 폴백), 매니페스트에 컴포넌트별 스크립트 귀속(제거 시 함께 정리).0.5.0 — 조립 수명주기 완성:
search_egovframe_components(키워드 검색), 설치 매니페스트(.egovframe-components.json) 기록,remove_egovframe_components(의존 보호·dryRun),validate_egovframe_project(파일 무결성·DbType↔DDL 일치 진단), 중복 설치 거부.0.4.0 — 공통컴포넌트 선택 설치 M3: 저장소 구조 스캔으로 카탈로그 자동 생성(
scripts/generate-catalog.mjs), 커버리지 3종 → 68종(2단계 패키지 단위, cmm 하위 통합). 이름·설명·의존성은catalog/overrides.json으로 큐레이션(기본 의존성 휴리스틱: cmm).0.3.0 — 공통컴포넌트 선택 설치 M2:
add_egovframe_components실제 조립 구현(의존성 포함 파일 복사, 전체 사전 충돌 검사 후 원자적 거부, zip-slip 방지,database지정 시 DDL·DML 복사, zip 프로세스 캐시). 통합 테스트(test:components) 추가.0.2.2 — 공통컴포넌트 선택 설치 M1: 컴포넌트 카탈로그(
catalog/components.json, 대표 3종 cmm·bbs·login),list_egovframe_components·add_egovframe_components(dryRun 미리보기) 도구 추가, 카탈로그 오프라인 테스트 추가.0.2.1 — 프론트엔드(simple-react) 템플릿의
package.jsonname을 프로젝트명으로 적용(백엔드는 기존대로 pom·DbType).0.2.0 — 다운로드 타임아웃(30초),
ref(브랜치/태그) 파라미터,dryRun미리보기 모드 추가.list_egovframe_templates가 지원 DB 목록도 함께 반환.0.1.0 — 최초 PoC:
create_egovframe_project,list_egovframe_templates.
라이선스
Apache License 2.0
Available Tools
19 toolsadd_ai_componentsA
공식 egovframe-ai-rag 샘플 기반 AI RAG 챗봇(문서 업로드→임베딩→하이브리드 검색→LLM 응답)을 기존 Boot 프로젝트에 조립합니다. 소스·설정(application-ai.yml 프로필)·UI·인프라를 복사하고 pom에 누락 의존성만 마커 구간으로 삽입합니다(백업 생성, 제거 시 원복). 기존 파일과 충돌하면 아무것도 쓰지 않고 거부합니다. dryRun=true로 먼저 미리볼 수 있습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | egovframe-ai-rag 브랜치/태그 (기본: 카탈로그 기준 브랜치) | |
| stack | Yes | AI 스택: spring-ai(Redis Stack) | langchain4j(PGVector). 상호 배타 | |
| dryRun | No | true면 복사·병합 없이 계획만 미리보기(네트워크 불필요) | |
| includeUi | No | 채팅 UI(chat.html·static) 복사 | |
| projectDir | Yes | 대상 프로젝트 디렉터리(절대경로 권장). egovframe-boot-starter-parent 기반 Boot 프로젝트 | |
| includeInfra | No | docker-compose.ai.yml·Dockerfile.ai·k8s/ai 복사 | |
| includeTests | No | 샘플 테스트 복사 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses key behaviors: copies sources/config/UI/infra, inserts dependencies, creates backup, refuses on conflict, and supports dryRun preview. It does not detail side effects like modification of existing files despite backup, but overall it is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph in Korean, about three sentences. It is concise and packs essential information without redundancy, though it could be slightly restructured for readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the 7 parameters, no output schema, and no annotations, the description covers core functionality, conflict handling, dryRun, and stack details. It does not cover error handling or success indications, but it is sufficiently complete for an AI agent to decide selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds context beyond schema: it explains the purpose of stack choices (spring-ai vs langchain4j with backends) and details dryRun behavior. This adds meaning beyond the parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool adds an AI RAG chatbot based on the egovframe-ai-rag sample to an existing Boot project. It specifies the actions (copy sources, config, UI, infra) and distinguishes from sibling tools like remove_egovframe_components or add_egovframe_components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates usage for adding an AI chatbot to a Boot project, mentions safe mode (dryRun), conflict behavior, and stack choices with mutual exclusivity. However, it does not explicitly state when not to use or provide alternatives, though the sibling list implies different purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_egovframe_componentsA
공통컴포넌트를 골라 기존 프로젝트에 조립합니다. 의존 컴포넌트를 포함해 소스·매퍼·JSP를 복사하고, database 지정 시 DB DDL·DML 스크립트도 복사합니다. 기존 파일과 충돌하면 아무것도 쓰지 않고 거부합니다. dryRun=true로 먼저 미리볼 수 있습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | true면 복사 없이 설치 순서·규모만 미리보기(네트워크 불필요) | |
| database | No | DB 스크립트 복사 대상 DB (altibase|cubrid|goldilocks|maria|mysql|oracle|postgres|tibero) | |
| components | Yes | 컴포넌트 id 목록. 예: ["bbs", "login"] | |
| projectDir | Yes | 대상 프로젝트 디렉터리(절대경로 권장). 먼저 create_egovframe_project로 생성 | |
| includeDependencies | No | 의존 컴포넌트 자동 포함 여부 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that it copies source/mapper/JSP plus DB scripts if database specified, refuses to write on file conflicts, and supports a preview mode. This provides good behavioral context, though it could mention any irreversible actions or prerequisite the project exists (implied by projectDir).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise: four sentences covering main action, dependency handling, conflict behavior, and dry run. Each sentence serves a distinct purpose with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given all 5 parameters are described in the schema and no output schema exists, the description provides sufficient context for the tool's operation (copy behavior, conflict handling, preview). It could mention what happens after success (e.g., no return value) but overall complete for this tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the description adds little beyond what the schema already provides. The description redundantly mentions dryRun and database parameters but does not enrich understanding of the component IDs listing or includeDependencies behavior beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: selecting and assembling common components (EgovFrame) into an existing project, copying source files, mappers, JSPs, and optionally DB scripts. It distinguishes from sibling tools like add_ai_components by specifying the EgovFrame context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions a dry run option ('dryRun=true로 먼저 미리볼 수 있습니다'), offering usage advice but does not explicitly contrast with alternative tools or provide when-to-use/when-not-to-use guidance. Usage is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
apply_egovframe_recipeA
레시피 하나를 골라 프로젝트 생성 → 공통컴포넌트(필요 시 AI 계층) 조립까지 순차 실행합니다. dryRun=true로 전체 계획을 먼저 미리볼 수 있습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| dryRun | No | true면 디스크 변경 없이 전체 계획만 미리보기 | |
| groupId | No | 자바 groupId | egovframework.example |
| database | No | DB 스크립트 대상(미지정 시 레시피 기본값) | |
| recipeId | Yes | list_egovframe_recipes의 id. 예: board-login | |
| outputDir | Yes | 생성할 상위 디렉터리(절대경로 권장) | |
| projectName | Yes | 프로젝트명(artifactId). 소문자·숫자·하이픈 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Mentions sequential execution and dryRun behavior. Does not disclose potential side effects like file overwriting, permissions required, or whether it modifies existing projects. Some behavioral context but missing important details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with front-loaded main action. No redundant words. Every sentence provides essential information: what the tool does and how to preview the plan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema, so description need not explain return values. However, it does not describe what happens after execution (e.g., output files, logs, success/failure indication). Missing prerequisites or dependency info. Adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for all 6 parameters. The tool description adds no additional meaning beyond what the schema already provides. dryRun behavior is mentioned in both, so description adds minimal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it selects a recipe, generates a project, and assembles common components (with optional AI components) sequentially. The verb '실행합니다' and resource '레시피' are specific. Distinguishes from siblings like create_egovframe_project (project creation alone) and add_egovframe_components (component addition separately).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes dryRun=true for previewing the plan. Implies this tool combines project creation and component assembly, but does not explicitly state when to use vs. alternatives like creating a project first then adding components. Provides clear usage context but lacks exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_egovframe_projectB
전자정부 표준프레임워크 공식 템플릿으로 새 프로젝트 골격을 생성합니다. 공식 GitHub 템플릿을 내려받아 projectName/groupId/DB 타입을 적용합니다. dryRun=true로 먼저 미리보기할 수 있습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | 내려받을 브랜치/태그(미지정 시 템플릿 기본 브랜치). 예: main, v4.3.0 | |
| dryRun | No | true면 디스크에 쓰지 않고 생성 예정 내용만 미리보기 | |
| groupId | Yes | 자바 groupId. 예: egovframework.example | |
| database | No | DB 타입 (템플릿 지원: hsql|mysql|oracle|altibase|tibero) | hsql |
| template | No | 템플릿 종류 | simple-backend |
| outputDir | Yes | 프로젝트를 생성할 상위 디렉터리(절대경로 권장) | |
| projectName | Yes | 프로젝트명(artifactId). 소문자·숫자·하이픈, 예: my-egov-app |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description notes dryRun for preview but lacks details on potential destructive behavior (e.g., overwriting existing directories), required permissions, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with purpose, no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Briefly covers purpose and a key flag (dryRun) but omits output/return value description (no output schema). Given 7 parameters, schema already details them; additional behavioral or success criteria would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%; description adds minimal extra context beyond schema (e.g., 'official GitHub template'). DryRun hint already present in schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it creates a new project skeleton from official eGovFrame template with specified settings. However, it does not explicitly differentiate from sibling tools like add_egovframe_components or validate_egovframe_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Only mentions using dryRun=true for preview. No guidance on when to use this tool versus alternatives, prerequisites, or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
diagnose_egovframe_projectA
기존(스캐폴딩 도구로 만들지 않은 것 포함) 전자정부 표준프레임워크 프로젝트를 스캔해 빌드시스템·RTE 버전·DbType·설치된 공통컴포넌트(카탈로그 pathPrefixes 지문)·설정 문제를 진단합니다. 디스크를 변경하지 않는 읽기 전용입니다.
| Name | Required | Description | Default |
|---|---|---|---|
| projectDir | Yes | 진단할 프로젝트 디렉터리(절대경로 권장) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly states '디스크를 변경하지 않는 읽기 전용입니다' (read-only, does not change disk), providing clear behavioral transparency. Since no annotations are provided, the description carries full burden; the read-only nature is well communicated, though no other behavioral traits (e.g., permissions) are mentioned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single Korean sentence that concisely covers the tool's purpose and key aspects. It is front-loaded with the main action. Slightly longer due to listing diagnostic items, but remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides a good overview of what the tool checks (build system, version, DB type, common components, configuration issues) and its read-only nature. However, it does not describe the output format or return values, which would be helpful given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (only one parameter), and the schema already describes 'projectDir' as the directory to diagnose (recommended absolute path). The description adds no additional parameter information beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Descriptiom clearly states the tool scans existing eGovFrame projects to diagnose build system, RTE version, DbType, common components, and configuration issues. It uses a specific verb ('diagnose') and resource, distinguishing it from siblings like validate_egovframe_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for diagnosing existing projects (including non-scaffolding) and notes it is read-only, but it does not provide explicit guidance on when to use this tool versus alternatives or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_egovframe_componentA
공통컴포넌트 하나의 상세(설명·직접/전이 의존성·이 컴포넌트에 의존하는 컴포넌트·참조 테이블·가이드 문서 링크·설치 명령)를 한 번에 반환합니다. (읽기 전용)
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | 컴포넌트 id. 예: bbs |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description disclosure that the tool is read-only ('읽기 전용') and lists all return elements. This gives clear behavioral context. It does not mention potential failure modes or permissions, but for a simple read tool this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently packs all key details. While it uses parentheses for a list, it remains clear and front-loaded. No unnecessary words, though the list could be formatted more cleanly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has low complexity (one parameter, no output schema). The description explains what the return value contains, which is sufficient for the agent to understand the output. It could mention that the component must exist, but the example mitigates this.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage with a description for the id parameter. The description adds an example ('예: bbs'), which is helpful but does not provide additional meaning beyond what the schema already states. Baseline score is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool returns detailed information about a single common component, listing specifics like description, dependencies, tables, guide links, and installation commands. It uses a specific verb and resource, and the name 'explain' distinguishes it from siblings that list, search, or add components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you need full details of one component, but it does not explicitly state when to use this tool versus alternatives like list_egovframe_components or get_egovframe_guide. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_egovframe_ciA
프로젝트에 GitHub Actions CI 워크플로(빌드·테스트)를 생성합니다. 빌드도구(maven/gradle) 자동 감지, JDK 지정. dryRun으로 내용만 미리볼 수 있고, 실제 생성 시 기존 파일이 있으면 덮어쓰지 않고 거부합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| jdk | No | JDK 버전 (기본 17) | 17 |
| dryRun | No | true면 파일 생성 없이 내용만 반환 | |
| projectDir | Yes | 프로젝트 디렉터리(절대경로 권장) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that dryRun previews content without creation and that actual generation refuses to overwrite existing files. These are key behavioral traits. However, it does not mention error handling for missing build tools or other edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, zero waste. First sentence states the core purpose, second adds key behaviors (detection, dryRun, non-overwrite). Information is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so description should clarify return values. It states dryRun returns content, but not what normal creation returns (e.g., success message or file path). Missing this detail reduces completeness for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, baseline 3. The description adds context: dryRun behavior, absolute path recommendation for projectDir, and default JDK version. This adds marginal value beyond schema but does not deepen parameter semantics significantly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it generates a GitHub Actions CI workflow (build/test) for a project. It specifies automatic detection of build tools (maven/gradle) and JDK specification, distinguishing it from sibling tools like create_egovframe_project or add_ai_components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for CI workflow generation but does not explicitly state when to use this tool versus alternatives. It mentions dryRun and overwrite prevention but lacks context on prerequisites (e.g., existing build tool) or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_egovframe_crudA
eGovFrame Development의 공식 CRUD wizard 입력 체계에 맞춰 VO·Mapper(XML)·Service·Controller·JSP(선택)·JUnit 5 테스트(선택) 골격을 생성합니다. Classic XML과 Boot REST 프로필을 지원하며, 전체 파일 충돌을 먼저 검사해 하나라도 존재하면 아무것도 쓰지 않습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| author | No | 공식 wizard의 author | egovframe-scaffold-mcp |
| dryRun | No | true면 파일을 쓰지 않고 생성 계획만 반환 | |
| fields | Yes | 테이블 컬럼 정의 | |
| profile | No | classic=Spring MVC+JSP, boot=REST Controller | classic |
| checkWeb | No | 공식 wizard Web 그룹 생성 여부 | |
| withTest | No | JUnit 5 서비스 계약 테스트 골격 생성 | |
| jspFolder | No | 프로젝트 기준 JSP 폴더 | |
| tableName | Yes | CRUD 대상 테이블명. 단일 SQL 식별자, 예: SAMPLE_BOARD | |
| voPackage | No | VO 패키지 | |
| createDate | No | 공식 wizard의 createDate. 미지정 시 오늘 날짜 | |
| entityName | No | 생성 클래스명. 미지정 시 tableName에서 PascalCase로 생성 | |
| includeJsp | No | classic 프로필의 JSP 2종 생성 여부(기본 true) | |
| projectDir | Yes | 대상 프로젝트 디렉터리(절대경로 권장, pom.xml 또는 build.gradle 필요) | |
| basePackage | Yes | 기본 자바 패키지. 예: egovframework.example.board | |
| implPackage | No | ServiceImpl 패키지 | |
| checkService | No | 공식 wizard Service 그룹 생성 여부 | |
| mapperFolder | No | 프로젝트 기준 Mapper XML 폴더 | |
| mapperPackage | No | Mapper 인터페이스 패키지 | |
| servicePackage | No | Service 패키지 | |
| checkDataAccess | No | 공식 wizard DataAccess 그룹 생성 여부 | |
| controllerPackage | No | Controller 패키지 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses an important safety behavior (pre-checks file conflicts and writes nothing if any exist), which adds valuable context beyond the schema. It doesn't mention permissions, return format, or directory side effects, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences: the first states exactly what is generated, the second covers profiles and conflict safety. No filler, front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex 21-parameter generator with no output schema, the description gives a strong high-level overview, including the generated artifact types and safety behavior. It does not explain the return value or plan output for dryRun, which is a minor gap given the tool's richness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for all 21 parameters, so the description does not need to add parameter detail. The few high-level mentions (profiles, optional JSP/tests) map to schema fields without adding new semantic value. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a VO/Mapper/Service/Controller/JSP/JUnit skeleton per eGovFrame's official CRUD wizard, and mentions profile support and conflict-checking behavior. This distinguishes it from siblings like generate_egovframe_ci or create_egovframe_project.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The context is clear: use this when an eGovFrame CRUD scaffold is needed, with profiles and optional JSP/tests indicated. However, it does not explicitly name alternatives or state when not to use it, so it stops short of full usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_egovframe_reportA
프로젝트를 스캔해 설치 공통컴포넌트·참조 테이블·가이드 문서 링크·이슈를 Markdown 리포트로 생성합니다. (읽기 전용) 조립 결과 문서화나 README 첨부에 적합합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| projectDir | Yes | 리포트를 만들 프로젝트 디렉터리(절대경로 권장) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explicitly notes the tool is read-only ('읽기 전용'), which is a key behavioral trait. With no annotations provided, this disclosure helps, but additional details (e.g., no side effects, no network calls) are missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two sentences that front-load the main action and purpose, with no redundant or irrelevant content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only report generator with one parameter and no output schema, the description covers the content and read-only nature. It lacks specification of where the report is saved or returned, but this is a minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100% (single parameter with description requiring absolute path). The tool description does not add new information beyond the schema, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool scans a project and generates a Markdown report containing installed components, reference tables, guide links, and issues. This specific verb+resource combination distinguishes it from sibling tools like diagnose_egovframe_project or add_egovframe_components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions suitability for documenting assembly results or attaching to README, providing some context. However, it does not explicitly state when to use this tool instead of alternatives like diagnose_egovframe_project, nor does it list exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_egovframe_guideA
컴포넌트의 공식 가이드 문서(표준프레임워크 포털 egovframe-docs)를 가져옵니다. 문서가 여러 건이면 목록을 함께 반환하며 docIndex로 선택할 수 있습니다.
| Name | Required | Description | Default |
|---|---|---|---|
| docIndex | No | 문서가 여러 건일 때 선택 (0부터, 기본 0) | |
| component | Yes | 컴포넌트 id. 예: bbs, login, cop.cmy |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must cover behavior. It discloses that multiple documents return a list and can be selected via docIndex, but does not describe return format for single documents, error behavior, or read-only nature. Adequate but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words, front-loaded with purpose. Highly concise and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks return format specification for single documents and does not cover error cases. With no output schema, more detail on response structure would improve completeness. Adequate for a simple read tool but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. Description adds examples for component (bbs, login) and explains docIndex selection behavior, which adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it fetches the official guide document for a given component, with verb '가져옵니다' and specific resource. It mentions docIndex for selecting among multiple documents, distinguishing it from sibling search_egovframe_docs implicitly, though not explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use vs sibling tools, but the intended use case (fetching a specific component guide) is implied. Lacks when-not-to-use or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_egovframe_componentsA
선택 설치를 지원하는 공통컴포넌트 카탈로그를 반환합니다 (저장소 스캔으로 자동 생성, scripts/generate-catalog.mjs).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It mentions the catalog is auto-generated from a repository scan, implying it is read-only. However, it does not disclose any other behavioral traits (e.g., side effects, permissions). For a list operation, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, dense sentence in Korean provides the purpose and source of the data. No unnecessary words, front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless list tool, the description covers the basics: what it returns and its generation method. However, it lacks details about the return format (e.g., structure of the catalog), which could be helpful given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so schema coverage is 100% by default. The description adds no parameter information, which is acceptable since there are none. Baseline for 0 parameters is 4.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('returns') and resource ('common component catalog that supports selective installation'), distinguishing it from sibling tools like 'add_egovframe_components' or 'search_egovframe_components'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the tool's output but does not explicitly state when to use it versus alternatives. The context of 'selection installation' implies it's a preliminary step before adding components, but no direct guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_egovframe_recipesA
큐레이션된 레시피(템플릿+컴포넌트 번들) 목록을 반환합니다. apply_egovframe_recipe로 한 번에 조립할 수 있습니다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full burden. It states the tool returns a list but gives no information about side effects, permissions, rate limits, or output format. For a simple list tool this is passable but not thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two short sentences. The first sentence states the purpose, and the second provides a related action. No filler words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no input parameters and no output schema, the description is mostly complete for a list tool. It could optionally describe the output structure (e.g., what fields each recipe contains), but it's not critical for basic usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has no parameters, so the description does not need to add parameter meaning. Schema coverage is 100% (empty). Baseline 4 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a list of curated recipes (template+component bundles) and mentions the related tool apply_egovframe_recipe for assembly. This distinguishes it from sibling list tools like list_egovframe_templates and list_egovframe_components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the user that after listing, the apply_egovframe_recipe tool can be used to assemble the recipe. However, it does not provide explicit when-not-to-use or contrast with other list tools, but the hint is useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_egovframe_templatesA
사용 가능한 전자정부 표준프레임워크 프로젝트 템플릿 목록을 반환합니다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states the output type (list) but discloses no behavioral traits such as authentication needs, caching behavior, data freshness, response format details, or any side effects. For a read-only listing, basic expectations are not met.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no extraneous words. It efficiently conveys the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters, no annotations, and no output schema, the description is minimal. It should at least hint at what each template entry contains (e.g., name, ID) or whether the list is ordered. The agent may need more context to use the output effectively.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters, and schema description coverage is 100% (trivially). No parameter documentation is needed. Baseline 4 is appropriate as the description adds no parameter info but doesn't need to.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns a list of eGovernment standard framework project templates ('사용 가능한...목록을 반환'). The verb 'returns' and resource 'templates' are specific, and it distinguishes from the sibling 'create_egovframe_project' (list vs create).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage: to see available templates before creating a project. While no explicit when-not or alternatives are stated, the purpose naturally indicates when to use (when you need the list) and not use (when creating a project). The single sibling is understood by contrast.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_egovframe_componentsA
add_egovframe_components로 조립한 컴포넌트를 제거합니다. 설치 매니페스트에 기록된 파일만 삭제하며, 다른 설치 컴포넌트가 의존하거나 설치 시점 hash와 달라진 파일은 기본 거부합니다. force=true는 remove-backup/에 사본을 만든 뒤 트랜잭션 제거하며, dryRun 미리보기를 지원합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | 사용자 수정·hash 미검증 파일도 remove-backup/에 백업한 뒤 제거 | |
| dryRun | No | true면 삭제 없이 대상만 미리보기 | |
| components | Yes | 제거할 컴포넌트 id 목록 | |
| projectDir | Yes | 대상 프로젝트 디렉터리 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries the burden. It discloses that only manifest-recorded files are deleted, refusal of dependent or hash-mismatched files by default, force creating backups in remove-backup/ with transactional removal, and dryRun preview support. This is rich, non-obvious behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense sentence that front-loads the core purpose and follows with safety and mode details. Every word adds value; no redundant or vague phrasing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a removal tool with four parameters and no output schema, the description covers the essential behavioral aspects: scope, safety guards, force semantics, and preview mode. It could mention what the tool returns (e.g., list of affected files), but that is a minor gap given the dryRun preview is already described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are already documented. The description adds meaningful context by explaining how force and dryRun affect behavior (e.g., backup creation, transactionality), which goes beyond the schema's simple type/default descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('removes') and resource ('components assembled with add_egovframe_components'), clearly distinguishing it from sibling tools like add_egovframe_components and list_egovframe_components. The scoping to manifest-recorded files adds precision.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use the tool (to remove previously added components) and explains the default refusal behavior and force option. However, it does not explicitly name alternative tools or when not to use it, so it falls short of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_egovframe_componentsA
키워드로 공통컴포넌트를 검색합니다 (id·이름·설명·카테고리 부분 일치, 점수순 상위 10건).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 검색어. 예: 게시판, bbs, 로그인 | |
| category | No | 카테고리 필터 (cmm|cop|uss|sym|sec|utl|dam|ext|ssi|sts|uat) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that search is a partial match across multiple fields and returns top 10 results sorted by score, which is good transparency for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the action and includes all essential details without unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the tool (2 parameters, no output schema), the description adequately covers search behavior, result limit, and parameter usage. It could mention the output format, but the lack of output schema makes it acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds significant value by explaining that the query parameter matches against id, name, description, and category, and that category filters using specific codes. This goes beyond the schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb '검색합니다' (searches) and the resource '공통컴포넌트' (common components). It specifies search criteria (partial match on id, name, description, category) and result limit (top 10 by score), distinguishing it from sibling tools like list_egovframe_components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for keyword-based search with partial matching and scoring, but does not explicitly mention when to use this tool vs alternatives like list_egovframe_components or search_egovframe_docs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_egovframe_docsA
공식 가이드 문서(egovframe-docs) 인덱스를 키워드로 검색합니다. 기본은 오프라인 인덱스 검색(제목·경로·연계 컴포넌트·카테고리 점수순)이며, fetchTop>0이면 상위 결과의 문서 본문을 내려받아 스니펫도 함께 제공합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 최대 결과 수 (기본 10) | |
| query | Yes | 검색어. 예: "로그인", "게시판 권한" | |
| fetchTop | No | 본문을 내려받아 스니펫을 붙일 상위 결과 수 (0=오프라인, 최대 5) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility. It discloses that the default is offline index search based on title, path, linked component, and category scores, and that fetchTop>0 triggers fetching document bodies for snippets. This is sufficient for a read-only search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose, followed by brief behavioral details. No unnecessary words; every sentence serves a purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the key behaviors and the fetchTop option. However, it lacks explicit mention of the return format (e.g., a list of results with snippets) and does not specify what happens when fetchTop is 0 beyond offline search. Slightly incomplete given no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters are fully described in the schema (100% coverage). The description adds value by explaining the default search algorithm and the effect of fetchTop, going beyond the schema's basic descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches official guide document indexes by keyword, specifying the default offline search behavior and the option to fetch document bodies for top results when fetchTop>0. It distinguishes from sibling tools like search_egovframe_components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description does not provide explicit guidance on when to use this tool versus alternatives such as search_egovframe_components. It describes the fetchTop parameter but does not compare to other search strategies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sync_egovframe_catalogB
공식 egovframe-common-components 태그·commit·아카이브 무결성을 검증하고, 고정 카탈로그 대비 upstream 변경과 sec.security 보안 패키지를 점검합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | No | 확인할 태그·브랜치·commit. 미지정 시 카탈로그의 공식 고정 태그 사용 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility for disclosing behavioral traits. It mentions checking integrity and upstream changes, but does not clarify whether the tool is read-only, whether it modifies the local catalog, what happens on integrity failures, or if it makes network calls. The term 'sync' in the name adds ambiguity, which the description does not resolve.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, densely informative sentence with no filler. It uses technical terms appropriately and front-loads the main action, making it easy to scan. Every part of the sentence contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no annotations and no output schema, the description is too sparse. It does not explain expected outputs, side effects, prerequisites, or how the 'sync' aspect operates (e.g., does it update the catalog or just report differences?). The one-line description leaves important gaps for an agent deciding whether to invoke this tool and what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single parameter 'ref', which already explains the tag/branch/commit and the default use of the official fixed tag. The tool description adds no additional parameter context beyond referencing the fixed catalog, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('검증하고' and '점검합니다' meaning verify/inspect) and a distinct resource (egovframe-common-components tags, commits, archives), while also defining the scope: comparing against the fixed catalog and checking sec.security security packages. This clearly distinguishes it from sibling tools like validate_egovframe_project or diagnose_egovframe_project by focusing on upstream changes and catalog integrity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not state that it should be used to check upstream changes or to validate catalog integrity, nor does it mention any exclusions or alternatives. The name implies a sync operation, but the description neither confirms nor denies whether it updates the catalog, leaving usage context entirely unspecified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upgrade_egovframe_projectA
매니페스트에 기록된 설치 공통컴포넌트를 upstream 최신본과 비교해 갱신합니다. 사용자가 수정한 파일은 force 없이는 보존하며, dryRun(기본)으로 변경 계획을 먼저 확인합니다. 덮어쓰기 전 upgrade-backup/에 백업하고, 하드 충돌 시 아무것도 쓰지 않고 거부합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| force | No | 사용자 수정 파일(충돌)도 백업 후 덮어쓸지 | |
| dryRun | No | true(기본)면 계획만 미리보기, 디스크 변경 없음 | |
| components | No | 대상 컴포넌트 id (미지정 시 매니페스트 전체) | |
| projectDir | Yes | 업그레이드할 프로젝트 디렉터리(절대경로 권장) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description describes key behaviors: user-modified files preserved without force, dryRun default, backup before overwrite, and rejection on hard conflicts. It could mention error cases or permissions, but overall it provides good transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each conveying a distinct behavior without redundancy. Front-loaded with the main action, then details on preserving files, dry-run, backup, and conflict handling. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description explains the tool's operation but omits return value or output format (e.g., what dryRun displays, success/error messages). With no output schema, this is a gap. Also, it doesn't specify when to use vs. sibling tools, but in context, upgrade is clear.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description does not add significant detail beyond schema descriptions for parameters like force, dryRun, components, and projectDir. The overall behavioral context adds marginal value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it updates installed common components by comparing with upstream, with specific actions like preserving user files, dry-run, backup, and conflict refusal. It is distinct from sibling tools (add, create, apply, etc.) due to the upgrade focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains usage with dryRun for planning and force for overwriting, guiding when to use each mode. However, it does not explicitly contrast with sibling tools like add_egovframe_components or apply_egovframe_recipe, though the name implies upgrade.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_egovframe_projectB
조립된 프로젝트의 무결성을 진단합니다: 설치 매니페스트 기준 파일 존재 확인, Globals.DbType과 복사된 DB 스크립트 일치 확인.
| Name | Required | Description | Default |
|---|---|---|---|
| projectDir | Yes | 검증할 프로젝트 디렉터리 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description lists two specific checks (file existence, Db type consistency) but does not disclose whether the tool is read-only, requires permissions, or what happens on failure. With no annotations, this is moderate transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences, covering the core purpose and key checks without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool lacks an output schema and the description does not explain what the tool returns (e.g., success/failure, error details). For a validation operation, this is a significant gap that leaves the agent without understanding how to interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Only one parameter exists with 100% schema description coverage. The description adds no extra detail beyond the schema's '검증할 프로젝트 디렉터리' (project directory to validate), so baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool diagnoses integrity of an assembled project, performing specific checks like file existence and DB type consistency. This is distinct from sibling tools like 'diagnose_egovframe_project', though not explicitly differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. It implies use after project assembly but does not specify prerequisites or scenarios where it should be avoided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
3 tool updates
v0.21.0- Added
generate_egovframe_crud - Changed
remove_egovframe_components1 field changed- added
Input schema / properties / forceAdded value: +{ + "default": false, + "description": "사용자 수정·hash 미검증 파일도 remove-backup/에 백업한 뒤 제거", + "type": "boolean" +}
- Added
sync_egovframe_catalog
16 tool updates
v0.19.0- Added
add_ai_components - Added
add_egovframe_components - Added
apply_egovframe_recipe - Changed
create_egovframe_project3 fields changed- added
Input schema / properties / dryRunAdded value: +{ + "default": false, + "description": "true면 디스크에 쓰지 않고 생성 예정 내용만 미리보기", + "type": "boolean" +} - added
Input schema / properties / refAdded value: +{ + "description": "내려받을 브랜치/태그(미지정 시 템플릿 기본 브랜치). 예: main, v4.3.0", + "type": "string" +} - changed
Input schema / properties / template / enumPrevious value: -[ - "simple-backend", - "simple-react" -]New value: +[ + "simple-backend", + "simple-react", + "simple-homepage", + "portal-site", + "enterprise-business", + "web-sample", + "msa-edu" +]
- Added
diagnose_egovframe_project - Added
explain_egovframe_component - Added
generate_egovframe_ci - Added
generate_egovframe_report - Added
get_egovframe_guide - Added
list_egovframe_components - Added
list_egovframe_recipes - Added
remove_egovframe_components - Added
search_egovframe_components - Added
search_egovframe_docs - Added
upgrade_egovframe_project - Added
validate_egovframe_project
2 tool updates
v0.1.0- First observed
create_egovframe_project - First observed
list_egovframe_templates
TDQS
Scored across 19 tools
Most tools map cleanly to distinct resources and actions, but validate_egovframe_project, diagnose_egovframe_project, and generate_egovframe_report all involve scanning/inspecting projects, so an agent could occasionally pick the wrong one. The detailed descriptions reduce ambiguity, but the overlap keeps this from being perfectly disambiguated.
All tool names follow a clear, predictable verb_noun snake_case pattern with a consistent egovframe domain marker, such as list_, create_, add_, remove_, search_, and generate_. There is no mixed casing, vague verb drift, or stylistic inconsistency.
19 tools is slightly above the ideal 3-15 range, but each tool addresses a distinct part of the scaffolding lifecycle: project creation, component management, recipes, docs, diagnostics, CRUD generation, and CI. It feels broad rather than bloated.
The toolset provides thorough coverage of the eGovFrame scaffolding workflow, including create, add, remove, upgrade, validate, diagnose, search, explain, and generate operations. Minor gaps remain: add_ai_components has no matching removal tool, and there is no direct 'list installed components' tool, though diagnose and report can partially fill that need.
Maintenance
Related MCP Connectors
AI development agent using Kendo UI to rapidly create and style quality web UIs or Pages.
AI-native Day 0 modernization platform for PRDs, architecture, work orders, and code transformation.
Create, edit, preview, and build Flutter apps via FlutterGo.AI cloud MCP (OAuth).
Visual email & layout builder that turns AI assistants into a Temway authoring studio.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables rapid creation of new projects from predefined templates including React, Node.js, Django, Flask, and more. Provides comprehensive project scaffolding with file system operations, template management, and command execution capabilities.-
- AlicenseNot gradedqualityBmaintenanceEnables AI coding agents to generate standardized code using scaffolding templates, enforce architectural patterns, and validate outputs programmatically. Supports creating projects from boilerplates and adding features to existing codebases while maintaining team conventions.163AGPL 3.0
- AlicenseBqualityBmaintenanceEnables reverse engineering of database tables into Spring Boot projects with AI-enhanced naming and code generation, providing interactive visualizations and workflow orchestration.295 npm35MIT

@sap/mdk-mcp-serverofficial
AlicenseAqualityAmaintenanceEnables AI agents to create, enhance, and manage SAP Mobile Development Kit projects using best practices, templates, and CLI tools.44,787 npm37Apache 2.0