독립유공자 공훈록 MCP 서버
独立功绩服务功绩记录 MCP 服务器
这是可以在爱国者和退伍军人事务部电子档案中搜索独立运动家功绩记录和业绩记录的MCP(模型上下文协议)服务器。
准备
开始之前,您需要以下工具:
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/Related MCP server: MCP Server Legifrance
如何安装
# 프로젝트 복제
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 设置
打开设置文件:
code ~/Library/Application\ Support/Claude/claude_desktop_config.json添加以下设置:
{
"mcpServers": {
"e_gonghun_mcp": {
"command": "uv",
"args": [
"--directory",
"/Users/사용자이름/projects/e-gonghun-mcp",
"run",
"gonghun-mcp"
]
}
}
}Windows 设置
打开设置文件:
code $env:AppData\Claude\claude_desktop_config.json添加以下设置:
{
"mcpServers": {
"e_gonghun_mcp": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\사용자이름\\projects\\e-gonghun-mcp",
"run",
"gonghun-mcp"
]
}
}
}重新启动 Claude Desktop。
功能
查看独立运动者功绩列表
独立运动者功绩记录调查
提供训练和运动系列等代码信息
如何使用API
模型上下文协议支持以下工具:
get_merit_list- 获取独立活动家功绩列表可按姓名、出生日期、年级、运动背景等进行搜索。
get_public_report- 查看独立运动者的功绩记录get_hunkuk_codes- 获取有关 hunkuk 代码的信息get_workout_affil_codes- 获取锻炼附属代码信息clear_cache清除缓存数据
使用示例
向 Claude Desktop 询问以下问题:
3.1운동을 이천에서 참여한 독립유공자 목록을 가져와줘工作原理
通过模型上下文协议与 Claude Desktop 交互如下:
服务器发现:Claude Desktop 在启动时连接到已配置的 MCP 服务器并检查每个服务器的功能。
协议握手:选择合适的 MCP 服务器并通过协议协商功能,然后向服务器请求数据或操作。
扩展模型上下文:MCP 服务器为 Claude 模型提供额外的上下文和数据,使其能够生成更准确、更详细的响应。
交互流程:当您在Claude Desktop中发出查询请求时,MCP服务器会处理数据并返回结果。
安全性:MCP 服务器仅提供特定功能,在本地运行,并且需要用户确认关键操作。
执照
MIT 许可证
版权所有 (c) 2024
特此授予获得此软件和相关文档文件(“软件”)副本的任何人免费许可,以无限制方式处理软件,包括但不限于使用、复制、修改、合并、发布、分发、再授权和/或销售软件副本的权利,并允许向其提供软件的人员这样做,但须遵守以下条件:
上述版权声明和本许可声明均应包含在软件的所有副本或实质性部分中。
该软件按“原样”提供,不附带任何明示或暗示的保证,包括但不限于适销性、适用于特定用途和非侵权性的保证。在任何情况下,作者或版权持有者均不对任何索赔、损害或其他责任负责,无论是合同行为、侵权行为还是其他行为,无论是由软件或软件的使用或其他交易引起、引起或与之有关。
该存储库是使用 Anthropic 的 Claude 3.7 Sonnet 创建的。
Available Tools
5 toolsclear_cacheB
캐시된 데이터를 모두 초기화합니다
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
훈격 코드 정보를 조회합니다
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
독립유공자 공훈록 목록을 조회합니다
| Name | Required | Description | Default |
|---|---|---|---|
| page_index | No | 페이지 번호 | |
| count_per_page | No | 페이지 당 데이터 건수 (최대 50건) | |
| mng_no | No | 관리번호 | |
| name_ko | No | 성명(한글) | |
| name_ch | No | 성명(한자) | |
| diff_name | No | 이명 | |
| birthday | No | 생년월일 (YYYYMMDD, 년(1945), 년월(194501), 년월일(19450101)) | |
| lastday | No | 사망년월일 (YYYYMMDD, 년(1945), 년월(194501), 년월일(19450101)) | |
| sex | No | 성별 (0: 여, 1: 남) | |
| register_large_div | No | 본적대분류 | |
| register_mid_div | No | 본적중분류 | |
| judge_year | No | 포상년도 | |
| hunkuk | No | 훈격 | |
| workout_affil | No | 운동계열 | |
| achivement | No | 공훈록 |
TDQS
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.
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.
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.
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.
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.
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
독립유공자 공적조서를 조회합니다
| Name | Required | Description | Default |
|---|---|---|---|
| page_index | No | 페이지 번호 | |
| count_per_page | No | 페이지 당 데이터 건수 (최대 50건) | |
| mng_no | No | 관리번호 | |
| name_ko | No | 성명(한글) | |
| name_ch | No | 성명(한자) | |
| diff_name | No | 이명 | |
| birthday | No | 생년월일 (YYYYMMDD, 년(1945), 년월(194501), 년월일(19450101)) | |
| lastday | No | 사망년월일 (YYYYMMDD, 년(1945), 년월(194501), 년월일(19450101)) | |
| sex | No | 성별 (0: 여, 1: 남) | |
| register_large_div | No | 본적대분류 | |
| register_mid_div | No | 본적중분류 | |
| judge_year | No | 포상년도 | |
| hunkuk | No | 훈격 | |
| workout_affil | No | 운동계열 | |
| achivement | No | 공적개요 | |
| achivement_ko | No | 공적개요 국한문병기 |
TDQS
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.
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.
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.
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.
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.
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
운동계열 코드 정보를 조회합니다
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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.
5 tool updates
- First observed
clear_cache - First observed
get_hunkuk_codes - First observed
get_merit_list - First observed
get_public_report - First observed
get_workout_affil_codes
TDQS
Scored across 5 tools
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.
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.
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.
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
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Model Context Protocol server for Studex tools, notifications, and profile integrations
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
A Model Context Protocol server for Wix AI tools
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server utilizing Claude AI for generating intelligent queries and offering documentation assistance based on API documentation analysis.7 npm3MIT
- AlicenseNot gradedqualityDmaintenanceA 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.65MIT
- AlicenseAqualityAmaintenanceModel Context Protocol server for monitoring Operational Status of major digital platforms in Claude Desktop.18Mozilla Public 2.0
- FlicenseNot gradedqualityDmaintenanceA Python server implementing the Model Context Protocol that exposes tools for querying external APIs, compatible with Claude Desktop and ChatGPT Desktop.-