Server data from the Official MCP Registry
KCI (Korea Citation Index) literature & citation search via REST Open API + OAI-PMH
About
KCI (Korea Citation Index) literature & citation search via REST Open API + OAI-PMH
Security Report
This is a well-structured KCI academic data harvesting MCP server with appropriate authentication controls and reasonable permissions for its purpose. The code demonstrates solid security practices: API keys are properly managed through environment variables with validation, sensitive data is not logged, and network calls include proper error handling without credential exposure. Minor code quality issues around broad exception handling and SSL/TLS configuration do not significantly impact security. Supply chain analysis found 9 known vulnerabilities in dependencies (0 critical, 5 high severity).
4 files analyzed ยท 13 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Permissions Required
This plugin requests these system permissions. Most are normal for its category.
What You'll Need
Set these up before or after installing:
Environment variable: KCI_API_KEY
How to Install
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-rubatoyd-kci-openapi-mcp": {
"env": {
"KCI_API_KEY": "your-kci-api-key-here"
},
"args": [
"kci-openapi-mcp"
],
"command": "uvx"
}
}
}Documentation
View on GitHubFrom the project's GitHub README.
kci-openapi-mcp
๐ ์ฌ์ฉ๋ โ ์ต๊ทผ 14์ผ ์กฐํ 26ํ(๊ณ ์ 12) ยท ํด๋ก 216ํ(๊ณ ์ 102) ยท ๋ฆด๋ฆฌ์ค ์์ฐ ๋์ ๋ค์ด๋ก๋ 250
2026-08-31 ์๋ ๊ฐฑ์ ยท ์ ์ฒด ์ด๋ ฅ์
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
๋ ์ธํฐํ์ด์ค
| REST Open API | OAI-PMH | |
|---|---|---|
| ์๋ํฌ์ธํธ | โฆ/po/openapi/openApiSearch.kci | โฆ/oai/request |
| ์ธ์ฆ | KCI_API_KEY ํ์ | ๋ถํ์ |
| ์ง์ | ํค์๋ ๊ฒ์(title ํ์) | ์ธํธ + ๋ ์ง๋ฒ์ ์ํ |
| ์ธ์ฉ์ง์ยท์ฐธ๊ณ ๋ฌธํ | โ | โ |
๊ท๊ฒฉ: 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 identify
uvx --from git+https://github.com/rubatoyd/KCI_openAPI kci harvest --set ARTI --from 2024-01-01 --until 2024-03-31 --contains ํ๋ถ๋ชจ --max 200
MCP ๋ก ๋ถ์๋ค๋ฉด 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/settings.local.json ์ env (gitignore ๋์) |
| Claude Desktop | claude_desktop_config.json ์ env โ ํ๋ฌธ ์ธ๋ผ์ธ(${VAR} ํ์ฅ ์ ๋จ) |
.mcpb ์ค์น | ์ค์น ์ฐฝ์ ์ ๋ ฅ๋ |
| CLI / ๋ก์ปฌ ๊ฐ๋ฐ | .env(gitignore) ๋๋ OS ์ฌ์ฉ์ ํ๊ฒฝ๋ณ์ |
AES ์ํธํยทํ ํฐ ๋ฐ๊ธยท๊ณต์ธ IP ๋ฑ๋ก์ ๋ถํ์ํ๋ค. ํ๋ฌธ key ์ฟผ๋ฆฌ ํ๋ผ๋ฏธํฐ ํ๋๋ก ํธ์ถํ๋ค.
์ค์น
Claude Desktop
์์ฒด์๊ฒฐ .mcpb(๊ถ์ฅ) โ Pythonยทuv ๋ถํ์. ๋ฆด๋ฆฌ์ค์์
OS์ ๋ง๋ ํ์ผ์ ๋ฐ์ ๋๋ธํด๋ฆญ(๋๋ Settings โ Extensions โ Install) โ KCI_API_KEY ์
๋ ฅ(์ ํ).
| ์์ฐ | ํน์ง |
|---|---|
kci-openapi-mcp-win-x64.mcpb / โฆ-macos-arm64.mcpb / โฆ-linux-x64.mcpb | ์์ฒด์๊ฒฐ โ ์ฌ์ ์ค์น๋ฌผ ์์ |
kci-openapi-mcp.mcpb | ๊ฒฝ๋. ์คํ์ uv ํ์ |
์๋ 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 ๋๊ตฌ
| ๋๊ตฌ | ํ๋ ์ผ |
|---|---|
kci_status | ์ฐ๊ฒฐ ์ ๊ฒ โ OAI Identify + ์ธ์ฆํค ๋ณด์ ์ฌ๋ถ |
kci_search | ๋
ผ๋ฌธ ๊ฒ์ โ title ํ์ + author/journal/keyword/abstract/doi/๋ฐํ์ฐ์/institution ํํฐ, ์ ๋ ฌ |
kci_detail | Control Number(ARTโฆ)๋ก ์์ธ โ ํค์๋ยทISSNยท์ ์์์ยท์ฐธ๊ณ ๋ฌธํ์ ์ ์ผํ ์ถ์ฒ |
kci_references | ์ ๋ชฉ ๊ฒ์์ด์ ๋งค์นญ๋ ๋ ผ๋ฌธ๋ค์ ์ฐธ๊ณ ๋ฌธํ ์ํ |
kci_journal_citation | ์ ๋ ์ธ์ฉ์ง์ โ ์ฐ๋ ๋ชฉ๋ก / journal_id ์์ธ(๋ฑ์ฌ์ด๋ ฅยท์ฐ๋๋ณ IF) |
kci_harvest | OAI-PMH ๋ฌด์ธ์ฆ ๋๋ ์ํ โ ์ธํธ + ๋ ์ง๋ฒ์, contains ๋ก์ปฌ ํํฐ |
kci_collect | ๋ผ์ฐํฐ โ ํค ์ ๋ฌดยท์์ฒญ ์ฑ๊ฒฉ์ผ๋ก 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๊ฑด์ด ์ํ์ด๋ค. ๋ถ์กฑํ ์ด์ ๊ฐ ๋์ด๊ณ ์ฒ๋ฐฉ์ด
์ ๋ฐ๋์ด๋ฏ๋ก ๊ฒฝ๊ณ ๋ฌธ๊ตฌ๋ฅผ ํ์ธํด์ผ ํ๋ค.
| ์ํฉ | ์ฒ๋ฐฉ |
|---|---|
total > 100 โ API ๊ฐ ๋ ์ค ์ ์๋ค | sort_dir ๋ฅผ ๋ค์ง์ด(ascโdesc) ๋ฐ๋์ชฝ์ ๋ฐ์ ํฉ์งํฉ |
total โค 100 ์ธ๋ฐ rows ๋ก ์๋ ธ๋ค | rows ๋ฅผ total ์ด์์ผ๋ก ์ฌ๋ฆฐ๋ค (์ ๋ ฌ ๋ฐ์ ์ ๊ฐ์ ๋ ์ฝ๋๋ง ๋ค์ ์จ๋ค) |
KCI ๊ฐ ๋ณด๊ณ ํ๋ total ์ ์ค์ ๋ก ๋ฐ์ ์ ์๋ ๊ฑด์๋ณด๋ค ํด ์ ์๋ค. ๊ทธ๋์ ๋ ์ํฉ์ ๋ค๋ฅธ
ํ๋๊ทธ๋ก ๊ตฌ๋ถํ๋ค.
| ํ๋๊ทธ | ๋ป | ๋์ฒ |
|---|---|---|
truncated | max_records ์ํ์ ๊ฑธ๋ ธ๋ค | ์ํ์ ์ฌ๋ ค ์ฌ์์งํ๋ฉด ๋์ด๋๋ค |
total_mismatch | ๋๊น์ง ํ์ด์งํ๋๋ฐ 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 ์ฝ๊ด์ ๋ฐ๋ฅธ๋ค.
Reviews
No reviews yet
Be the first to review this server!
More Developer Tools MCP Servers
Git
Freeby Modelcontextprotocol ยท Developer Tools
Read, search, and manipulate Git repositories programmatically
Fetch
Freeby Modelcontextprotocol ยท Developer Tools
Web content fetching and conversion for efficient LLM usage
Toleno
Freeby Toleno ยท Developer Tools
Toleno Network MCP Server โ Manage your Toleno mining account with Claude AI using natural language.
mcp-creator-python
Freeby mcp-marketplace ยท Developer Tools
Create, build, and publish Python MCP servers to PyPI โ conversationally.
MCP Marketplace
Freeby mcp-marketplace ยท Developer Tools
Search and install MCP servers from inside your AI client.
MarkItDown
Freeby Microsoft ยท Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption
