Skip to main content
Glama
MCP-Mirror

독립유공자 공훈록 MCP 서버 (Korean Independence Patriots Records)

by MCP-Mirror

독립유공자 공훈록 MCP 서버

국가보훈부 공훈전자사료관의 독립유공자 공훈록 및 공적조서를 조회할 수 있는 MCP(Model Context Protocol) 서버입니다.

준비사항

시작하기 전에 다음 도구들이 필요합니다:

  • macOS 또는 Windows

  • Claude Desktop 최신 버전

  • uv 0.4.18 이상 (uv --version로 확인)

macOS 환경 설정

# Homebrew 사용
brew install uv

# 또는 직접 다운로드:
# uv: https://docs.astral.sh/uv/

Windows 환경 설정

# winget 사용
winget install --id=astral-sh.uv -e

# 또는 직접 다운로드:
# uv: https://docs.astral.sh/uv/

설치 방법

# 프로젝트 복제
git clone https://github.com/국가보훈부/e-gonghun-mcp.git
cd e-gonghun-mcp

# 패키지 설치
uv pip install -e .

환경 변수 설정

.env.sample 파일을 .env로 복사하고 필요한 설정을 작성합니다.

cp .env.sample .env

Claude Desktop에서 사용 방법

Claude Desktop에서 이 도구를 사용하려면 다음 설정이 필요합니다:

macOS 설정

  1. 설정 파일 열기:

code ~/Library/Application\ Support/Claude/claude_desktop_config.json
  1. 다음 설정 추가:

{
  "mcpServers": {
    "e_gonghun_mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "/Users/사용자이름/projects/e-gonghun-mcp",
        "run",
        "gonghun-mcp"
      ]
    }
  }
}

Windows 설정

  1. 설정 파일 열기:

code $env:AppData\Claude\claude_desktop_config.json
  1. 다음 설정 추가:

{
  "mcpServers": {
    "e_gonghun_mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "C:\\Users\\사용자이름\\projects\\e-gonghun-mcp",
        "run",
        "gonghun-mcp"
      ]
    }
  }
}
  1. Claude Desktop를 재시작합니다.

기능

  • 독립유공자 공훈록 목록 조회

  • 독립유공자 공적조서 조회

  • 훈격, 운동계열 등 코드 정보 제공

API 사용법

Model Context Protocol을 통해 다음 도구를 사용할 수 있습니다:

  1. get_merit_list - 독립유공자 공훈록 목록을 조회합니다

    • 이름, 생년월일, 훈격, 운동계열 등으로 검색 가능

  2. get_public_report - 독립유공자 공적조서를 조회합니다

  3. get_hunkuk_codes - 훈격 코드 정보를 조회합니다

  4. get_workout_affil_codes - 운동계열 코드 정보를 조회합니다

  5. clear_cache - 캐시된 데이터를 초기화합니다

사용 예시

Claude Desktop에서 다음과 같이 질문해보세요:

3.1운동을 이천에서 참여한 독립유공자 목록을 가져와줘

동작 원리

Model Context Protocol을 통한 Claude Desktop 상호작용은 다음과 같이 진행됩니다:

  1. 서버 발견: Claude Desktop은 시작 시 설정된 MCP 서버에 연결하고 각 서버의 기능을 확인합니다.

  2. 프로토콜 핸드셰이크: 적절한 MCP 서버를 선택하고 프로토콜을 통한 기능 협상 후 서버에 데이터나 작업을 요청합니다.

  3. 모델 컨텍스트 확장: MCP 서버는 Claude 모델에 추가 컨텍스트와 데이터를 제공하여 더 정확하고 상세한 응답을 생성할 수 있게 합니다.

  4. 상호작용 흐름: Claude Desktop에서 쿼리 요청을 수행하면 MCP 서버가 데이터를 처리하고 결과를 반환합니다.

  5. 보안: MCP 서버는 특정 기능만 제공하고 로컬에서만 실행되며 중요 작업은 사용자 확인이 필요합니다.

라이선스

MIT License

Copyright (c) 2024

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.


이 리포지토리는 Anthropic의 Claude 3.7 Sonnet을 사용하여 작성되었습니다.

Available Tools

5 tools
clear_cacheB

캐시된 데이터를 모두 초기화합니다

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It states the tool clears all cached data, which implies a destructive operation, but doesn't specify what 'all' means (e.g., all caches in the system, user-specific caches), whether this requires special permissions, or what happens after clearing (e.g., performance impact, automatic re-caching). For a destructive tool with zero annotation coverage, this is insufficient behavioral disclosure.

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

Conciseness5/5

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

The description is a single, efficient sentence in Korean that directly states the tool's function without any fluff or redundant information. It's appropriately sized for a simple tool and front-loads the core action. Every word earns its place.

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

Completeness3/5

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

Given the tool's complexity (simple destructive operation with no parameters) and lack of annotations/output schema, the description is minimally adequate but has clear gaps. It states what the tool does but doesn't provide context about effects, permissions, or system behavior. For a cache-clearing tool, more information about impact would be helpful, though the simplicity of the operation makes some omissions tolerable.

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?

The tool has 0 parameters with 100% schema description coverage, so the schema already fully documents the lack of inputs. The description doesn't need to add parameter information, and it appropriately doesn't mention any parameters. A baseline of 4 is appropriate for zero-parameter tools when the schema coverage is complete.

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 clearly states the tool's purpose with a specific verb ('초기화합니다' - initializes/clears) and resource ('캐시된 데이터' - cached data). It distinguishes from sibling tools which are all 'get' operations, but doesn't explicitly mention this distinction. The purpose is unambiguous but could be more specific about what type of cache or scope.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives or prerequisites. The description doesn't mention when this operation is appropriate (e.g., after data updates, to free memory) or any warnings about potential side effects. It simply states what the tool does without context for usage.

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

get_hunkuk_codesC

훈격 코드 정보를 조회합니다

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While '조회합니다' (retrieves) implies a read-only operation, it doesn't explicitly state whether this requires authentication, has rate limits, returns paginated results, or what format the information comes in. For a retrieval tool with zero annotation coverage, this leaves significant behavioral questions unanswered.

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

Conciseness5/5

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

The description is a single, efficient sentence that states the core purpose without any wasted words. It's appropriately sized for a simple retrieval tool and front-loads the essential information. Every word earns its place.

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

Completeness2/5

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

Given the tool has no annotations, no output schema, and the description provides only basic purpose without behavioral context or usage guidance, this is incomplete for effective agent use. While the tool appears simple (0 parameters, retrieval operation), the description should at minimum clarify what 'hunkuk codes' are and how results are structured since there's no output schema to provide that information.

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?

The tool has 0 parameters with 100% schema description coverage (empty schema). The description doesn't need to compensate for any parameter documentation gaps. A baseline of 4 is appropriate since there are no parameters to explain, though the description could theoretically mention that no inputs are required (which it doesn't).

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

Purpose3/5

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

The description '훈격 코드 정보를 조회합니다' (Retrieves hunkuk code information) clearly states the tool's purpose with a specific verb ('조회합니다' - retrieves) and resource ('훈격 코드 정보' - hunkuk code information). However, it doesn't differentiate from sibling tools like 'get_merit_list' or 'get_workout_affil_codes' which also appear to be retrieval operations. The purpose is understandable but lacks sibling differentiation.

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

Usage Guidelines2/5

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. There's no mention of what makes hunkuk codes distinct from other code types (like workout affiliation codes from 'get_workout_affil_codes'), when this retrieval is appropriate, or any prerequisites. The agent receives no usage context beyond the basic purpose.

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

get_merit_listC

독립유공자 공훈록 목록을 조회합니다

ParametersJSON Schema
NameRequiredDescriptionDefault
page_indexNo페이지 번호
count_per_pageNo페이지 당 데이터 건수 (최대 50건)
mng_noNo관리번호
name_koNo성명(한글)
name_chNo성명(한자)
diff_nameNo이명
birthdayNo생년월일 (YYYYMMDD, 년(1945), 년월(194501), 년월일(19450101))
lastdayNo사망년월일 (YYYYMMDD, 년(1945), 년월(194501), 년월일(19450101))
sexNo성별 (0: 여, 1: 남)
register_large_divNo본적대분류
register_mid_divNo본적중분류
judge_yearNo포상년도
hunkukNo훈격
workout_affilNo운동계열
achivementNo공훈록

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While '조회합니다' (retrieves) implies a read operation, the description doesn't mention pagination behavior (implied by page_index/count_per_page), rate limits, authentication requirements, or what happens when no results match filters. For a 15-parameter query tool with no annotation coverage, this is insufficient.

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

Conciseness5/5

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

The description is a single, efficient sentence that directly states the tool's purpose. There's zero wasted language or redundancy. It's appropriately sized for what it communicates.

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

Completeness2/5

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

For a complex 15-parameter query tool with no annotations and no output schema, the description is inadequate. It doesn't explain what the return format looks like, how pagination works, whether all parameters are optional filters, or what happens when multiple filters are combined. The agent would struggle to use this tool effectively without trial and error.

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%, with all 15 parameters well-documented in the schema itself. The description adds no additional parameter information beyond what's in the schema. According to guidelines, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in description.

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 clearly states the verb ('조회합니다' - retrieves/gets) and resource ('독립유공자 공훈록 목록' - list of independence merit records). It's specific about what data is being accessed. However, it doesn't explicitly differentiate from sibling tools like get_hunkuk_codes or get_workout_affil_codes, which appear to be related code lookup tools.

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

Usage Guidelines2/5

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. There's no mention of when this list retrieval is appropriate versus using get_public_report or other sibling tools. The agent must infer usage from the tool name and parameters alone.

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

get_public_reportC

독립유공자 공적조서를 조회합니다

