Back to Browse

Nl Openapi MCP Server

Developer ToolsUse Caution4.8MCP RegistryLocal
Free

Server data from the Official MCP Registry

National Library of Korea Seoji OpenAPI search via REST API and local metadata harvesting

About

National Library of Korea Seoji OpenAPI search via REST API and local metadata harvesting

Security Report

4.8
Use Caution4.8High Risk

This is a well-structured MCP server for querying the National Library of Korea Seoji OpenAPI. The code demonstrates good security practices with proper API key handling via environment variables, input validation on pagination parameters, and exception handling without leaking sensitive data. Minor code quality improvements could be made around error handling specificity and input validation, but these do not constitute security vulnerabilities. Supply chain analysis found 9 known vulnerabilities in dependencies (0 critical, 5 high severity).

7 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.

HTTP Network Access

Connects to external APIs or services over the internet.

env_vars

Check that this permission is expected for this type of plugin.

File System Write

Writes or modifies files on your machine. Check that this is expected for the tool.

File System Read

Reads files on your machine. Normal for tools that analyze or process local data.

What You'll Need

Set these up before or after installing:

National Library Seoji OpenAPI key (issued at librarian.nl.go.kr)Required

Environment variable: NL_API_KEY

How to Install

Add this to your MCP configuration file:

{
  "mcpServers": {
    "io-github-rubato103-nl-openapi-mcp": {
      "env": {
        "NL_API_KEY": "your-nl-api-key-here"
      },
      "args": [
        "nl-openapi-mcp"
      ],
      "command": "uvx"
    }
  }
}

Documentation

View on GitHub

From the project's GitHub README.

nl-openapi-mcp

CI Release Downloads

๐Ÿ“ˆ ์‚ฌ์šฉ๋Ÿ‰ โ€” ์ตœ๊ทผ 14์ผ ์กฐํšŒ 10ํšŒ(๊ณ ์œ  5) ยท ํด๋ก  148ํšŒ(๊ณ ์œ  69) ยท ๋ฆด๋ฆฌ์Šค ์ž์‚ฐ ๋ˆ„์  ๋‹ค์šด๋กœ๋“œ 190

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

2026-08-31 ์ž๋™ ๊ฐฑ์‹  ยท ์ „์ฒด ์ด๋ ฅ์€ docs/usage.csv. GitHub ํŠธ๋ž˜ํ”ฝ ํ†ต๊ณ„๋Š” 14์ผ ์ฐฝ๋งŒ ์ œ๊ณตํ•˜๋ฏ€๋กœ ์ด ์ €์žฅ์†Œ๊ฐ€ ๋งค์ผ ์ฐ์–ด ๋ˆ„์ ํ•œ๋‹ค.

๊ตญ๋ฆฝ์ค‘์•™๋„์„œ๊ด€ ์†Œ์žฅ์ž๋ฃŒ ๊ฒ€์ƒ‰ OpenAPI ๋ฅผ Claude ๋“ฑ MCP ํด๋ผ์ด์–ธํŠธ์—์„œ ๋ฐ”๋กœ ์“ฐ๋Š” ์„œ๋ฒ„ + CLI. ๋‹จํ–‰๋ณธยท์˜จ๋ผ์ธ์ž๋ฃŒ์˜ ์„œ์ง€, KDC ๋ถ„๋ฅ˜, ์ฒญ๊ตฌ๊ธฐํ˜ธ, ์›๋ฌธ ์ œ๊ณต ์—ฌ๋ถ€๋ฅผ ๊ฒ€์ƒ‰ยท์ˆ˜์ง‘ํ•˜๊ณ  xlsx/csv/json/sqlite ๋กœ ๋‚ด๋ณด๋ƒ…๋‹ˆ๋‹ค.

์ž๋งค ํ”„๋กœ์ ํŠธ: kci-openapi-mcp(ํ•™์ˆ ๋…ผ๋ฌธยท์ธ์šฉ์ง€์ˆ˜) ยท scienceON-mcp(KISTI ๋ฌธํ—Œ)


์ด ๋„๊ตฌ๊ฐ€ ํŠน๋ณ„ํžˆ ์‹ ๊ฒฝ ์“ฐ๋Š” ๊ฒƒ โ€” ์กฐ์šฉํ•œ ์ ˆ๋‹จ ๋ฐฉ์ง€

๊ตญ๋ฆฝ์ค‘์•™๋„์„œ๊ด€ ๊ฒ€์ƒ‰ API ๋Š” ํ•œ ๊ฒ€์ƒ‰์‹๋‹น 500๊ฑด๊นŒ์ง€๋งŒ ๋Œ๋ ค์ค๋‹ˆ๋‹ค(๊ณต์‹ ์˜ค๋ฅ˜์ฝ”๋“œ 012 DATA LIMIT 500). ๊ทธ๋Ÿฐ๋ฐ total ์€ ๊ทธ๋ณด๋‹ค ํฐ ๊ฐ’์„ ํƒœ์—ฐํžˆ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

๊ต์œก๋ณต์ง€: total=1,856  โ†’  ์‹ค์ œ๋กœ ๋ฐ›์„ ์ˆ˜ ์žˆ๋Š” ๊ฑด 500๊ฑด

์ด ์‚ฌ์‹ค์„ ๋ชจ๋ฅด๋ฉด ๋ถ€๋ถ„ ์ง‘ํ•ฉ์„ ์ „์ˆ˜๋กœ ์˜ค์ธํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ ๋ชจ๋“  ์‘๋‹ต์— totalยทtruncatedยทcap_hit ์„ ํ•จ๊ป˜ ์‹ฃ๊ณ , ์ƒํ•œ์— ๊ฑธ๋ฆฌ๋ฉด ์ฒ˜๋ฐฉ๊นŒ์ง€ ๋ฌธ์žฅ์œผ๋กœ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

์‹ ํ˜ธ๋œป์ฒ˜๋ฐฉ
truncated์ด๋ฒˆ ํ˜ธ์ถœ์ด total ๋ณด๋‹ค ์ ๊ฒŒ ๋ฐ›์Œ๋Œ€๊ฐœ max_records ๋ฅผ ์˜ฌ๋ฆฌ๋ฉด ํ•ด๊ฒฐ
cap_hittotal > 500 โ€” API ๊ฐ€ ๋” ์•ˆ ์คŒmax_records ๋กœ๋Š” ๋ถˆ๊ฐ€ (์•„๋ž˜ ์ฐธ์กฐ)
meta.cap_hit_terms์ƒํ•œ์— ๊ฑธ๋ฆฐ ๊ฒ€์ƒ‰์–ด ๋ชฉ๋ก๊ทธ ๊ฒ€์ƒ‰์–ด๋งŒ ์„ธ๋ถ„ํ™”

์ƒํ•œ์„ ๋„˜๊ฒจ ๋ชจ์œผ๋Š” ๋ฐฉ๋ฒ• โ€” ํ•จ๊ป˜ ์“ฐ๋ฉด ์ „์ˆ˜ ์ˆ˜์ง‘์ด ๋ฉ๋‹ˆ๋‹ค

๊ต์œก๋ณต์ง€/๋„์„œ(1,856๊ฑด) ๋ผ์ด๋ธŒ ์‹ค์ธก:

์„ค์ •ํšŒ์ˆ˜๋น„์œจ์š”์ฒญ
์šฐํšŒ ์—†์Œ50027%1
sort_depth=31,74694%7
auto_partition=True + sort_depth=11,854100%24

sort_depth ๊ฐ€ ๋น„์šฉ ๋Œ€๋น„ ํšจ๊ณผ๊ฐ€ ์••๋„์ ์ž…๋‹ˆ๋‹ค โ€” ๊ฐ™์€ ๊ฒ€์ƒ‰์‹์„ ์ •๋ ฌ ์ˆœ์„œ๋งŒ ๋ฐ”๊ฟ” ๋‹ค์‹œ ํ›‘๋Š”๋ฐ, asc ์™€ desc ์˜ ๊ต์ง‘ํ•ฉ์ด 0๊ฑด์ด๋ผ ์ •๋ ฌ์ถ• ํ•˜๋‚˜๊ฐ€ ์ƒํ•œ์„ ์‚ฌ์‹ค์ƒ 2๋ฐฐ๋กœ ๋Š˜๋ฆฝ๋‹ˆ๋‹ค. ๋ถ„ํ• (auto_partition)๊ณผ ์ง๊ตํ•˜๋ฏ€๋กœ ํ•จ๊ป˜ ์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

