Back to Discover

KCI_openAPI

connector

rubatoyd

KCI (Korea Citation Index) literature & citation search via REST Open API + OAI-PMH

View on GitHub
0 starsSynced Aug 12, 2026

Install to Claude Code

/plugin marketplace add rubatoyd/KCI_openAPI

README

kci-openapi-mcp

CI Release Downloads

๐Ÿ“ˆ ์‚ฌ์šฉ๋Ÿ‰ โ€” ์ตœ๊ทผ 14์ผ ์กฐํšŒ 11ํšŒ(๊ณ ์œ  4) ยท ํด๋ก  159ํšŒ(๊ณ ์œ  84) ยท ๋ฆด๋ฆฌ์Šค ์ž์‚ฐ ๋ˆ„์  ๋‹ค์šด๋กœ๋“œ 143

์ผ๋ณ„ ํด๋ก ยท์กฐํšŒ ์ถ”์ด

2026-08-12 ์ž๋™ ๊ฐฑ์‹  ยท ์ „์ฒด ์ด๋ ฅ์€ 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 APIOAI-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)์—๋งŒ ํ•„์š”ํ•˜๋‹ค.

  1. open.kci.go.kr ์—์„œ Open API ์ด์šฉ ์‹ ์ฒญ
  2. ๋ฐœ๊ธ‰๋œ ์ธ์ฆํ‚ค ๋ฌธ์ž์—ด 1๊ฐœ๋ฅผ ๋ฐ›๋Š”๋‹ค
  3. ์•„๋ž˜ ์ค‘ ํ•œ ๊ณณ์— ๋„ฃ๋Š”๋‹ค โ€” ์ฝ”๋“œ๋‚˜ ์ปค๋ฐ‹์—๋Š” ๋„ฃ์ง€ ์•Š๋Š”๋‹ค
์‚ฌ์šฉ ํ™˜๊ฒฝ๋„ฃ๋Š” ๊ณณ
Claude Code.claude/settings.local.json ์˜ env (gitignore ๋Œ€์ƒ)
Claude Desktopclaude_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_detailControl Number(ARTโ€ฆ)๋กœ ์ƒ์„ธ โ€” ํ‚ค์›Œ๋“œยทISSNยท์ €์ž์†Œ์†ยท์ฐธ๊ณ ๋ฌธํ—Œ์˜ ์œ ์ผํ•œ ์ถœ์ฒ˜
kci_references์ œ๋ชฉ ๊ฒ€์ƒ‰์–ด์— ๋งค์นญ๋œ ๋…ผ๋ฌธ๋“ค์˜ ์ฐธ๊ณ ๋ฌธํ—Œ ์›ํ˜•
kci_journal_citation์ €๋„ ์ธ์šฉ์ง€์ˆ˜ โ€” ์—ฐ๋„ ๋ชฉ๋ก / journal_id ์ƒ์„ธ(๋“ฑ์žฌ์ด๋ ฅยท์—ฐ๋„๋ณ„ IF)
kci_harvestOAI-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 ์€ ์‹ค์ œ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฑด์ˆ˜๋ณด๋‹ค ํด ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋‘ ์ƒํ™ฉ์„ ๋‹ค๋ฅธ ํ”Œ๋ž˜๊ทธ๋กœ ๊ตฌ๋ถ„ํ•œ๋‹ค.

ํ”Œ๋ž˜๊ทธ๋œป๋Œ€์ฒ˜
truncatedmax_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 ์•ฝ๊ด€์„ ๋”ฐ๋ฅธ๋‹ค.

Rendered live from rubatoyd/KCI_openAPI's GitHub README โ€” not stored, always reflects the source repo.

1 Install Method

NameDescriptionCategorySource
mcpb packageInstall via mcpb (stdio transport)mcp-serverhttps://github.com/rubatoyd/KCI_openAPI/releases/download/v0.3.6/kci-openapi-mcp.mcpb

0 Comments

Login required
Log in to post a comment or update on this repo.

No comments yet โ€” be the first to share an update.