ParametersJSON Schema
NameRequiredDescriptionDefault
page_indexNo페이지 번호
count_per_pageNo페이지 당 데이터 건수 (최대 50건)
mng_noNo관리번호
name_koNo성명(한글)
name_chNo성명(한자)
diff_nameNo이명
birthdayNo생년월일 (YYYYMMDD, 년(1945), 년월(194501), 년월일(19450101))
lastdayNo사망년월일 (YYYYMMDD, 년(1945), 년월(194501), 년월일(19450101))
sexNo성별 (0: 여, 1: 남)
register_large_divNo본적대분류
register_mid_divNo본적중분류
judge_yearNo포상년도
hunkukNo훈격
workout_affilNo운동계열
achivementNo공적개요
achivement_koNo공적개요 국한문병기

TDQS

C2.9/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. It only states the retrieval action without mentioning pagination behavior (implied by page_index/count_per_page), rate limits, authentication requirements, error conditions, or what format the results return. For a 16-parameter query tool with no output schema, this leaves significant behavioral gaps.

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

Conciseness5/5

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

The description is a single, efficient sentence in Korean that directly states the tool's core function. There's zero wasted language or redundancy. It's appropriately sized for a retrieval tool, though the brevity comes at the cost of completeness in other dimensions.

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

Completeness2/5

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

Given the complexity (16 parameters, no output schema, no annotations), the description is insufficiently complete. It doesn't explain what kind of data structure returns, how pagination works with the page parameters, whether all parameters are optional filters, or how this differs from sibling tools. For a query tool with rich filtering options, more context is needed.

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%, with all 16 parameters well-documented in the schema itself. The description adds no additional parameter information beyond what's already in the schema descriptions. This meets the baseline of 3 since the schema does the heavy lifting, but the description doesn't provide any contextual framing about how parameters interact or which combinations are most useful.

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 clearly states the tool's purpose as '조회합니다' (retrieves/views) for '독립유공자 공적조서' (merit records of independence activists). It specifies the resource type but doesn't distinguish it from sibling tools like 'get_merit_list' which likely serves a similar purpose. The verb+resource combination is specific but lacks sibling differentiation.

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

Usage Guidelines2/5

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. There's no mention of when to choose this over 'get_merit_list' or other sibling tools, nor any context about prerequisites, filtering capabilities, or appropriate use cases. The agent must infer usage from the parameter schema alone.

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

get_workout_affil_codesC

운동계열 코드 정보를 조회합니다

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

C2.8/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states that it retrieves information, implying a read-only operation, but doesn't cover aspects like whether it requires authentication, has rate limits, returns paginated results, or handles errors. For a tool with zero annotation coverage, this is a significant gap in transparency.

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?

The description is a single, efficient sentence in Korean that directly states the tool's function. It's appropriately sized for a simple retrieval tool with no parameters, with no wasted words. However, it could be slightly more structured by including key details like scope or output format.

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

Completeness2/5

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

Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what '운동계열 코드 정보' entails (e.g., code values, descriptions, categories), the return format, or any behavioral traits. For a tool that might return complex data, this leaves significant gaps in understanding its functionality.

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?

The tool has 0 parameters, and the schema description coverage is 100% (since there are no parameters to describe). The description doesn't need to add parameter semantics, so it meets the baseline expectation. No additional value is provided, but none is required given the lack of parameters.

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

Purpose3/5

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

The description states the purpose ('조회합니다' meaning 'retrieves' or 'queries') and resource ('운동계열 코드 정보' meaning 'workout series code information'), which is clear but basic. It doesn't differentiate from sibling tools like 'get_hunkuk_codes' or 'get_merit_list', leaving ambiguity about when to use this specific code retrieval tool versus others.

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

Usage Guidelines2/5

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. The description lacks context about its specific use cases, prerequisites, or exclusions, such as whether it's for administrative purposes or general lookup. With sibling tools like 'get_hunkuk_codes' and 'get_merit_list' available, this omission is notable.

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

TDQS

B3.4/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: cache management, code lookups for hunkuk and workout affiliation, merit list retrieval, and public report fetching. There is no overlap in functionality, making tool selection straightforward for an agent.

Naming Consistency4/5

Four tools follow a consistent 'get_' prefix pattern (get_hunkuk_codes, get_merit_list, get_public_report, get_workout_affil_codes), while clear_cache deviates slightly. This minor inconsistency does not hinder readability or predictability significantly.

Tool Count5/5

With 5 tools, the server is well-scoped for its domain of Korean independence patriot records. Each tool serves a specific purpose (data retrieval, code lookups, cache management), and there are no extraneous or missing tools for the apparent scope.

Completeness4/5

The toolset covers core read operations (list, report, code lookups) and cache management, which is appropriate for a records lookup service. A minor gap exists in write operations (e.g., update or create), but this is likely intentional for a public historical database, so agents can still perform essential queries effectively.

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/MCP-Mirror/shinkeonkim_e-gonghun-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server