db_mcp
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., "@db_mcpsearch for '임진왜란' in the Annals of the Joseon Dynasty"
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.
db_mcp — 한국고전종합DB MCP 서버
Claude Desktop에서 한국고전종합DB(ITKC)를 직접 검색합니다.
승정원일기, 일성록, 조선왕조실록, 한국문집총간 등 9개 컬렉션을 지원합니다.
설치 (한 줄)
curl -fsSL https://raw.githubusercontent.com/namjiman/db_mcp/main/install.sh | bashClaude Desktop을 재시작하면 바로 사용할 수 있습니다.
Related MCP server: Academic MCP
수동 설치 (개발자)
uvx로 실행
uvx --from git+https://github.com/namjiman/db_mcp db-mcpclaude_desktop_config.json 직접 수정
파일 위치:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"db_mcp": {
"command": "uvx",
"args": ["--from", "git+https://github.com/namjiman/db_mcp", "db-mcp"]
}
}
}업데이트
uvx upgrade db-mcp제공 도구
도구 | 설명 |
| 지원 컬렉션 목록 (코드·한글명·필드) |
| 컬렉션 지정 검색 |
| 전체 컬렉션 동시 검색 |
| 특정 자료 디렉터리 내 검색 |
| 원문 전문 + 각주 + 원주 (캐시) |
| 국역 본문 |
지원 컬렉션
코드 | 한글명 | 지원 검색필드 |
MO | 한국문집총간 | 본문·저자·권차문체·기사명·전체 |
BT | 고전번역서 | 본문·저자·권차문체·기사명·전체 |
GO | 고전원문 | 본문·저자·권차문체·기사명·전체 |
KP | 한국고전총간 | 본문·저자·권차문체·기사명·전체 |
KH | 한국경학자료집성 | 본문·저자·전체 |
JT | 조선왕조실록(국역) | 본문·서지·기사명·전체 |
JR | 조선왕조실록(신역) | 본문·서지·기사명·전체 |
ST | 승정원일기 | 본문·기사명·전체 |
IT | 일성록 | 본문·기사명·전체 |
요구사항
macOS 또는 Linux
Python 3.10 이상 (uv가 자동 설치·관리)
라이선스
MIT
Available Tools
6 toolsget_fulltextC
글 한 편의 원문 전문 + 각주 + 원주를 반환한다(캐시 우선).
| Name | Required | Description | Default |
|---|---|---|---|
| data_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description includes a cache-first behavior note, which is helpful. However, with no annotations provided, the description fails to disclose other behavioral traits such as permissions, rate limits, or side effects. The tool likely performs a read operation, but this is not explicitly stated.
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 sentence with no superfluous words. It directly states the output and a key behavioral note. Perfectly front-loaded.
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?
The description covers what the tool returns (full text, footnotes, original text) and its cache behavior. However, it lacks parameter explanation and output schema information. For a single-parameter tool, this is adequate but incomplete.
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 only parameter 'data_id' is not described in the text. With 0% schema description coverage, the description adds no meaning beyond the schema field name. The agent has no guidance on what value to provide (e.g., format, source).
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 tool returns full text, footnotes, and original text of an article. It uses a specific verb 'return' and specifies the resource. However, it does not differentiate from sibling tools like 'get_translation' or 'search_db', and the Korean language may reduce clarity for non-Korean agents.
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, nor any prerequisites or when-not-to-use scenarios. The agent is left to infer usage context 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_translationC
글의 국역(번역) 본문을 반환한다. 번역이 없으면 has_translation=false.
| Name | Required | Description | Default |
|---|---|---|---|
| data_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the key behavioral trait of returning has_translation=false when no translation exists. However, it does not cover other aspects like read-only nature, authorization, or performance implications.
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 very short and front-loads the purpose. However, it is too sparse—every sentence is minimal but could benefit from additional context about the parameter or usage. It is concise but at the cost of completeness.
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?
No output schema exists, yet the description does not clarify the return format (e.g., whether it's a raw string or part of an object). The mention of has_translation=false implies an object, but it is not explicit. Given sibling tools, more context on integrating returned data is needed.
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?
Schema coverage is 0%, meaning no parameter descriptions in schema. The description does not explain the data_id parameter at all, leaving the agent to infer its meaning from context. This provides no value beyond the raw 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 clearly states it returns the Korean translation text of a writing and specifies behavior when translation is absent (has_translation=false). Although it does not explicitly differentiate from siblings like get_fulltext, the verb 'returns' and the resource 'translation' are specific enough.
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 on when to use this tool versus alternatives. It does not mention sibling tools like get_fulltext for original text or any prerequisites. The description implies retrieval but lacks explicit when-to-use or when-not-to-use context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collectionsA
지원하는 ITKC 컬렉션 목록을 반환한다.
각 항목: id(컬렉션코드), name(한글명), fields(지원 검색필드 코드 목록). search_db의 collection 파라미터에 id를 그대로 쓸 수 있다.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description discloses that the tool returns a list with specific fields, which is adequate for a read-only list operation. It doesn't mention whether the list is static or dynamic, but the behavior is straightforward.
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 two sentences, efficiently conveying purpose, output structure, and usage hint. No redundant or filler content.
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?
The description is complete for this tool: no parameters, output schema exists to detail return values, and the description explains how the output can be used with search_db. No 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?
There are no parameters. The description does not need to add parameter information, and with 0 parameters the baseline is 4. The description also adds value by explaining the structure of returned items.
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 that the tool returns a list of supported ITKC collections, specifying the structure of each item (id, name, fields). It distinguishes itself from sibling tools which perform different operations like fulltext retrieval or translation.
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 clear usage context by stating that the id can be used directly as the collection parameter of search_db. This helps the agent understand how to apply the output. No explicit exclusions are needed given the simplicity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_all_collectionsA
모든 컬렉션을 동시에 검색해 컬렉션별 결과를 반환한다.
field: 한글('본문'/'전체' 등) 또는 코드(BD/AA 등). limit: 컬렉션당 최대 결과 수. 반환: {컬렉션ID: {collection_name, totalCount, docs[]}, ...}
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| field | No | 전체 | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure. It explains the non-destructive search nature, parameter meanings, and return format. However, it does not mention idempotency, rate limits, pagination, or authorization needs. For a search tool, the basic behavior is clear but lacks depth.
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: one sentence for purpose, followed by parameter explanations and return format. It is front-loaded with the core action, and every sentence adds necessary information without redundancy.
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 3 parameters, no output schema, and no annotations, the description covers purpose, parameter semantics, and return structure. It omits potential details like pagination behavior or performance implications, but for a straightforward search tool, it provides sufficient context for correct invocation.
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?
Schema description coverage is 0%, so the description must compensate. It explains the 'field' parameter (Korean labels or codes) and 'limit' (max results per collection). While 'query' is left implicit, its purpose as a search term is obvious. The description adds significant value beyond the schema's bare types.
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 it searches all collections simultaneously and returns per-collection results, which distinguishes it from sibling tools like search_in_dir (directory-specific) and search_db (database-specific). The verb 'search' and resource 'all collections' are specific and unambiguous.
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 does not provide guidance on when to use this tool vs. alternatives. It only states what it does, without mentioning when not to use it or which sibling tools to prefer for more targeted searches. This leaves the agent without explicit decision cues.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_dbA
특정 컬렉션에서 검색한다.
collection: 컬렉션 코드(MO/BT/GO/KP/KH/JT/JR/ST/IT). list_collections로 확인. field: 한글('본문'/'서지'/'저자'/'권차문체'/'기사명'/'전체') 또는 코드(BD/SJ/AU/KW/GS/AA). 결과의 data_id로 get_fulltext 또는 get_translation을 호출해 전문을 받는다.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| collection | Yes | ||
| field | No | 전체 | |
| limit | No | ||
| start | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries full burden. It reveals that collection codes are specific (MO, BT, etc.) and that fields can be in Korean or code. It also mentions that results contain data_id for further calls. However, it does not disclose pagination behavior (limit/start), error cases, or if the search is read-only.
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 concise, with one introductory sentence and parameter details in a clear list format. It front-loads the purpose. Minor improvement: could be more structured with explicit labels for each parameter.
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 output schema, the description should explain return values beyond mentioning data_id. It lacks details on the structure of search results, how pagination works via limit/start, and what happens when no results are found. The tool has 5 parameters and is relatively complex, so more contextual information is needed.
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?
Schema description coverage is 0%, so the description must compensate. It adds meaning for collection (lists valid codes and references list_collections) and field (provides both Korean and code options). However, it does not explain query, limit, or start parameters, leaving those ambiguous.
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 starts with a clear statement '특정 컬렉션에서 검색한다' (Searches in a specific collection), which defines the tool's core action and resource. It differentiates from siblings like search_all_collections by specifying a single collection scope, though it does not explicitly compare.
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 parameter usage hints (e.g., collection codes, field options) and indicates a follow-up workflow using data_id with get_fulltext or get_translation. However, it does not explicitly state when to choose this tool over siblings like search_all_collections or search_in_dir.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_in_dirB
특정 자료/서지 디렉터리(dir_id) 안에서만 본문 검색한다.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| dir_id | Yes | ||
| collection | No | MO | |
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states 'searches full text' without mentioning pagination, authentication, or other behaviors.
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 very concise (one sentence) and front-loaded, but lacks structure and detail.
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?
With 4 parameters, no annotations, and no output schema, the description fails to provide enough context for correct invocation.
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?
Schema description coverage is 0%. The description only indirectly references dir_id but does not explain query, collection, or limit 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 clearly states the tool searches full text within a specific directory (dir_id), distinguishing it from sibling tools like search_all_collections that search all directories.
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 phrase 'only within a specific directory' implies when to use this tool over broader search tools, but it does not explicitly state when not to use or list alternatives.
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.
6 tool updates
v0.1.0- First observed
get_fulltext - First observed
get_translation - First observed
list_collections - First observed
search_all_collections - First observed
search_db - First observed
search_in_dir
TDQS
Scored across 6 tools
Each tool targets a distinct operation: retrieving full text, translation, listing collections, and three different search modes (all, specific collection, directory). No significant overlap, and descriptions clarify the differences.
Tool names follow a verb_noun pattern with snake_case (e.g., get_fulltext, list_collections). However, 'search_db' is slightly less descriptive than 'search_collection' and breaks the pattern of including the object in the name.
With 6 tools, the server covers core functionalities (listing, searching, retrieving content) without being excessive or minimal. The scope is well-suited for a database query server.
The set covers essential read operations: collection metadata, multi-modal search, and content retrieval. Missing is a dedicated tool to fetch document metadata without full text, but search results likely include enough info.
Maintenance
Related MCP Connectors
Full-text search over K-IFRS/K-GAAP standards and KASB accounting Q&A for Korean accountants
Search company disclosures and financial statements from the Korean market. Retrieve stock profile…
Search 15K rare pre-modern texts translated to English: philosophy, religion, science, literature.
Search and retrieve Quran ayahs, tafsir commentary, hadith, and detailed hadith records.
Related MCP Servers
- AlicenseAqualityAmaintenanceEnables access to Korean Bible translations from bskorea.or.kr, allowing users to retrieve chapters, verses, search for keywords, and compare translations across different Korean Bible versions.656 npm2MIT
- FlicenseBqualityDmaintenanceEnables AI tools to search and retrieve data from various South Korean and Japanese academic databases, including research journals, historical records, and legislative information.3-
- FlicenseNot gradedqualityCmaintenanceEnables searching and viewing 1.89 million entries of the Seungjeongwon Ilgi and 380,000 articles of the Annals of the Joseon Dynasty from a local PostgreSQL database via Claude Desktop.-
- FlicenseNot gradedqualityDmaintenanceEnables searching and retrieving Korean Constitutional Court decisions using the official Open API, with search filters and full-text retrieval.-