Skip to main content
Glama
EricSeokgon

egovframe-scaffold-mcp

by EricSeokgon

의존성 점검

check_egovframe_dependencies
Read-onlyIdempotent

Audits Maven/Gradle dependencies against eGovFrame 5.x parent, Spring Boot BOM, and RTE baselines, flagging version gaps, replacements, and security settings without changing files.

Instructions

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

Input Schema

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

Output Schema

NameRequiredDescriptionDefault
javaYes
notesYes
checksYes
parentYes
offlineYes
summaryYes
baselineYes
findingsYes
osvErrorNo
workspaceNo
projectDirYes
resolutionNo
buildSystemYes
vulnerabilitiesNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed41 schema fields changedv1.6.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedOutput schema / properties / baseline / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / baseline / properties / bootBom / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / baseline / properties / bootBom / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / baseline / properties / java / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / baseline / properties / java / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / baseline / properties / rteTransitive / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / baseline / properties / rteTransitive / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / checks / items / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / checks / items / properties / evidence / items / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / checks / items / properties / evidence / items / properties / line / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / checks / items / properties / evidence / items / properties / line / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / findings / items / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / findings / items / properties / depth / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / findings / items / properties / depth / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / findings / items / properties / line / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / findings / items / properties / line / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / java / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / parent / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / resolution / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / resolution / properties / artifacts / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / resolution / properties / artifacts / minimum
      Added value: +-9007199254740991
    • changedOutput schema / properties / resolution / properties / differs / items / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / resolution / properties / direct / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / resolution / properties / direct / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / resolution / properties / summary / additionalProperties / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / resolution / properties / summary / additionalProperties / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / resolution / properties / summary / propertyNames
      Added value: +{
      +  "type": "string"
      +}
    • addedOutput schema / properties / resolution / properties / transitive / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / resolution / properties / transitive / 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 / vulnerabilities / items / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / workspace / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / workspace / properties / modules / items / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / workspace / properties / modules / items / properties / findings / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / workspace / properties / modules / items / properties / findings / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / workspace / properties / modules / items / properties / summary / additionalProperties / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / workspace / properties / modules / items / properties / summary / additionalProperties / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / workspace / properties / modules / items / properties / summary / propertyNames
      Added value: +{
      +  "type": "string"
      +}
  2. Changed1 schema field changedv0.47.0
    • addedOutput schema / properties / workspace
      Added value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "kind": {
      +      "type": "string"
      +    },
      +    "modules": {
      +      "items": {
      +        "additionalProperties": true,
      +        "properties": {
      +          "buildTool": {
      +            "type": "string"
      +          },
      +          "dir": {
      +            "type": "string"
      +          },
      +          "findings": {
      +            "type": "integer"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "summary": {
      +            "additionalProperties": {
      +              "type": "integer"
      +            },
      +            "type": "object"
      +          }
      +        },
      +        "required": [
      +          "name",
      +          "dir",
      +          "buildTool",
      +          "findings",
      +          "summary"
      +        ],
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "kind",
      +    "modules"
      +  ],
      +  "type": "object"
      +}
  3. Addedv0.36.1

TDQS

A4.2/5.0
Behavior5/5

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

Goes well beyond the readOnly/idempotent annotations: states it does not modify disk, defaults to offline with bundled catalog and only hits api.osv.dev when offline=false, warns resolve needs build tool + repo access and takes tens of seconds, and explains multi-module per-module judging plus the 5.1.0/-egov.N normalization special cases.

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

Conciseness3/5

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

Front-loaded with the core purpose, but it is one enormous run-on sentence packed with parenthetical enumerations, making the special-case rules (5.1.0, -egov.N, 멀티 모듈) hard to extract on a fast read.

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

Completeness4/5

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

With annotations covering the safety profile, an output schema present, and full schema coverage, the description supplies nearly everything needed: scope, offline/online behavior, resolve cost, and multi-module handling. Only sibling disambiguation is left as a gap.

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 baseline is 3; the description earns extra credit for clarifying what resolve actually produces (전이 의존성 + 트리 경로 + 선언·해석 버전 차이) and what offline toggles (OSV 조회), meaning an agent understands the cost/benefit tradeoff before setting them.

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

Purpose5/5

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

Opens with a specific verb+resource: Maven/Gradle 의존성을 기준 버전과 대조해 분류·보고. It names concrete baseline sources (공식 5.x parent, Spring Boot BOM, RTE 18종) and output categories (기준 충족/전환 대상/교체 필요 등), which none of the siblings (check_egovframe_sbom, validate_egovframe_project) describe.

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?

Usage is implied by the content ('프로젝트의 의존성 점검'), and the offline flag hints at when network use is warranted, but the description never states when to pick this over check_egovframe_sbom or check_egovframe_secure_coding, nor any prerequisites beyond resolve's build-tool requirement.

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