โ‘  auto_partition=True โ€” ์„œ๋ฒ„์ธก ์ถ•์œผ๋กœ ์žฌ๊ท€ ๋ถ„ํ• 

์‘๋‹ต ํ•„๋“œ๋ช…์„ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋„˜๊ฒจ๋ณด๋Š” ๋ฐฉ์‹์œผ๋กœ ์‹ค์ œ ๋™์ž‘ํ•˜๋Š” ์ถ• 3๊ฐœ๋ฅผ ์ฐพ์•˜์Šต๋‹ˆ๋‹ค: category โ†’ manageName(๋‘˜ ๋‹ค ์™„์ „๋ถ„ํ• ) โ†’ licYn. ์ƒํ•œ์— ๊ฑธ๋ฆฐ ์กฐ๊ฐ๋งŒ ๋‹ค์Œ ์ถ•์œผ๋กœ ๋” ์ชผ๊ฐœ๊ณ , ๋ถ€๋ชจ ์กฐ๊ฐ๋„ ํ•ฉ์ง‘ํ•ฉ์— ๋„ฃ์–ด ๋ถˆ์™„์ „ํ•œ ์ถ•์„ ์จ๋„ ์†ํ•ด๊ฐ€ ๋‚˜์ง€ ์•Š๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ต์œก๋ณต์ง€(์ „์ฒด 7,028๊ฑด) ์‹ค์ธก:

๊นŠ์ด์ถ•ํšŒ์ˆ˜๋น„์œจ์š”์ฒญ
โ€”๋ถ„ํ•  ์—†์Œ5007%1
1category2,13430%13
2+manageName (๊ธฐ๋ณธ)3,26546%25
3+licYn4,72267%60

partition_depth(1~3)๋กœ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค. โš ๏ธ ์ „์ˆ˜๋Š” ์•„๋‹ˆ๋ฉฐ โ€” ๊นŠ์ด 3์—์„œ๋„ 33%๊ฐ€ ๋‚จ์Šต๋‹ˆ๋‹ค โ€” ๋ชป ๋ฐ›์€ ๊ฑด์ˆ˜๋Š” meta.axes[].partition.unreachable ๋กœ ๋ณด๊ณ ํ•ฉ๋‹ˆ๋‹ค.

โ‘ก exact=True โ€” ํฐ๋”ฐ์˜ดํ‘œ ๊ตฌ๋ฌธ๊ฒ€์ƒ‰ (โš ๏ธ ๋„“๊ฒŒ ๋ชจ์„ ๋•Œ๋Š” ์“ฐ์ง€ ๋งˆ์„ธ์š”)

total ์ž์ฒด๊ฐ€ ์ค„์–ด๋“ค์–ด(๊ต์œก๋ถˆํ‰๋“ฑ 63 โ†’ 28) ์ƒํ•œ ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์žฌํ˜„์œจ ์†์‹ค์ด ํฝ๋‹ˆ๋‹ค โ€” ์‹ค์ธก ํ‰๊ท  47%, ์ตœ์•… 84%(๊ต์œกํ˜•ํ‰์„ฑ 31 โ†’ 5๊ฑด). ๊ตฌ๋ฌธ๊ฒ€์ƒ‰์€ ํ† ํฐ ์ธ์ ‘์„ ์š”๊ตฌํ•˜๋Š”๋ฐ ํ•œ๊ตญ์–ด ๋ณตํ•ฉ์–ด๋Š” ํ‘œ์ œ์—์„œ ์กฐ์‚ฌยท์ˆ˜์‹์–ด๋กœ ๊ฐˆ๋ผ์ง€๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค (๊ต์œก์˜ ํ˜•ํ‰์„ฑ, ์ดˆ์ค‘๋“ฑ๊ต์œก์˜ ํ˜•ํ‰์„ฑ๊ณผ). ๋ฒ„๋ ค์ง„ ๊ฒƒ์˜ 76%๊ฐ€ ๊ด€๋ จ ๋ฌธํ—Œ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

โ†’ ์ฝ”ํผ์Šค ์ˆ˜์ง‘์€ ๊ธฐ๋ณธ ๊ฒ€์ƒ‰ + contains ํ›„์ฒ˜๋ฆฌ, exact ๋Š” ์ „์ฒด ํ‘œ์ œ๋ฅผ ์•„๋Š” ํŠน์ • ์ž๋ฃŒ ์กฐํšŒ์šฉ.

