독립유공자 공훈록 MCP 서버 (Korean Independence Patriots Records)
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@독립유공자 공훈록 MCP 서버 (Korean Independence Patriots Records)김구 선생님의 공훈록을 찾아줘"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
독립유공자 공훈록 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 .envClaude 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 사용법
Model Context Protocol을 통해 다음 도구를 사용할 수 있습니다:
get_merit_list- 독립유공자 공훈록 목록을 조회합니다이름, 생년월일, 훈격, 운동계열 등으로 검색 가능
get_public_report- 독립유공자 공적조서를 조회합니다get_hunkuk_codes- 훈격 코드 정보를 조회합니다get_workout_affil_codes- 운동계열 코드 정보를 조회합니다clear_cache- 캐시된 데이터를 초기화합니다
사용 예시
Claude Desktop에서 다음과 같이 질문해보세요:
3.1운동을 이천에서 참여한 독립유공자 목록을 가져와줘동작 원리
Model Context Protocol을 통한 Claude Desktop 상호작용은 다음과 같이 진행됩니다:
서버 발견: Claude Desktop은 시작 시 설정된 MCP 서버에 연결하고 각 서버의 기능을 확인합니다.
프로토콜 핸드셰이크: 적절한 MCP 서버를 선택하고 프로토콜을 통한 기능 협상 후 서버에 데이터나 작업을 요청합니다.
모델 컨텍스트 확장: MCP 서버는 Claude 모델에 추가 컨텍스트와 데이터를 제공하여 더 정확하고 상세한 응답을 생성할 수 있게 합니다.
상호작용 흐름: Claude Desktop에서 쿼리 요청을 수행하면 MCP 서버가 데이터를 처리하고 결과를 반환합니다.
보안: 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 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
v1.0.0- 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, merit list retrieval, and public report fetching. There is no overlap in functionality, making tool selection straightforward for an agent.
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.
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.
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.
Related MCP Connectors
Access Korea’s G2B procurement and Nara Market data for bid notices, awards, contracts, statistics…
Find official Korean public datasets, agency-site menus, disclosure listings, and source URLs.
Korean business registry, corporate info, parcel tracking, validation APIs
Search company disclosures and financial statements from the Korean market. Retrieve stock profile…