Skip to main content
Glama
kokoa-tools

독립유공자 공훈록 MCP 서버

by kokoa-tools

Independence Meritorious Service Merit Record MCP Server

This is an MCP (Model Context Protocol) server that allows you to search the records of merit and records of achievements of independence activists in the Electronic Archives of the Ministry of Patriots and Veterans Affairs.

Preparation

Before you begin, you will need the following tools:

  • macOS or Windows

  • Claude Desktop Latest Version

  • uv 0.4.18 or higher (check with uv --version )

macOS Preferences

# Homebrew 사용
brew install uv

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

Windows Preferences

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

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

Related MCP server: MCP Server Legifrance

How to install

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

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

Setting environment variables

Copy .env.sample file to .env and fill in the necessary settings.

cp .env.sample .env

How to use Claude Desktop

To use this tool on Claude Desktop, you need the following settings:

macOS Settings

  1. Open the settings file:

code ~/Library/Application\ Support/Claude/claude_desktop_config.json
  1. Add the following settings:

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

Windows Settings

  1. Open the settings file:

code $env:AppData\Claude\claude_desktop_config.json
  1. Add the following settings:

{
  "mcpServers": {
    "e_gonghun_mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "C:\\Users\\사용자이름\\projects\\e-gonghun-mcp",
        "run",
        "gonghun-mcp"
      ]
    }
  }
}
  1. Restart Claude Desktop.

function

  • View the list of meritorious deeds of independence activists

  • Inquiry into the records of meritorious deeds of independence activists

  • Provides code information such as training and sports series

How to use API

The Model Context Protocol enables the following tools:

  1. get_merit_list - Get the list of merits of independence activists

    • Searchable by name, date of birth, grade, athletic background, etc.

  2. get_public_report - View the records of meritorious deeds of independence activists

  3. get_hunkuk_codes - Gets information about hunkuk codes

  4. get_workout_affil_codes - Get workout affil code information

  5. clear_cache - clears cached data

Example of use

Ask Claude Desktop the following questions:

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

How it works

Interacting with Claude Desktop via the Model Context Protocol goes like this:

  1. Server Discovery : Claude Desktop connects to the configured MCP servers on startup and checks the capabilities of each server.

  2. Protocol handshake : Select an appropriate MCP server and negotiate capabilities via the protocol, then request data or operations from the server.

  3. Extending Model Context : The MCP server provides additional context and data to the Claude model to enable it to generate more accurate and detailed responses.

  4. Interaction Flow : When you make a query request in Claude Desktop, the MCP server processes the data and returns the results.

  5. Security : The MCP server provides only specific functionality, runs locally, and requires user confirmation for critical operations.

License

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.


This repository was created using Anthropic's Claude 3.7 Sonnet.

Available Tools

5 tools
clear_cacheB

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

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.1/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. '초기화합니다' (initializes/clears) implies a destructive mutation, but the description doesn't disclose important behavioral traits: whether this requires special permissions, whether the operation is reversible, what '모두' (all) means in terms of scope, or any side effects. For a destructive tool with zero annotation coverage, this is inadequate.

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 with zero wasted words. 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.

Completeness2/5

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

Given this is a destructive mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what '초기화' entails operationally, what data is affected, whether there are confirmation prompts, what the return value might be, or error conditions. For a tool that presumably modifies system state, this leaves critical gaps.

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 baseline is 4. The description appropriately doesn't discuss parameters since none exist, and it doesn't need to compensate for any schema gaps.

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 action ('초기화합니다' - initializes/clears) and the target ('캐시된 데이터' - cached data), providing a specific verb+resource combination. However, it doesn't differentiate from sibling tools, which appear to be unrelated read operations (get_* tools), so it doesn't need sibling differentiation but doesn't explicitly state this distinction.

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. It doesn't mention prerequisites, timing considerations, or when not to use it. Given that siblings are get_* tools, the distinction is implied (this is a write operation vs their read operations), but this isn't explicitly stated in the description.

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.8/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, it doesn't specify 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 is insufficient behavioral context.

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 extremely concise - a single sentence that directly states the tool's purpose. There's no wasted language or unnecessary elaboration. However, the extreme brevity borders on under-specification rather than optimal conciseness, preventing a perfect score.

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 no annotations, no output schema, and a retrieval operation that likely returns structured data, the description is incomplete. It doesn't explain what 'hunkuk codes' are, what format the information returns in, or any behavioral characteristics. For a data retrieval tool without structured output documentation, this leaves significant gaps.

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 parameter situation (none). The description doesn't need to compensate for any parameter gaps. The baseline for 0 parameters with complete schema coverage is 4, as there's no parameter information to add beyond what's already clear from the schema.

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 as 'retrieves hunkuk code information' which is a clear verb+resource combination. However, it doesn't distinguish this tool from its siblings like 'get_merit_list' or 'get_workout_affil_codes' - all appear to be retrieval operations for different data types. 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 prerequisites, when this tool is appropriate versus other retrieval tools in the sibling list, or any context about what 'hunkuk codes' represent. The user must infer usage from the tool name alone.

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 but provides minimal information. It doesn't mention that this is a read-only operation (implied by 'get' but not explicit), doesn't discuss pagination behavior beyond what's in the schema, doesn't mention rate limits, authentication requirements, or what happens when no filters are applied. For a tool with 15 parameters and no annotations, this is insufficient behavioral context.

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 purpose. There's no wasted language or unnecessary elaboration. It's appropriately sized for a data retrieval tool and gets straight to the point without preamble.

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 tool with 15 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the returned data looks like, how results are structured, whether there's pagination beyond the two pagination parameters, or what happens when multiple filters are applied. The description fails to provide the necessary context for an agent to understand the complete behavior of this data retrieval operation.

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?