โš ๏ธ year_from/contains ๋Š” ์ด๋ฏธ ๋ฐ›์€ ๋ ˆ์ฝ”๋“œ์— ๋Œ€ํ•œ ํ›„์ฒ˜๋ฆฌ๋ผ ์ƒํ•œ์„ ํ’€์–ด์ฃผ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์„œ๋ฒ„์ธก ์—ฐ๋„ ๋ฒ”์œ„ ํ•„ํ„ฐ๋Š” ํ™•์ธ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค(11๊ฐœ ํ›„๋ณด ๋ฌด์‹œ).

๐Ÿ”ด ์ •์ •(2026-08-12) โ€” ์ด์ „ ํŒ์—์„œ "์ •๋ ฌ์€ ์กด์žฌํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค"๋ผ๊ณ  ์ ์—ˆ์œผ๋‚˜ ํ‹€๋ ธ์Šต๋‹ˆ๋‹ค. sort=ipub_year&order=asc|desc ๊ฐ€ ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค โ†’ sort_depth ๋กœ ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค(์œ„ ํ‘œ). detailSearch=true+f1/v1/and1 ๋กœ ํ•„๋“œ ๊ฐ„ AND/OR/NOT ๋„ ๋ฉ๋‹ˆ๋‹ค(AND+NOT=๋ถ€๋ชจ ๊ฒ€์‚ฐ ํ†ต๊ณผ) โ€” ์ด์ชฝ์€ ์•„์ง ๋ฏธ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ โ†’ docs/NL_API_GUIDE.md ยง1-4-bยทยง1-6ยทยง3-3


์„ค์น˜

1) Claude Code / Claude Desktop (uvx โ€” ๊ถŒ์žฅ)

{
  "mcpServers": {
    "nl": {
      "type": "stdio",
      "command": "uvx",
      "args": ["--from", "git+https://github.com/rubatoyd/nl-openapi-mcp", "nl-mcp"],
      "env": { "NL_API_KEY": "๋ฐœ๊ธ‰๋ฐ›์€_์ธ์ฆํ‚ค" }
    }
  }
}

2) Claude Desktop .mcpb ์›ํด๋ฆญ

Releases ์—์„œ ๋‚ด๋ ค๋ฐ›์•„ ์‹คํ–‰ํ•ฉ๋‹ˆ๋‹ค. Pythonยทuv ๊ฐ€ ์—†๋Š” ํ™˜๊ฒฝ์ด๋ฉด OS๋ณ„ ์ž์ฒด์™„๊ฒฐ ๋ฒˆ๋“ค(-win-x64 / -macos-arm64 / -linux-x64)์„ ์“ฐ์„ธ์š”.

3) ๋กœ์ปฌ ๊ฐœ๋ฐœ

git clone https://github.com/rubatoyd/nl-openapi-mcp
cd nl-openapi-mcp
uv sync
uv run pytest -q

ํด๋ผ์šฐ๋“œ ๋™๊ธฐํ™” ํด๋”(OneDrive ๋“ฑ)์—์„œ ์ž‘์—…ํ•œ๋‹ค๋ฉด venv ๋ฅผ ํด๋” ๋ฐ–์— ๋‘์„ธ์š”: UV_PROJECT_ENVIRONMENT=~/.venvs/nl-openapi-mcp

4) ๋‹ค๋ฅธ MCP ํด๋ผ์ด์–ธํŠธ

ํ‘œ์ค€ stdio MCP ์„œ๋ฒ„์ด๋ฏ€๋กœ MCP ๋ฅผ ์ง€์›ํ•˜๋Š” ์—์ด์ „ํŠธ๋ฉด ๊ทธ๋Œ€๋กœ ๋ถ™์Šต๋‹ˆ๋‹ค โ€” Cursor ยท Windsurf ยท Cline ยท Zed ยท VS Code Copilot(agent mode) ยท OpenAI Agents SDK ยท ์ž์ฒด ํด๋ผ์ด์–ธํŠธ ๋“ฑ. ์œ„ command/args/env 3์š”์†Œ๋ฅผ ๊ฐ ํด๋ผ์ด์–ธํŠธ ์„ค์ •์— ์˜ฎ๊ธฐ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ „์†ก ๋ฐฉ์‹ โ€” stdio(๊ธฐ๋ณธ) ยท SSE ยท Streamable HTTP

