Skip to main content
Glama
egovframe-scaffold-mcp

egovframe-scaffold-mcp

by EricSeokgon

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

prepare_egovframe_offline_bundle

Builds an offline bundle for air-gapped eGovFrame development on an internet-connected PC, including OSV vulnerability dumps, verified component archives, templates, and a sha256 manifest.

Instructions

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

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "outputDir": "<outputDir>"
    },
    "name": "prepare_egovframe_offline_bundle"
  }
}

Input Schema

NameRequiredDescriptionDefault
dryRunNotrue(기본)면 받을 목록만
formatNo응답 형식markdown
includeNo담을 항목(otel: OpenTelemetry Java 에이전트 jar — 기본 포함 아님, v1.16)
outputDirYes번들을 만들 디렉터리(없거나 비어 있어야 함)
templatesNo담을 템플릿 id(기본: 고정 지문이 있는 Initializr zip 템플릿 전부, 저장소 템플릿은 지정할 때만)

Output Schema

NameRequiredDescriptionDefault
itemsYes
notesYes
usageYes
dryRunYes
originNo
writtenYes
outputDirYes
totalBytesYes
manifestPathNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changedv1.16.0
    • changedInput schema / properties / include / description
      Previous value: -"담을 항목"New value: +"담을 항목(otel: OpenTelemetry Java 에이전트 jar — 기본 포함 아님, v1.16)"
    • changedInput schema / properties / include / items / enum
      Previous value: -[
      -  "osv",
      -  "components",
      -  "templates",
      -  "origin"
      -]New value: +[
      +  "osv",
      +  "components",
      +  "templates",
      +  "origin",
      +  "otel"
      +]
    • changedOutput schema / properties / items / items / properties / kind / enum
      Previous value: -[
      -  "osv",
      -  "components",
      -  "template",
      -  "origin"
      -]New value: +[
      +  "osv",
      +  "components",
      +  "template",
      +  "origin",
      +  "otel"
      +]
  2. Changed10 schema fields changedv1.6.0
    • removedInput schema / additionalProperties
      Removed value: -false
    • changedOutput schema / properties / items / items / additionalProperties
      Previous value: -trueNew value: +{}
    • changedOutput schema / properties / items / items / properties / bytes / anyOf
      Previous value: -[
      -  {
      -    "type": "integer"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "maximum": 9007199254740991,
      +    "minimum": -9007199254740991,
      +    "type": "integer"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / properties / origin / additionalProperties
      Previous value: -trueNew value: +{}
    • addedOutput schema / properties / origin / properties / bytes / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / origin / properties / bytes / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / origin / properties / tags / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / origin / properties / tags / minimum
      Added value: +-9007199254740991
    • addedOutput schema / properties / totalBytes / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / totalBytes / minimum
      Added value: +-9007199254740991
  3. Addedv0.45.0

TDQS

A4.1/5.0
Behavior5/5

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

Beyond the annotations (readOnlyHint=false, openWorldHint=true, idempotentHint=false), the description discloses that it performs network downloads, writes bundle-manifest.json with per-file sha256/size/source URL/fetch time, refuses non-empty directories, verifies sha256 fingerprints, and notably does NOT bundle Maven dependency jars. It also explains downstream consumption via EGOVFRAME_OFFLINE_BUNDLE, the 30-day snapshot staleness warning, and fingerprint verification on write – far more than the annotations convey.

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?

Sizeable but front-loaded: what it builds and where first, then the dryRun/directory constraints, then downstream behavior. Some sentences describe post-hoc consumption on the closed-network PC rather than this tool's own invocation, which adds context but dilutes focus slightly.

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 multi-artifact, network-touching tool, the description covers inputs, write constraints, output manifest, verification behavior, and an explicit exclusion (Maven jars); an output schema exists so return values need not be restated. An agent has everything needed to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters are already documented, which sets the baseline at 3. The description adds some useful framing (the bundle contains the items selectable via 'include', dryRun is the default listing mode, outputDir must be new/empty), but it does not explain the 'format', 'templates' default behavior, or the otel option beyond what the schema already says.

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?

The description opens with a specific verb and resource ('오프라인 번들을 ... 만듭니다' – creates an offline bundle for air-gapped dev environments) and immediately enumerates the artifacts it collects (OSV dump, component archive, Initializr templates, origin mirror, manifest). The scope is unmistakable, but it never names a sibling such as prepare_egovframe_delivery or generate_egovframe_sbom to distinguish itself from them, so it falls short of the 5 bar.

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

Usage Guidelines4/5

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

It clearly states the context of use: run on an internet-connected PC to prepare for a closed network, and it warns that output must go to a new or empty directory and that dryRun (default) only lists what would be fetched. What is missing is any explicit statement of when NOT to use it or which sibling tool to choose instead (e.g. versus prepare_egovframe_delivery).

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