Skip to main content
Glama
EricSeokgon

egovframe-scaffold-mcp

by EricSeokgon

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

reassemble_egovframe_components
Destructive

Reassembles copied eGovFrame common components to catalog v5.0.7 by identifying source tags via Git blob IDs, classifying file changes, and applying a transaction with backups and patches.

Instructions

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 Schema

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

Output Schema

NameRequiredDescriptionDefault
sqlYes
filesYes
notesYes
dryRunYes
originYes
targetYes
verifyNo
actionsYes
summaryYes
planPathNo
worklistYes
backupDirNo
sourceEraYes
componentsYes
projectDirYes
manifestUpdatedYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed29 schema fields changedv1.6.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • addedOutput schema / properties / actions / additionalProperties / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / actions / additionalProperties / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / actions / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / components / items / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / components / items / properties / files / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / components / items / properties / files / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / components / items / properties / summary / additionalProperties / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / components / items / properties / summary / additionalProperties / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / components / items / properties / summary / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / files / items / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / origin / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / origin / properties / candidates / items / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / origin / properties / candidates / items / properties / matched / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / origin / properties / candidates / items / properties / matched / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / origin / properties / candidates / items / properties / total / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / origin / properties / candidates / items / properties / total / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / summary / additionalProperties / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / summary / additionalProperties / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / summary / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • changedOutput schema / properties / target / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / verify / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / verify / properties / errors / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / verify / properties / errors / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / verify / properties / inReassembled / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / verify / properties / inReassembled / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / worklist / items / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / worklist / items / properties / errors / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / worklist / items / properties / errors / minimum
      Added value: +-9007199254740991
  2. Addedv0.40.0

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations: discloses that dryRun=false writes in one transaction with archive sha256 verification, deletes originals absent from 5.x after backup, replaces user-modified sources while preserving unified-diff patches, keeps user config/asset files, records a manifest consumed by upgrade/validate/remove, and states patches are NOT auto-reapplied. It also names operational prerequisites (git required, EGOVFRAME_CACHE_DIR default) and artifact locations, consistent with destructiveHint=true and idempotentHint=false.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and pinned version, then numbered steps that map to the execution order. It is long and uses heavily nested Korean clauses, which costs readability, but essentially every sentence carries distinct operational information (backup paths, patch policy, git/cache requirements).

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a destructive, open-world migration tool the description covers the full lifecycle: input detection, per-file classification outcomes, transactional write behavior, backup/artifact layout, returned task list, and downstream tool effects. With an output schema present, no return-value explanation is owed, and nothing an agent needs to call this safely is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description adds behavior the schema cannot: sourceTag can be auto-detected by git blob-id comparison without downloading file contents, dryRun=false means transaction apply, and verify=true runs compile and appends errors to the task list. The components, database, and format parameters are left to the schema, which is acceptable at full coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (reassemble) and resource (egovframe common components copied into a 3.x/4.x project) pinned to a catalog version (v5.0.7), and outlines the identify/classify/apply pipeline. It is clear what the tool does, but it never names the sibling it should be chosen over (upgrade_egovframe_project, add_egovframe_components), so the agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The target situation is implied ('3.x/4.x 또는 이전 5.x 프로젝트에 복사돼 있는 공통컴포넌트 소스') and dryRun=true default gives a safe first step. However there is no explicit when-to-use vs when-not, and no routing against upgrade_egovframe_project or rehearse_egovframe_migration, which are the nearest alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.