๋กœ์ปฌ ์„œ๋ธŒํ”„๋กœ์„ธ์Šค๋ฟ ์•„๋‹ˆ๋ผ HTTP ๋กœ๋„ ๋„์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์›๊ฒฉ ํ˜ธ์ŠคํŒ…์ด๋‚˜ stdio ๋ฅผ ๋ชป ์“ฐ๋Š” ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•œ ๊ฒฝ๋กœ์ž…๋‹ˆ๋‹ค.

nl-mcp                                # stdio (๊ธฐ๋ณธ)
nl-mcp --transport streamable-http    # http://127.0.0.1:8000/mcp
nl-mcp --transport sse --port 9000    # http://127.0.0.1:9000/sse

ํ™˜๊ฒฝ๋ณ€์ˆ˜: NL_MCP_TRANSPORT ยท NL_MCP_HOST ยท NL_MCP_PORT.

โš ๏ธ HTTP ์ „์†ก์—๋Š” ์ธ์ฆ์ด ์—†์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ ๋ฐ”์ธ๋“œ๋Š” ๋ฃจํ”„๋ฐฑ(127.0.0.1)์ด๋ผ ๊ฐ™์€ PC ์—์„œ๋งŒ ์ ‘๊ทผ๋ฉ๋‹ˆ๋‹ค. --host 0.0.0.0 ์œผ๋กœ ์™ธ๋ถ€์— ์—ด๋ฉด ์ธ์ฆํ‚ค๋ฅผ ํ’ˆ์€ ์„œ๋ฒ„๋ฅผ ๊ทธ๋Œ€๋กœ ๊ณต๊ฐœํ•˜๋Š” ๊ฒƒ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค โ€” ์‹ ๋ขฐ๋œ ๋ง์—์„œ๋งŒ ์“ฐ์„ธ์š”. ์„œ๋ฒ„๋„ ๊ธฐ๋™ ์‹œ ๊ฒฝ๊ณ ๋ฅผ ์ฐ์Šต๋‹ˆ๋‹ค.

Claude ์•ฑ ์•ˆ์—์„œ ๊ฒ€์ƒ‰ํ•ด ์„ค์น˜ํ•  ์ˆ˜๋Š” ์—†์Šต๋‹ˆ๋‹ค. ๊ณต์‹ MCP ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๋“ฑ์žฌ์™€ Claude Desktop ์ธ์•ฑ ์ปค๋„ฅํ„ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ๋Š” ๋ณ„๊ฐœ์ด๊ณ  ์ž๋™ ๋™๊ธฐํ™”๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์œ„ ์„ค์น˜ ๋ฐฉ๋ฒ• ์ค‘ ํ•˜๋‚˜๋ฅผ ์“ฐ์„ธ์š”.


์ธ์ฆํ‚ค

www.nl.go.kr ์˜คํ”ˆAPI ์‹ ์ฒญ์œผ๋กœ ๋ฐœ๊ธ‰๋ฐ›์•„ NL_API_KEY ๋กœ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค. ํ† ํฐ ๋ฐœ๊ธ‰ยทAES ์•”ํ˜ธํ™”ยท๊ณต์ธIP ๋“ฑ๋ก์ด ํ•„์š” ์—†์Šต๋‹ˆ๋‹ค(ํ‰๋ฌธ key ์ฟผ๋ฆฌ ํŒŒ๋ผ๋ฏธํ„ฐ).

cp .env.example .env   # NL_API_KEY ๋ฅผ ์ฑ„์›Œ ๋„ฃ์œผ์„ธ์š” (.env ๋Š” gitignore ๋ฉ๋‹ˆ๋‹ค)
ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ธฐ๋ณธ๊ฐ’์„ค๋ช…
NL_API_KEY(ํ•„์ˆ˜)๊ตญ๋ฆฝ์ค‘์•™๋„์„œ๊ด€ ์˜คํ”ˆAPI ์ธ์ฆํ‚ค
NL_OS_TRUST1๊ต์œก๋งยท์‚ฌ๋‚ด๋ง SSL ์ธํ„ฐ์…‰์…˜ ๋Œ€์‘(OS ์‹ ๋ขฐ์ €์žฅ์†Œ ์‚ฌ์šฉ). 0 ์ด๋ฉด ๋น„ํ™œ์„ฑ

