nl-openapi-mcp

κ΅λ¦½μ€μλμκ΄ λνλ―Όκ΅ κ΅κ°μμ§ OpenAPI (Seoji OpenAPI) λ¬ΈνΒ·λμ μμ§ λ©νλ°μ΄ν° κ²μΒ·μμ§ MCP μλ² + CLI.
μλ§€ νλ‘μ νΈ kci-openapi-mcp λ° scienceon-mcpμ λμΌν κ³΅ν΅ μ½μ΄(REST/MCP/CLI/Exporter) μν€ν
μ²λ₯Ό 곡μ ν©λλ€.
An MCP server + CLI for National Library of Korea Seoji OpenAPI. Bring your own API key and search & harvest Korean academic literature and book bibliography metadata in any project.
무μμ ν μ μλ
- π μΌλ° κ²μ (
kwd) & μμΈ κ²μ (title, author, publisher, keyword, isbn, seoji_year): κ΅κ°μμ§ λμ λ° λ¬Έν κ²μ
- π λ¨κ±΄ μ‘°ν: μ μ΄λ²νΈ(
control_no) λ° URL κ²½λ‘λ₯Ό ν΅ν μμ§μ¬ν νμΈ
- πΎ λλ μμ§ & νμΌ μ μ₯: κ²μ κ²°κ³Όλ₯Ό
xlsx / csv / json / sqlite ννλ‘ λ‘컬 λ΄λ³΄λ΄κΈ°
- π€ λ κ°μ§ μ¬μ©λ²: Claudeμμ λꡬ νΈμΆ(MCP) Β· ν°λ―Έλ λ°°μΉ(CLI) β κ°μ μ½μ΄ 곡μ
μꡬμ¬ν
- Python 3.10+
- uv (ν¨ν€μ§ κ΄λ¦¬)
- κ΅λ¦½μ€μλμκ΄ OpenAPI λ°κΈν€ (
NL_API_KEY)
1) API ν€ λ°κΈ
- κ΅λ¦½μ€μλμκ΄ OpenAPI μλ΄ νμ΄μ§μ μ μνμ¬ νμκ°μ
Β·λ‘κ·ΈμΈ
- OpenAPI μ΄μ©μ μ² β
λνλ―Όκ΅ κ΅κ°μμ§ Open API μ μ² λ° μΉμΈ ν API ν€ λ°κΈ
- νκ²½λ³μ
NL_API_KEY (λλ νλ‘μ νΈ λ΄ .env)μ λ°κΈν€ μ€μ
2) μ€μΉ λ° μ€ν
μ μ : uv μ€μΉ (Windows: winget install astral-sh.uv).
λ°©λ² A β uvx (μ€μ μ§μ , μ€μΉ λΆνμ - PyPI / Git)
PyPI μ μ λ±λ‘ ν:
uvx nl-openapi-mcp status
uvx nl-openapi-mcp search --kwd "μ 보"
λλ GitHub μμ€μμ μ€ν:
uvx --from git+https://github.com/rubato103/nl-openapi-mcp nl-mcp status
λ°©λ² B β λ‘컬 κ°λ° νκ²½ (OneDrive λκΈ°ν ν΄λ λμ)
ν΄λΌμ°λ λκΈ°ν ν΄λ μμμ μμ
ν κ²½μ° κ°μνκ²½μ μΈλΆμ μμ±ν©λλ€:
set UV_PROJECT_ENVIRONMENT=C:\Users\rubat\.venvs\nl-openapi-mcp
uv sync
export UV_PROJECT_ENVIRONMENT="$HOME/.venvs/nl-openapi-mcp"
uv sync
3) Claudeμ MCP μ°κ²°
Claude Code (.mcp.json):
claude mcp add nl --env NL_API_KEY=$NL_API_KEY -- uvx --from git+https://github.com/rubato103/nl-openapi-mcp nl-mcp
Claude Desktop (claude_desktop_config.json):
{
"mcpServers": {
"nl-seoji": {
"command": "uvx",
"args": ["--from", "git+https://github.com/rubato103/nl-openapi-mcp", "nl-mcp"],
"env": {
"NL_API_KEY": "λ°κΈλ°μ_API_KEY"
}
}
}
}
4) MCP λꡬ λ° CLI μ¬μ©λ²
MCP λꡬ λͺ©λ‘
nl_status: API ν€ μ€μ μ¬λΆ λ° OpenAPI μλ² μν μ κ²
nl_search: μΌλ°/μμΈ ν€μλ κ²μ λ° νμ΄μ§ (title, author, publisher, keyword, isbn λ±)
nl_detail: μ μ΄λ²νΈ λλ νμ λ₯Ό ν΅ν λ¨κ±΄ μμΈ μ 보 μ‘°ν
nl_collect: λλ μμ§ λ° λ‘컬 νμΌ(xlsx, csv, json, sqlite) μ μ₯
CLI μμ
nl-mcp status
nl-mcp search --kwd "λμκ΄" --rows 5
nl-mcp search --title "ν μ§" --author "λ°κ²½λ¦¬"
nl-mcp collect --kwd "μ 보ν" --max-records 50 --format xlsx --output results.xlsx
5) 곡μ MCP λ μ§μ€νΈλ¦¬ λ° PyPI λ±λ‘
- MCP Registry Identifier:
io.github.rubato103/nl-openapi-mcp
- PyPI Package:
nl-openapi-mcp
λΌμ΄μ μ€
MIT License Β© Yeondong Yang (rubato103)