kci-openapi-mcp
This server provides MCP/CLI access to KCI/NRF scholarly literature search, citation data, and OAI-PMH bulk harvesting.
Check connectivity and whether a REST API key is configured via
kci_status.Search KCI articles with
kci_searchusing requiredtitleplus filters for author, journal, keyword, abstract, DOI, dates, and institution.Retrieve article details by KCI Control Number (
ARTโฆ) withkci_detail, including keywords, ISSN, author affiliations, and references.Collect reference texts for articles matching a title query with
kci_references, useful for citation networks.Look up journal citation metrics with
kci_journal_citation, including yearly impact factors and journal history.Bulk harvest KCI records without authentication using OAI-PMH via
kci_harvest, with sets, date ranges, metadata formats, and localcontainsfiltering.Use
kci_collectto automatically choose REST or OAI based on request and key availability, then export results to xlsx, csv, json, or sqlite.Use REST tools for search, details, references, and journal citation indices; REST requires
KCI_API_KEY.Use OAI-PMH tools for unauthenticated bulk harvesting and local filtering when no API key is available.
Run the MCP server over stdio, streamable HTTP, or SSE, and use the CLI for identify, harvest, search, and collect workflows.
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., "@kci-openapi-mcpsearch for papers on 'deep learning'"
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.
kci-openapi-mcp
๐ ์ฌ์ฉ๋ โ ์ต๊ทผ 14์ผ ์กฐํ 0ํ(๊ณ ์ 0) ยท ํด๋ก 0ํ(๊ณ ์ 0) ยท ๋ฆด๋ฆฌ์ค ์์ฐ ๋์ ๋ค์ด๋ก๋ โ
2026-10-16 ์๋ ๊ฐฑ์ ยท ์ ์ฒด ์ด๋ ฅ์
docs/usage.csv. GitHub ํธ๋ํฝ ํต๊ณ๋ 14์ผ ์ฐฝ๋ง ์ ๊ณตํ๋ฏ๋ก ์ด ์ ์ฅ์๊ฐ ๋งค์ผ ์ฐ์ด ๋์ ํ๋ค.
ํ๊ตญ์ฐ๊ตฌ์ฌ๋จ(NRF) KCI(Korea Citation Index) ๋ฌธํยท์ธ์ฉ์ง์ ๊ฒ์ยท์์ง MCP ์๋ฒ + CLI. REST Open API(ํค์๋ ๊ฒ์)์ OAI-PMH(๋ฌด์ธ์ฆ ๋๋ ์ํ)๋ฅผ ํจ๊ป ๋ค๋ฃฌ๋ค.
๊ธฐ๋ฅ
๋ ผ๋ฌธ ๊ฒ์ยท์์ธ โ ์์ง ยท ๊ตญ๋ฌธ/์๋ฌธ ์ด๋ก ยท ํค์๋ ยท ์ ์/์์
์ฐธ๊ณ ๋ฌธํ ์์ง โ ์ํ ํ ์คํธ + ํผ์ธ์ฉ ๋ ผ๋ฌธ์ KCI ID(
arti_id) โ ์ธ์ฉ ๋คํธ์ํฌ ๊ตฌ์ฑ์ ๋ ์ธ์ฉ์ง์ โ ์ฐ๋๋ณ IF ยท ๋ฑ์ฌ์ด๋ ฅ
OAI-PMH ๋๋ ์ํ โ ์ธ์ฆํค ์์ด ์ธํธ + ๋ ์ง๋ฒ์ ์ ์ ์์ง
๋ด๋ณด๋ด๊ธฐ โ xlsx ยท csv ยท json ยท sqlite
Related MCP server: KISTI-MCP
๋ ์ธํฐํ์ด์ค
REST Open API | OAI-PMH | |
์๋ํฌ์ธํธ |
|
|
์ธ์ฆ |
| ๋ถํ์ |
์ง์ | ํค์๋ ๊ฒ์( | ์ธํธ + ๋ ์ง๋ฒ์ ์ํ |
์ธ์ฉ์ง์ยท์ฐธ๊ณ ๋ฌธํ | โ | โ |
๊ท๊ฒฉ: docs/KCI_API_GUIDE.md ยท docs/KCI_OAI_PMH_GUIDE.md ยท ์ค๊ณ: docs/ARCHITECTURE.md
์ธ์ฆํค ์์ด ๋ฐ๋ก ์จ๋ณด๊ธฐ
REST ๊ฒ์๋ง ์ธ์ฆํค๊ฐ ํ์ํ๊ณ , OAI-PMH ์ํ์ ํค ์์ด ๋์ํ๋ค.
uvx --from git+https://github.com/rubatoyd/KCI_openAPI kci identifyuvx --from git+https://github.com/rubatoyd/KCI_openAPI kci harvest --set ARTI --from 2024-01-01 --until 2024-03-31 --contains ํ๋ถ๋ชจ --max 200MCP ๋ก ๋ถ์๋ค๋ฉด kci_status โ kci_harvest ์์ผ๋ก ๋ฐ๋ก ์ธ ์ ์๋ค. ํค๊ฐ ์์ผ๋ฉด REST ๋๊ตฌ๋
์ค๋ฅ ๋์ OAI ๋์์ ์๋ดํ๋ค.
์ธ์ฆํค ๋ฐ๊ธ
REST ๋๊ตฌ(kci_search ยท kci_detail ยท kci_references ยท kci_journal_citation)์๋ง ํ์ํ๋ค.
open.kci.go.kr ์์ Open API ์ด์ฉ ์ ์ฒญ
๋ฐ๊ธ๋ ์ธ์ฆํค ๋ฌธ์์ด 1๊ฐ๋ฅผ ๋ฐ๋๋ค
์๋ ์ค ํ ๊ณณ์ ๋ฃ๋๋ค โ ์ฝ๋๋ ์ปค๋ฐ์๋ ๋ฃ์ง ์๋๋ค
์ฌ์ฉ ํ๊ฒฝ | ๋ฃ๋ ๊ณณ |
Claude Code |
|
Claude Desktop |
|
| ์ค์น ์ฐฝ์ ์ ๋ ฅ๋ |
CLI / ๋ก์ปฌ ๊ฐ๋ฐ |
|
AES ์ํธํยทํ ํฐ ๋ฐ๊ธยท๊ณต์ธ IP ๋ฑ๋ก์ ๋ถํ์ํ๋ค. ํ๋ฌธ key ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ํ๋๋ก ํธ์ถํ๋ค.
์ค์น
Claude Desktop
์์ฒด์๊ฒฐ .mcpb(๊ถ์ฅ) โ Pythonยทuv ๋ถํ์. ๋ฆด๋ฆฌ์ค์์
OS์ ๋ง๋ ํ์ผ์ ๋ฐ์ ๋๋ธํด๋ฆญ(๋๋ Settings โ Extensions โ Install) โ KCI_API_KEY ์
๋ ฅ(์ ํ).
์์ฐ | ํน์ง |
| ์์ฒด์๊ฒฐ โ ์ฌ์ ์ค์น๋ฌผ ์์ |
| ๊ฒฝ๋. ์คํ์ |
์๋ config โ %APPDATA%/Claude/claude_desktop_config.json:
{ "mcpServers": { "kci": {
"command": "uvx",
"args": ["--from", "git+https://github.com/rubatoyd/KCI_openAPI", "kci-mcp"],
"env": { "KCI_API_KEY": "<๋ฐ๊ธํค ๋๋ ๋น์>", "KCI_OS_TRUST": "1" }
} } }Claude Code
claude mcp add kci --env KCI_API_KEY=$KCI_API_KEY -- uvx --from git+https://github.com/rubatoyd/KCI_openAPI kci-mcpํ๋ก์ ํธ ๋ฃจํธ์ .mcp.json ๋ ์๋ ์ธ์๋๋ค.
๋ค๋ฅธ MCP ํด๋ผ์ด์ธํธ
ํ์ค stdio MCP ์๋ฒ์ด๋ฏ๋ก MCP ๋ฅผ ์ง์ํ๋ ์์ด์ ํธ๋ฉด ๊ทธ๋๋ก ๋ถ๋๋ค โ Cursor ยท Windsurf ยท Cline ยท
Zed ยท VS Code Copilot(agent mode) ยท OpenAI Agents SDK ยท ์์ฒด ํด๋ผ์ด์ธํธ ๋ฑ. ์ command/args/env
3์์๋ฅผ ๊ฐ ํด๋ผ์ด์ธํธ ์ค์ ์ ์ฎ๊ธฐ๋ฉด ๋๋ค.
from mcp import StdioServerParameters
params = StdioServerParameters(
command="uvx",
args=["--from", "git+https://github.com/rubatoyd/KCI_openAPI", "kci-mcp"],
env={"KCI_API_KEY": "..."}, # ๋น์ฐ๋ฉด OAI ๋ฌด์ธ์ฆ ๋๊ตฌ๋ง
)์ ์ก ๋ฐฉ์
kci-mcp # stdio (๊ธฐ๋ณธ)
kci-mcp --transport streamable-http # http://127.0.0.1:8000/mcp
kci-mcp --transport sse --port 9000 # http://127.0.0.1:9000/sseํ๊ฒฝ๋ณ์: KCI_MCP_TRANSPORT ยท KCI_MCP_HOST ยท KCI_MCP_PORT.
MCP ๋๊ตฌ
๋๊ตฌ | ํ๋ ์ผ |
| ์ฐ๊ฒฐ ์ ๊ฒ โ OAI Identify + ์ธ์ฆํค ๋ณด์ ์ฌ๋ถ |
| ๋
ผ๋ฌธ ๊ฒ์ โ |
| Control Number( |
| ์ ๋ชฉ ๊ฒ์์ด์ ๋งค์นญ๋ ๋ ผ๋ฌธ๋ค์ ์ฐธ๊ณ ๋ฌธํ ์ํ |
| ์ ๋ ์ธ์ฉ์ง์ โ ์ฐ๋ ๋ชฉ๋ก / |
| OAI-PMH ๋ฌด์ธ์ฆ ๋๋ ์ํ โ ์ธํธ + ๋ ์ง๋ฒ์, |
| ๋ผ์ฐํฐ โ ํค ์ ๋ฌดยท์์ฒญ ์ฑ๊ฒฉ์ผ๋ก RESTโOAI ์๋ ์ ํ ํ ํ์ผ ์ ์ฅ |
์์๋ ์ ํ
articleSearch ๋ ํค์๋ยทISSNยทUCI ๋ฅผ ์๋ต์ ์ฃ์ง ์๋๋ค. keyword= ๋ก ๊ฒ์์ ๋์ง๋ง ๊ฒฐ๊ณผ์๋
์๋ค. ๊ฒ์ ๊ฒฐ๊ณผ์ ๋น keywords ๋ 'ํค์๋ ์๋ ๋
ผ๋ฌธ'์ด ์๋๋ค โ ํ์ํ๋ฉด kci_detail ๋ก ๊ฑด๋ณ ๋ณด๊ฐํ๋ค.
kci_collect ์ REST ๊ฒฝ๋ก๋ ์ ๋ชฉ์ถ โช ํค์๋์ถ์ด๋ค. ๊ฐ ๊ฒ์์ด๋ฅผ ๋ ์ถ์ผ๋ก ์กฐํํด ํฉ์งํฉ์ ๋ง๋ ๋ค.
๊ฒฐ๊ณผ๋ '์ ๋ชฉ๊ฒ์ ๊ฒฐ๊ณผ'๊ฐ ์๋๋ฏ๋ก ์ฝํผ์ค ๊ฒฝ๊ณ๋ฅผ ๊ธฐ์ ํ ๋ ๋ช
์ํด์ผ ํ๋ค. meta.axes ์ ์ถ๋ณ total ์ด ๋ด๊ธด๋ค.
์ฐธ๊ณ ๋ฌธํ์ arti_id ๋ KCI ๋ฑ์ฌ๋ถ์๋ง ๋ถ๋๋ค. ๋จํ๋ณธยท๋ณด๊ณ ์ยทํด์ธ๋ฌธํ์ ๋น ๋ฌธ์์ด์ด๋ค.
์ธ์ฉ ๋คํธ์ํฌ๋ ์ด ID ๊ฐ ์๋ ํญ๋ชฉ์ผ๋ก๋ง ๊ตฌ์ฑํ ์ ์๋ค(references_linked_count ๋ก ํ์ธ).
referenceSearch ๋ ํ์ด์ง ํ๋ผ๋ฏธํฐ๊ฐ ์์ด 1ํ 100๊ฑด์ด ์ํ์ด๋ค. ๋ถ์กฑํ ์ด์ ๊ฐ ๋์ด๊ณ ์ฒ๋ฐฉ์ด
์ ๋ฐ๋์ด๋ฏ๋ก ๊ฒฝ๊ณ ๋ฌธ๊ตฌ๋ฅผ ํ์ธํด์ผ ํ๋ค.
์ํฉ | ์ฒ๋ฐฉ |
|
|
|
|
KCI ๊ฐ ๋ณด๊ณ ํ๋ total ์ ์ค์ ๋ก ๋ฐ์ ์ ์๋ ๊ฑด์๋ณด๋ค ํด ์ ์๋ค. ๊ทธ๋์ ๋ ์ํฉ์ ๋ค๋ฅธ
ํ๋๊ทธ๋ก ๊ตฌ๋ถํ๋ค.
ํ๋๊ทธ | ๋ป | ๋์ฒ |
|
| ์ํ์ ์ฌ๋ ค ์ฌ์์งํ๋ฉด ๋์ด๋๋ค |
| ๋๊น์ง ํ์ด์งํ๋๋ฐ | ์ํ์ ์ฌ๋ ค๋ ๋์ง ์๋๋ค. ํ์๋์ ํ์ ์์น๋ก ์ด๋ค |
๋ค์ค ํ์ด์ง ์ง์๋ ํธ์ถ๋ง๋ค ๊ฒฐ๊ณผ๊ฐ ๋ฏธ์ธํ๊ฒ ๋ฌ๋ผ์ง๋ค. ๋จ์ผ ํ์ด์ง ์ง์๋ ์์ ์ ์ด๋ค.
total ์ ๋ชป ๋ฏธ์น๊ณ ์ํ๋ ์๋๋ฉด ํ ๋ฒ ๋ ํ์ด ํฉ์งํฉ์ ์ทจํ๋ค(meta.sweeps ๊ฐ 1๋ณด๋ค ํฌ๋ฉด ๋ณด์ ๋ ๊ฒ,
์์ง ์ ์ฒด๋ meta.sweeps_total).
๋ณด์ ์ด ๊ฑธ๋ฆฐ ์ถ์ ์ ์ฒด๋ฅผ ์ฌํ์ด์งํ๋ฏ๋ก ๊ทธ๋งํผ ์์ฒญ์ด ๋์ด๋๋ค. ๋๊ท๋ชจ ์์ง์์ ๋ถ๋ด๋๋ฉด
kci_collect ์ retry_incomplete=0 ์ผ๋ก ๋๋ค โ ๋์ ๊ฒฐ์์ด ๋จ๊ณ total_mismatch ๋ก๋ง ํ์๋๋ค.
์ถ๋ ฅ ํ์ผ๋ช
์ ์ ๊ทํ๋๋ค. name ์ ์ง์ ํ์ง ์์ผ๋ฉด ๊ฒ์์ด๊ฐ ๊ทธ๋๋ก ํ์ผ๋ช
์ด ๋๋ฏ๋ก,
๊ฒฝ๋ก ๊ตฌ๋ถ์ยท..ยท์๋ ๊ธ์ง๋ฌธ์๋ ์ ๊ฑฐ๋๊ณ ๊ฒฐ๊ณผ๋ ํญ์ out_dir ์์๋ง ์ ์ฅ๋๋ค.
ํ๊ธ ํ์ผ๋ช
์ ๊ทธ๋๋ก ๋ณด์กด๋๋ค.
์ ๋ ฌ ์ธ์๋ ์ ์ก ์ ์ ๊ฒ์ฆํ๋ค. sort_by ๋ title/author/pubiYr, sort_dir ์ asc/desc.
ํ์ฉ๊ฐ ๋ฐ์ด๋ฉด ์ค๋ฅ๋ฅผ ๋๋ ค์ค๋ค.
Claude ์ฑ ์์์ ๊ฒ์ํด ์ค์นํ ์๋ ์๋ค. ๊ณต์ MCP ๋ ์ง์คํธ๋ฆฌ ๋ฑ์ฌ์ Claude Desktop ์ธ์ฑ ์ปค๋ฅํฐ ๋๋ ํฐ๋ฆฌ๋ ๋ณ๊ฐ์ด๊ณ ์๋ ๋๊ธฐํ๋์ง ์๋๋ค. ์ ์ค์น ๋ฐฉ๋ฒ ์ค ํ๋๋ฅผ ์ด๋ค.
๋๊ตฌ ์ค๋ช ์ด ํ๊ตญ์ด๋ค. ํ๊ตญ์ด๋ฅผ ๋ค๋ฃจ๋ ๋ชจ๋ธ์ด์ด์ผ ๋๊ตฌ ์ ํ์ด ์ ํํ๋ค.
mcp SDK ๋ 1.x ๋ก ๊ณ ์ ๋๋ค(mcp>=1.2.0,<2). 2.0 ์์ mcp.server.fastmcp ๊ฐ ์ ๊ฑฐ๋์ด
์ํ์ด ์์ผ๋ฉด ๊ธฐ๋์ ์คํจํ๋ค.
CLI
kci identify # OAI ๋ฌด์ธ์ฆ โ ํค ์์ด ์ฆ์
kci harvest --set ARTI --from 2024-01-01 --until 2024-12-31 --contains ํ๋ถ๋ชจ --max 500
kci search --title ๊ฒฝ๊ณ์ ์ง๋ฅ --rows 20 # REST(์ธ์ฆํค ํ์)
kci collect --config config/borderline_slow.yaml๋ก์ปฌ ๊ฐ๋ฐ์ uv sync. ํด๋ผ์ฐ๋ ๋๊ธฐํ ํด๋(OneDrive ๋ฑ)๋ผ๋ฉด venv ๋ฅผ ํด๋ ๋ฐ์ ๋๊ธฐ๋ฅผ ๊ถํ๋ค
(UV_PROJECT_ENVIRONMENT).
๋คํธ์ํฌ
KCI ๋ฐฉํ๋ฒฝ์ User-Agent ํํฐ๋ฅผ ๊ฑด๋ค.
curl๊ธฐ๋ณธ UA ๋ ์ฐจ๋จ ์๋ดํ์ด์ง๋ฅผ ๋ฐ๋๋ค. ๋ณธ ์๋ฒ๋requests๋ก ํธ์ถํ๋ฏ๋ก ์ ์ ๋์ํ๋ค.๊ต์ก๋งยท์ฌ๋ด๋ง SSL ์ธํฐ์ ์ ํ๊ฒฝ์์๋
truststore๋ก OS ์ ๋ขฐ์ ์ฅ์๋ฅผ ์ฌ์ฉํด ํต๊ณผํ๋ค (TLS ๊ฒ์ฆ์ ๋์ง ์๋๋ค). ๋นํ์ฑ์KCI_OS_TRUST=0.HTTP ์ ์ก์๋ ์ธ์ฆ์ด ์๋ค. ๊ธฐ๋ณธ ๋ฐ์ธ๋๋ ๋ฃจํ๋ฐฑ(
127.0.0.1)์ด๋ค.--host 0.0.0.0์ผ๋ก ์ธ๋ถ์ ์ด๋ฉด ์ธ์ฆํค๋ฅผ ๊ฐ์ง ์๋ฒ๊ฐ ๊ทธ๋๋ก ๋ ธ์ถ๋๋ฏ๋ก ์ ๋ขฐ๋ ๋ง์์๋ง ์ด๋ค.
๋ผ์ด์ ์ค
MIT. ๋ณธ ํ๋ก์ ํธ๋ ํ๊ตญ์ฐ๊ตฌ์ฌ๋จ์ ๋น๊ณต์ ํด๋ผ์ด์ธํธ์ด๋ฉฐ ์ ํด ๊ด๊ณ๊ฐ ์๋ค. KCI ๋ฐ์ดํฐ ์ด์ฉ์ KCI ์ฝ๊ด์ ๋ฐ๋ฅธ๋ค.
Available Tools
7 toolskci_collectA
[ํผ์ฉ] ์์ฒญ ์ฑ๊ฒฉยทํค ์ ๋ฌด๋ก RESTโOAI ์๋ ์ ํ ํ ์์ง โ ํ์ผ ์ ์ฅ.
terms/title ์๊ณ ์ธ์ฆํค ๋ณด์ โ REST ๋ณํ์ด ํฉ์งํฉ ๊ฒ์(year_from/toยทcontains ์ ์ฉ)
retry_incomplete: ๋ค์ค ํ์ด์ง ์ง์๋ ํธ์ถ๋ง๋ค ๊ฒฐ๊ณผ๊ฐ ํ๋ค๋ ค 1~2๊ฑด์ด ๋น ์ง ์ ์๋ค. ๊ธฐ๋ณธ 1 ์ด๋ฉด total ์ ๋ชป ๋ฏธ์ณค์ ๋ ๊ฒ์์ถ๋ง๋ค ํ ๋ฒ ๋ ํ์ด ํฉ์งํฉ์ ์ทจํ๋ค(meta.sweeps_total ๋ก ํ์ธ). โ ๏ธ ๋ณด์ ์ด ๊ฑธ๋ฆฐ ์ถ์ ์ ์ฒด๋ฅผ ์ฌํ์ด์งํ๋ฏ๋ก ์์ฒญ ์๊ฐ ๊ทธ ์ถ๋งํผ ๋์ด๋๋ค. ๋๊ท๋ชจ ์์ง์์ ๋น์ฉ์ด ๋ถ๋ด๋๋ฉด 0 ์ผ๋ก ๋๋ค โ ๋์ ๊ฒฐ์์ด ๋จ๊ณ meta.total_mismatch ๋ก๋ง ํ์๋๋ค.
terms/title ์๊ณ ํค ์์ โ OAI ์ํ(date_from/until) + terms/contains ๋ก์ปฌ ํํฐ
terms/title ์์ โ OAI ์ธํธ/๋ ์ง๋ฒ์ ์ ์ ์ํ out_dir ๋ฏธ์ง์ ์ ํ์ kci-output/. OAI ๋ ์ง๋ YYYY-MM-DD, REST ์ฐ๋๋ ์ ์.
โ ๏ธ REST ๊ฒฝ๋ก๋ ๊ฐ ๊ฒ์์ด๋ฅผ ์ ๋ชฉ์ถยทํค์๋์ถ ๋ ๋ฒ ์กฐํํด ํฉ์งํฉํ๋ค โ ๊ฒฐ๊ณผ๋ '์ ๋ชฉ๊ฒ์ ๊ฒฐ๊ณผ'๊ฐ ์๋๋ผ ์ ๋ชฉโชํค์๋๋ค. ๋ฐํ๊ฐ meta.axes ์ ์ถ๋ณ total ์ด ๋ด๊ธด๋ค. โ ๏ธ truncated=true ๋ฉด max_records ์ํ์ ์๋ฆฐ ๊ฒ์ด๋ค โ ๊ทธ๋๋ก ๋ถ์์ ์ฐ๋ฉด ์ ๋๋ค. meta.union_upper_bound ์๋ก max_records ๋ฅผ ์ฌ๋ ค ์ฌ์์งํ ๊ฒ.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| terms | No | ||
| title | No | ||
| formats | No | ||
| out_dir | No | ||
| year_to | No | ||
| contains | No | ||
| set_spec | No | ARTI | |
| date_from | No | ||
| year_from | No | ||
| date_until | No | ||
| max_records | No | ||
| retry_incomplete | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint=false (write), openWorldHint=true (unbounded/stateful), destructiveHint=false. The description complements these by disclosing that the tool saves files to disk (out_dir), automatically routes between REST/OAI, performs dual-axis union searches on REST path, and may produce multiple sweeps with retry_incomplete. It also warns about truncated results (truncated=true) and how to interpret meta fields. The only minor gap is that it doesn't explicitly state file write permissions or overwrite behavior.
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 quite long, with dense text covering multiple scenarios. While it packs valuable information, it lacks clear section breaks or bullet points for readability. Key warnings are fronted with โ ๏ธ, which helps, but the overall structure is a single block of Korean text that could be better organized for an AI agent to parse quickly.
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 high complexity (13 params, no output schema, multimodal routing), the description does a commendable job of covering core behaviors: REST vs OAI selection, dual-axis queries, retry logic, file output, date formats, and truncated data warnings. It is functionally complete for an experienced user, though it could benefit from an explicit listing of output file format or return value shape (since no output schema exists).
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 carry full weight. The description explains many parameters implicitly: terms, title, retry_incomplete, out_dir, date_from/until, year_from/to, contains, max_records, set_spec. It clarifies that dates are YYYY-MM-DD and years are integers. However, it does not explain formats, name, or provides a formal parameter-by-parameter mapping. But given the complexity (13 params), the description does a good job making sense of the core parameters through contextual examples.
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 precisely states that the tool collects (saves) articles from KCI by automatically choosing between REST (with key) or OAI (without key) based on the presence of authentication key and the nature of the request. It distinguishes itself from sibling tools like kci_search (which likely only searches), kci_detail (single article details), and kci_harvest (which may be a different collection method) by describing its dual-mode routing logic and file-saving behavior.
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 gives clear when-to-use guidelines by outlining the decision logic: use REST if terms/title are present and auth key exists, use OAI otherwise. It also warns about the behavior of retry_incomplete and when to set it to 0 to save cost. However, it does not explicitly compare against each sibling tool (e.g., when to use kci_harvest instead), and it lacks an explicit 'do not use if' clause.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kci_detailARead-only
[REST] Control Number(ARTโฆ)๋ก ๋ ผ๋ฌธ ์์ธ ์กฐํ. ์ธ์ฆํค ํ์.
์ ์ ํค์๋ยทISSNยท๋ฑ์ฌ์ฌ๋ถยทFWCIยท์ ์ ์์ยท์ฐธ๊ณ ๋ฌธํ์ ์ ์ผํ ์ถ์ฒ๋ค (articleSearch ์๋ต์๋ ์ด ํ๋๋ค์ด ์๋ค). ๊ฒ์ ๊ฒฐ๊ณผ์ ํค์๋ ๊ฒฐ์ธก์ ์ด ๋๊ตฌ๋ก ๋ณด๊ฐํ๋ค.
| Name | Required | Description | Default |
|---|---|---|---|
| arti_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description does not need to cover safety. It adds useful context: the tool is RESTful, requires an authentication key, and provides fields absent from other endpoints. However, it does not detail rate limits, response size, or error handling. The description adds value beyond annotations without contradicting them.
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 brief: two sentences plus a bolded summary. It front-loads the REST nature and authentication requirement, then explains unique value and use case. Every sentence adds value, though the first sentence could be more explicit about the input 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 a simple input schema (1 required string param) and no output schema, the description covers purpose, unique fields, and relation to other endpoints. It does not explain the output format or other potential usage nuances, but the tool appears simple and the description is largely complete for its complexity.
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 is only one required parameter (arti_id) with 0% schema description coverage. The description does not directly explain the parameter, but the tool name and context ('Control Number(ARTโฆ)') imply the parameter is a Control Number. Since the schema is minimal and the description adds some implicit meaning, a baseline 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 tool retrieves detailed paper information by Control Number (ARTโฆ). It distinguishes itself from siblings by explicitly listing unique fields (author keywords, ISSN, indexing status, FWCI, author affiliations, references) not available in other tools like articleSearch. This is a specific verb+resource combination with explicit 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 explains when to use this tool: for fields missing from articleSearch (e.g., keywords). It also mentions the prerequisite of an authentication key. However, it does not explicitly state when not to use it or name specific sibling alternatives, only contrasting with articleSearch which is not listed among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kci_harvestARead-only
[OAI-PMHยท๋ฌด์ธ์ฆ] ์ธํธ+๋ ์ง๋ฒ์ ๋๋ ์ํ. ์ธ์ฆํค ๋ถํ์.
set_spec: ARTI(๋ ผ๋ฌธ)/ARTI_CONF(ํ์ ๋ํ)/JOUR(ํ์ ์ง) date_from/date_until: YYYY-MM-DD. metadata_prefix: oai_kci(์์ธ)/oai_dc(๊ฐ๋ต). contains: ์ ๋ชฉ/์ด๋ก/ํค์๋ ๋ฑ์ ์ด ๋ฌธ์์ด(๋ค) ํฌํจ๋ถ๋ง(ํค์๋ ๊ฒ์ ๋์ฉ ๋ก์ปฌ ํํฐ).
| Name | Required | Description | Default |
|---|---|---|---|
| contains | No | ||
| set_spec | No | ARTI | |
| date_from | No | ||
| date_until | No | ||
| max_records | No | ||
| metadata_prefix | No | oai_kci |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate read-only and open-world behavior, and the description adds valuable context: it's an OAI-PMH harvest requiring no authentication, and the 'contains' filter is a local post-filter rather than a server-side query. This discloses behavior not evident from annotations alone.
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 compact block with a leading summary and a short parameter legend. Every sentence delivers useful 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?
It covers all critical parameters and usage conditions, but does not describe the return format or pagination behavior, which is relevant for a bulk harvest tool. However, with no output schema, the description could have mentioned output details; still, the provided info is strong.
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?
Despite 0% schema description coverage, the description manually explains the meaning and allowed values for set_spec (ARTI/ARTI_CONF/JOUR), date formats (YYYY-MM-DD), metadata_prefix (oai_kci/oai_dc), and contains (local filter on title/abstract/keywords). It also specifies the no-auth condition, leaving only max_records implicit, which is self-explanatory.
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 explicitly states '์ธํธ+๋ ์ง๋ฒ์ ๋๋ ์ํ' (batch harvest by set+date range) and identifies the OAI-PMH protocol and no-auth requirement. This clearly differentiates it from siblings like kci_search/kci_detail which are not bulk harvesting operations.
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?
It implies usage for bulk harvesting via '๋๋ ์ํ' and notes no auth key is needed, but does not explicitly compare against sibling tools or state when not to use it. There is no mention of alternatives like kci_search for targeted queries.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kci_journal_citationARead-only
[REST] ์ ๋ ์ธ์ฉ์ง์ โ year(+years 2~5)๋ก ๋ชฉ๋ก / journal_id ๋ก ์์ธ(๋ฑ์ฌ์ด๋ ฅยท์ฐ๋๋ณ IF). ์ธ์ฆํค ํ์.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | ||
| year | No | ||
| years | No | ||
| journal_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and openWorldHint=true. The description adds the API key requirement and clarifies the two operational modes (year/year range for list, journal_id for detail), which is valuable context beyond annotations. However, it does not describe pagination or response formatting.
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 dense sentence that front-loads the tool's purpose and key parameters with no filler or redundant 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?
The description covers the API key, list/detail modes, and detail content (registration history and yearly IF), but with no output schema it does not describe the list response structure or the rows parameter behavior, making it incomplete for thorough understanding.
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 that year and years (2-5) drive list queries and journal_id drives detail, but it does not explain the rows parameter or how it interacts with the others, leaving a notable gap.
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 identifies the tool as a journal citation index REST API with two distinct modes: listing by year (with years range) and retrieving details by journal_id. It is specific and distinguishable from sibling tools like kci_search and kci_detail.
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 implies usage for citation index lookups and outlines the parameter-driven modes, but it does not explicitly state when to choose this tool over alternatives or provide exclusions. It mentions the API key requirement as a prerequisite, which is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kci_referencesARead-only
[REST] ์ ๋ชฉ ๊ฒ์์ด์ ๋งค์นญ๋ ๋ ผ๋ฌธ๋ค์ ์ฐธ๊ณ ๋ฌธํ ์ํ ์์ง. ์ธ์ฆํค ํ์.
๋ฐํ ๋ ์ฝ๋์ article_id ๋ ์ธ์ฉํ๋ ์ชฝ(์ฐธ๊ณ ๋ฌธํ์ ๋จ ๋
ผ๋ฌธ)์ด๋ค.
institution: ๋ฐํ๊ธฐ๊ด๋ช
ํํฐ. sort_by: title|author|pubiYr, sort_dir: asc|desc.
โ ๏ธ referenceSearch ์๋ page ํ๋ผ๋ฏธํฐ๊ฐ ์์ด 1ํ 100๊ฑด์ด API ์ํ์ด๋ค. total>100 ์ด๋ฉด
๋๋จธ์ง๋ ์ด์ด ๋ฐ์ ์ ์์ผ๋ฏ๋ก truncated ๋ฅผ ๋ฐ๋์ ํ์ธํ ๊ฒ. ์ํ์ ๋๊ฒผ๋ค๋ฉด
sort_dir ๋ฅผ ๋ค์ง์ด ๋ฐ๋์ชฝ 100๊ฑด์ ์ถ๊ฐ๋ก ๋ฐ์ ํฉ์งํฉ์ ์ทจํ๋ ๊ฒ์ด ์ ์ผํ ์ฐํ์ฑ
์ด๋ค.
| Name | Required | Description | Default |
|---|---|---|---|
| rows | No | ||
| title | Yes | ||
| author | No | ||
| sort_by | No | ||
| pub_year | No | ||
| sort_dir | No | ||
| institution | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations indicate readOnlyHint and openWorldHint, aligning with the description's data retrieval purpose. The description adds key behavioral details not in annotations: API has a 100-record limit per request, no pagination support, and the workaround of flipping sort_dir. It also clarifies that article_id in results is the citing article. No contradictions with annotations.
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 relatively concise but includes a mix of Korean and English, potentially adding cognitive load. Key information is front-loaded (purpose, auth requirement). The workaround explanation is detailed but necessary; one sentence could be slightly trimmed.
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 moderate complexity (7 parameters, 1 required, no output schema, 0% schema coverage), the description covers core functionality, edge cases (100-record limit), and provides workarounds. It explains the return field meaning (article_id is citing article) and filter options, sufficient for an agent to use correctly without output schema.
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 by explaining institution filters, sort_by and sort_dir options, and the significance of the page parameter absence. However, it does not fully explain all parameters (e.g., author, pub_year, rows) leaving some burden on the agent to infer from names.
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 fetches raw reference records matching a title search term, specifying the resource (reference raw data), action (collect), and scope (title-matched articles). It distinguishes from siblings like kci_search (which likely searches articles directly) by focusing on references of matched articles.
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 explicit context on when to use this tool, including authentication requirements and filter usage. It also details workarounds for API limits when total records exceed 100. However, it does not mention when NOT to use this tool or explicitly compare against sibling tools for reference-related tasks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kci_searchARead-only
[REST] ๋ ผ๋ฌธ ๊ฒ์ โ title ํ์ + ์ ํ ํํฐ. ์ธ์ฆํค ํ์.
date_from/date_to: ๋ฐํ์ฐ์ YYYYMM. rows: ๋ฐํ ๊ฑด์(์ต๋ 100). institution: ๋ฐํ๊ธฐ๊ด๋ช ํํฐ. sort_by: title|author|pubiYr, sort_dir: asc|desc. (์ ๋ ฌ์ ํ์ด์ง ์ํ์ ๊ฑธ๋ ธ์ ๋ sort_dir ๋ฅผ ๋ค์ง์ด ๋ฐ๋์ชฝ์ ์ถ๊ฐ ์์งํ๋ ๋ฐ๋ ์ด๋ค.) ๋ฐํ๊ฐ์ total ์ KCI ๊ฐ ๋ณด๊ณ ํ ์ ์ฒด ๊ฑด์์ด๊ณ , truncated=true ๋ฉด rows ์ํ์ ์๋ฆฐ ๊ฒ์ด๋ค.
โ ๏ธ articleSearch ์๋ต์๋ ์ ์ ํค์๋ยทISSNยทUCI ๊ฐ ์์ ์๋ค(์๋ณธ XML ์ ํ๋ ๋ถ์ฌ). keyword= ๋ก ๊ฒ์์ ๋์ง๋ง ๊ฒฐ๊ณผ์๋ ์ค๋ฆฌ์ง ์๋ ๋น๋์นญ์ด๋ฏ๋ก, ๊ฒฐ๊ณผ์ ๋น keywords ๋ฅผ 'ํค์๋ ์๋ ๋ ผ๋ฌธ'์ผ๋ก ์ค๋ ํ๋ฉด ์ ๋๋ค. ํค์๋ยทISSN ์ด ํ์ํ๋ฉด kci_detail ๋ก ๊ฑด๋ณ ๋ณด๊ฐํ ๊ฒ. ์ธ์ฆํค๊ฐ ์์ผ๋ฉด kci_harvest(OAI ๋ฌด์ธ์ฆ) ์ฌ์ฉ์ ์๋ดํ๋ค.
| Name | Required | Description | Default |
|---|---|---|---|
| doi | No | ||
| rows | No | ||
| title | Yes | ||
| author | No | ||
| date_to | No | ||
| journal | No | ||
| keyword | No | ||
| sort_by | No | ||
| abstract | No | ||
| sort_dir | No | ||
| date_from | No | ||
| institution | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true (safe read) and openWorldHint=true (may not be exhaustive). The description adds substantial behavioral context: authentication requirement, the truncated flag meaning, and the critical warning that keyword search may not include keywords in results. The description is open about field absence, which goes beyond annotations. Minor deduction: does not explicitly state it is a REST-based tool beyond the tag, but that is acceptable.
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 well-structured with a first line giving the core purpose, then parameter details, and finally a warning section and alternative. The warning about missing fields is front-loaded after the parameters. It is slightly long but every sentence adds value. Could be marginally more concise by combining some sentences, but overall efficient.
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 12 parameters, no output schema, and complex sibling tools, the description covers the essential usage: required auth, parameter formats, behavior for pagination and truncation, and field limitations compared to kci_detail. It lacks an explicit mention of the response structure beyond total/truncated, but since the tool is a search with a likely list response, the absence of output schema is partially mitigated. A more complete description might list other response fields (e.g., title, author, journal), but not required.
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?
Despite 0% schema description coverage (the schema has no descriptions), the narrative description explains the meaning of date_from/date_to (YYYYMM format), rows (max 100), institution filter, sort_by/sort_dir values, and the behavioral note about using sort_dir for pagination. It also explains the total and truncated fields. This is strong compensation for the missing schema descriptions. One minor gap: 'author' and 'journal' are listed in schema but not explained in text, though their names are self-describing.
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 begins with '[REST] ๋ ผ๋ฌธ ๊ฒ์ โ title ํ์ + ์ ํ ํํฐ', which clearly states the tool searches for KCI papers, identifies the required parameter (title), and notes optional filters. It distinguishes itself from siblings like kci_detail (used for per-item enrichment) and kci_harvest (for unauthenticated access), so purpose is very clear.
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 explicitly says '์ธ์ฆํค ํ์' (API key required) and directs users to kci_harvest (OAI without auth) when no key is available. It explains the sorting strategy for pagination and warns about the absence of certain fields in articleSearch. These provide both use-case guidance and alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kci_statusARead-only
์ฐ๊ฒฐ ์ ๊ฒ โ OAI(๋ฌด์ธ์ฆ) Identify + REST ์ธ์ฆํค ๋ณด์ ์ฌ๋ถ.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only and open-world behavior. The description adds specific behavioral details by stating it checks OAI Identify without authentication and whether a REST API key exists. It does not contradict the annotations.
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 succinct line in Korean, immediately conveying the tool's purpose without any extraneous words or repetition.
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 no parameters and no output schema, the description covers the core purpose and scope adequately. It could optionally mention the return format, but for a simple status check, the description is reasonably complete.
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 zero parameters, so the baseline score is 4. The description does not need to explain parameter behavior since there are none.
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 performs a connection check, specifying both OAI Identify (no authentication) and REST API key possession status. This distinguishes it from sibling tools like kci_search and kci_detail.
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 context that this is a connectivity/status check, implying it should be used to verify API access before other operations. However, it does not explicitly name alternatives or state when not to use it.
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.
3 tool updates
v0.3.6- Changed
kci_collect1 field changed- added
Input schema / properties / retry_incompleteAdded value: +{ + "default": 1, + "title": "Retry Incomplete", + "type": "integer" +}
- Changed
kci_references3 fields changed- added
Input schema / properties / institutionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Institution" +} - added
Input schema / properties / sort_byAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sort By" +} - added
Input schema / properties / sort_dirAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sort Dir" +}
- Changed
kci_search3 fields changed- added
Input schema / properties / institutionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Institution" +} - added
Input schema / properties / sort_byAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sort By" +} - added
Input schema / properties / sort_dirAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sort Dir" +}
7 tool updates
v0.1.0- First observed
kci_collect - First observed
kci_detail - First observed
kci_harvest - First observed
kci_journal_citation - First observed
kci_references - First observed
kci_search - First observed
kci_status
TDQS
Scored across 7 tools
Most tools have clearly distinct purposes: status, detail, search, references, citation, harvest, and collect. However, kci_search and kci_collect could be confused since kci_collect also performs searches, and the distinction between REST and OAI modes is described but not immediately obvious from names alone.
Tool names follow a consistent kci_ prefix with a noun-like suffix (status, detail, search, references, journal_citation, harvest, collect). This pattern is clear and predictable, though kci_journal_citation is slightly longer than others. No mixing of camelCase or snake_case issues.
Seven tools is well-scoped for the domain of Korean citation index access. Each tool serves a distinct function (connection check, detail lookup, search, references, journal metrics, bulk harvest, combined collection). No tool feels redundant or unnecessary.
The tool set covers key operations: search, detail retrieval, references, journal citation metrics, bulk harvesting, and a combined collector. Minor gaps exist: there is no direct tool for author lookup, no tool for updating/correcting entries, and no delete functionality, but these are appropriate for a read-only API service.
Maintenance
Related MCP Connectors
OpenCitations MCP โ citation index (COCI + general Index API).
Korean law: statutes, precedents, ordinances, treaties and citation verification (๋ฒ์ ์ฒ API).
Search 150M+ academic works, journals, and funders via Crossref API.
Search DataCite datasets and software, fetch DOI metadata, trace relations, format citations.
Related MCP Servers
- FlicenseNot gradedqualityNot gradedmaintenanceEnables Claude to search and analyze Korean academic papers using the Korea Citation Index (KCI) Open API. Supports paper search, detailed metadata retrieval, reference analysis, author and keyword searches, and citation index queries.1-
- AlicenseNot gradedqualityCmaintenanceIntegrates with KISTI's ScienceON, NTIS, and DataON APIs to search and retrieve scientific papers, patents, reports, national R\&D projects, and research data.17Creative Commons Attribution Non Commercial 4.0 International
- AlicenseAqualityAmaintenanceEnables searching and collecting academic literature metadata from KISTI ScienceOn via Claude or CLI, supporting various document types and export formats.51MIT
- FlicenseAqualityDmaintenanceEnables querying the Korea Citation Index (KCI) Open API to search reference lists, retrieve journal citation indices, and view citation detail history for Korean academic journals.5-