ํ•™๊ตยท๊ต์œก์ฒญยท์‚ฌ๋‚ด๋ง์€ ์ž์ฒด์„œ๋ช… ๋ฃจํŠธ CA๋กœ TLS๋ฅผ ๊ฐ€๋กœ์ฑ•๋‹ˆ๋‹ค. ์ด ๋„๊ตฌ๋Š” ๊ฒ€์ฆ์„ ๋„์ง€ ์•Š๊ณ  truststore ๋กœ OS ์‹ ๋ขฐ์ €์žฅ์†Œ๋ฅผ ์‚ฌ์šฉํ•ด ํ†ต๊ณผํ•ฉ๋‹ˆ๋‹ค.


MCP ๋„๊ตฌ

๋„๊ตฌ์„ค๋ช…
nl_status์ธ์ฆํ‚ค ์œ ํšจ์„ฑ + API ์‹ค์ œ ์™•๋ณต 1ํšŒ ์ ๊ฒ€
nl_search์†Œ์žฅ์ž๋ฃŒ ๊ฒ€์ƒ‰ (totalยทtruncatedยทcap_hit ๋™๋ฐ˜)
nl_collect๊ฒ€์ƒ‰์–ด ํ•ฉ์ง‘ํ•ฉ ์ˆ˜์ง‘ โ†’ ํŒŒ์ผ ์ €์žฅ. save=false ๋ฉด ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋งŒ

์˜ˆ์‹œ

"๊ตญ๋ฆฝ์ค‘์•™๋„์„œ๊ด€์—์„œ '๊ต์œก๋ถˆํ‰๋“ฑ', '๊ต์œก๊ฒฉ์ฐจ', 'ํ•™๋ ฅ๊ฒฉ์ฐจ' ๊ด€๋ จ ๋‹จํ–‰๋ณธ์„ ๋ชจ์•„์„œ xlsx๋กœ ์ €์žฅํ•ด์ค˜"

nl_collect ๊ฐ€ ์„ธ ๊ฒ€์ƒ‰์–ด๋ฅผ ๊ฐ๊ฐ ์กฐํšŒํ•ด id ๊ธฐ์ค€์œผ๋กœ ํ•ฉ์ง‘ํ•ฉ์„ ๋งŒ๋“ค๊ณ , ์ƒํ•œ์— ๊ฑธ๋ฆฐ ๊ฒ€์ƒ‰์–ด๊ฐ€ ์žˆ์œผ๋ฉด meta.cap_hit_terms ๋กœ ์ง€๋ชฉํ•ฉ๋‹ˆ๋‹ค.

์ถœ๋ ฅ ํŒŒ์ผ๋ช…์€ ์ •๊ทœํ™”๋ฉ๋‹ˆ๋‹ค. name ์„ ์ง€์ •ํ•˜์ง€ ์•Š์œผ๋ฉด ๊ฒ€์ƒ‰์–ด๊ฐ€ ๊ทธ๋Œ€๋กœ ํŒŒ์ผ๋ช…์ด ๋˜๋ฏ€๋กœ, ๊ฒฝ๋กœ ๊ตฌ๋ถ„์žยท..ยท์œˆ๋„ ๊ธˆ์ง€๋ฌธ์ž๋Š” ์ œ๊ฑฐ๋˜๊ณ  ๊ฒฐ๊ณผ๋Š” ํ•ญ์ƒ out_dir ์•ˆ์—๋งŒ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ํ•œ๊ธ€ ํŒŒ์ผ๋ช…์€ ๊ทธ๋Œ€๋กœ ๋ณด์กด๋ฉ๋‹ˆ๋‹ค.


CLI

nl status
nl search ๊ต์œก๋ถˆํ‰๋“ฑ --category ๋„์„œ --rows 20
nl collect --terms ๊ต์œก๋ถˆํ‰๋“ฑ ๊ต์œก๊ฒฉ์ฐจ ํ•™๋ ฅ๊ฒฉ์ฐจ --category ๋„์„œ --format xlsx json

# 500 ์ƒํ•œ์„ ๋„˜๊ฒจ ๋ชจ์œผ๊ธฐ โ€” ์ •๋ ฌ ๋’ค์ง‘๊ธฐ๊ฐ€ ๊ฐ€์žฅ ๊ฐ’์‹ธ๋‹ค (7์š”์ฒญ์— 94%)
nl collect --kwd ๊ต์œก๋ณต์ง€ --category ๋„์„œ --sort-depth 3 --format xlsx