The schema description coverage is 100%, so all parameters are documented in the input schema. The description adds no additional parameter information beyond what's already in the schema - it doesn't explain how filtering works, whether parameters are AND/OR combined, or provide examples of parameter usage. With complete schema coverage, the baseline score of 3 is appropriate.

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 ('조회합니다' - retrieve/lookup) and resource ('독립유공자 공훈록 목록' - list of independence merit records). It's specific about what data is being accessed. However, it doesn't distinguish this tool from its siblings like 'get_public_report' or explain how this list differs from other data retrieval tools in the server.

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 compared to other sibling tools like 'get_public_report' or when to use the filtering parameters versus retrieving all records. The agent receives no contextual usage instructions.

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 but only states the basic action. It doesn't mention whether this is a read-only operation, whether it requires authentication, what format the results come in, whether there are rate limits, or how pagination works despite having pagination parameters. For a tool with 16 parameters and 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 in Korean that directly states the tool's purpose without any unnecessary words or structural complexity. It's perfectly front-loaded with the essential information.

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 tool with 16 parameters, no annotations, and no output schema, the description is inadequate. It doesn't explain what the tool returns, how results are structured, whether it's a search or lookup operation, or how the various filtering parameters interact. 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?

The description adds no parameter information beyond what's already in the schema, which has 100% coverage with detailed descriptions for all 16 parameters including formats, constraints, and enum values. The baseline score of 3 is appropriate since the schema does all the heavy lifting for parameter documentation.

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/looks up) and resource ('독립유공자 공적조서' - independence activist merit records), making the purpose immediately understandable. It doesn't specifically differentiate from sibling tools like 'get_merit_list' which might retrieve similar data, so it doesn't reach the highest score for 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 like 'get_merit_list' or other sibling tools. There's no mention of prerequisites, appropriate contexts, or comparison with other data retrieval methods available in the server.

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?

With no annotations provided, the description carries full burden but only states it retrieves information, implying a read-only operation. It lacks details on behavioral traits like rate limits, authentication needs, error handling, or what '정보' (information) entails in terms of format or scope, which is insufficient for a tool with zero annotation coverage.

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 action and resource. It's front-loaded with the core purpose, though it could be slightly more structured if it included minor usage hints without adding bulk.

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's simplicity (0 parameters, no output schema), the description is minimal but incomplete. It doesn't explain the return values or what 'code information' includes, and with no annotations, it fails to provide necessary context like data format or typical use cases, leaving gaps for an agent to understand full 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 input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details, but this is acceptable as there are no parameters to explain. A baseline of 4 is appropriate since the schema fully covers the absence 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 'looks up') and resource ('운동계열 코드 정보' meaning 'exercise 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 what makes this specific code type distinct.

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. It doesn't mention context, prerequisites, or exclusions, such as whether it's for reference data, filtering, or if other tools handle related codes. This leaves the agent without direction on appropriate usage scenarios.

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.

  1. 5 tool updates
    • First observedclear_cache
    • First observedget_hunkuk_codes
    • First observedget_merit_list
    • First observedget_public_report
    • First observedget_workout_affil_codes

TDQS

A3.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: cache management, code lookups for hunkuk and workout affiliation, and two types of merit record retrieval (list and public report). No ambiguity or overlap exists between these functions.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with 'get_' or 'clear_' prefixes, using snake_case throughout. The naming is predictable and readable across all five tools.

Tool Count5/5

With 5 tools, this server is well-scoped for its domain of Korean independence merit records. Each tool serves a specific, necessary function without bloat or redundancy.

Completeness4/5

The toolset covers core read operations (list, report, code lookups) and cache management well. A minor gap exists in write/update capabilities (e.g., no create or modify tools), but this is reasonable for a likely read-only public data service.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A Model Context Protocol server utilizing Claude AI for generating intelligent queries and offering documentation assistance based on API documentation analysis.
    11 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A server implementing the Model Context Protocol to allow direct access to French legal resources (laws, codes, case law) from compatible Large Language Models like Claude, enabling interactive legal research through the Legifrance API.
    64
    MIT
  • A
    license
    B
    quality
    B
    maintenance
    Model Context Protocol server for monitoring Operational Status of major digital platforms in Claude Desktop.
    1
    8
    Mozilla Public 2.0