# ๋ถ„ํ• ๊ณผ ํ•จ๊ป˜ ์“ฐ๋ฉด ์ „์ˆ˜ ์ˆ˜์ง‘ (์‹ค์ธก 100%)
nl collect --kwd ๊ต์œก๋ณต์ง€ --category ๋„์„œ --auto-partition --sort-depth 1 --format xlsx

์‘๋‹ต ํ•„๋“œ

์ •๊ทœํ™” 25๊ฐœ ์ปฌ๋Ÿผ + ์›๋ณธ 24๊ฐœ ํ•„๋“œ(raw) ๋ณด์กด. ์ „์ฒด ํ‘œ์™€ ๊ฒฐ์ธก๋ฅ ์€ docs/NL_API_GUIDE.md ยง2 ์ฐธ์กฐ.

์ฃผ์˜ํ•  ํ•„๋“œ 2๊ฐ€์ง€ โ€” ์ด๋ฆ„์ด โ€ฆYn ์ด์ง€๋งŒ ๋ถˆ๋ฆฌ์–ธ์ด ์•„๋‹™๋‹ˆ๋‹ค:

  • docYn โ†’ doc_type: NL_VIEWER ยท LD_VIEWER ยท FILE ยท LINK ยท N
  • licYn โ†’ lic_code: L ยท F ยท S ยท D ยท N ยท Y

์›๋ฌธ ๋ณด์œ  ํŒ์ •์€ Holding.has_fulltext() ๋ฅผ ์“ฐ์„ธ์š”("N"ยท๋นˆ๊ฐ’๋งŒ ๊ฑฐ์ง“).


๊ฒ€์ฆ ์ƒํƒœ

  • โœ… ์‘๋‹ต ์Šคํ‚ค๋งˆ 24๊ฐœ ํ•„๋“œ โ€” ์‹ค์‘๋‹ต 1,124๊ฑด ์ „์ˆ˜ ์ง‘๊ณ„๋กœ ํ™•์ •
  • โœ… 500๊ฑด ์ƒํ•œ โ€” ๊ณต์‹ ์˜ค๋ฅ˜์ฝ”๋“œ + ์‹ค์ œ ์ˆ˜์ง‘ ๋กœ๊ทธ + ์˜คํ”„์…‹ ๊ธฐ์ค€๊นŒ์ง€ ์‹ค์ธก
  • โœ… ํ˜ธ์ถœ ๊ทœ๊ฒฉ ๋ผ์ด๋ธŒ ์ „์ˆ˜ ๊ฒ€์ฆ โ€” srchTarget ์ง€์›/ํด๋ฐฑ, category 12์ข…, sort ์ƒ‰์ธ ํ•„๋“œ๋ช…, ipub_year ์—ฐ๋„ ํ•„ํ„ฐ, f-์Šฌ๋กฏ ๋ถˆ๋ฆฌ์–ธ, ์˜ค๋ฅ˜ ๋ด‰ํˆฌ, 0๊ฑด ์‘๋‹ต ํ˜•ํƒœ. scripts/probe_api.py ๋กœ ์žฌํ˜„ ๊ฐ€๋Šฅ
  • โœ… ์˜คํ”„๋ผ์ธ ํšŒ๊ท€ 186๊ฑด ยท MCP stdio ํ•ธ๋“œ์…ฐ์ดํฌ ยท CI ์ฝœ๋“œ ์Šคํƒ€ํŠธ ์Šค๋ชจํฌ ยท ์ž์ฒด์™„๊ฒฐ ๋ฐ”์ด๋„ˆ๋ฆฌ ํด๋ฆฐ ํ™˜๊ฒฝ ๊ฒ€์ฆ
  • โš ๏ธ ์„œ๋ฒ„์ธก ์—ฐ๋„ ๋ฒ”์œ„(from~to) ํ•„ํ„ฐ๋งŒ ๋ฏธํ™•์ธ โ€” ๋‹จ์ผ ์—ฐ๋„(ipub_year)๋Š” ๋™์ž‘ํ•ฉ๋‹ˆ๋‹ค

๋ผ์ด์„ ์Šค

MIT

Reviews

No reviews yet

Be the first to review this server!