nl-openapi-mcp
Summary: An MCP/CLI server for searching and collecting National Library of Korea holdings, with export to xlsx/csv/json/sqlite.
Check API key validity and real API connectivity with
nl_status.Search holdings by keyword, exact phrase, target field (
title,author,publisher,keyword,total), category, page/rows, and arbitrary extra API parameters vianl_search.See
total,truncated, andcap_hitflags so the APIโs 500-record ceiling is not mistaken for a complete result set.Collect a union of multiple search terms or a single keyword with
nl_collect, deduplicating records and optionally previewing without saving.Export collected records to xlsx/csv/json/sqlite, with control over filename, output directory, records, and formats.
Apply local post-filters with
containsandyear_from/year_to; these do not bypass the 500-record server cap.Attempt cap workarounds with
auto_partitionandpartition_depth(1โ3), though total collection is still not guaranteed.Use
exact=Trueonly for known-title lookups; it is discouraged for broad corpus collection due to large recall loss.Run over stdio, SSE, or Streamable HTTP, but HTTP mode has no authentication and should stay on trusted networks/loopback.
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., "@nl-openapi-mcp search for books on artificial intelligence"
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.
nl-openapi-mcp
๐ ์ฌ์ฉ๋ โ ์ต๊ทผ 14์ผ ์กฐํ 0ํ(๊ณ ์ 0) ยท ํด๋ก 0ํ(๊ณ ์ 0) ยท ๋ฆด๋ฆฌ์ค ์์ฐ ๋์ ๋ค์ด๋ก๋ โ
2026-11-13 ์๋ ๊ฐฑ์ ยท ์ ์ฒด ์ด๋ ฅ์
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 ์ ํจ๊ป ์ฃ๊ณ , ์ํ์ ๊ฑธ๋ฆฌ๋ฉด ์ฒ๋ฐฉ๊น์ง ๋ฌธ์ฅ์ผ๋ก ์๋ ค์ค๋๋ค.
์ ํธ | ๋ป | ์ฒ๋ฐฉ |
| ์ด๋ฒ ํธ์ถ์ด | ๋๊ฐ |
|
|
|
| ์ํ์ ๊ฑธ๋ฆฐ ๊ฒ์์ด ๋ชฉ๋ก | ๊ทธ ๊ฒ์์ด๋ง ์ธ๋ถํ |
์ํ์ ๋๊ฒจ ๋ชจ์ผ๋ ๋ฐฉ๋ฒ โ ํจ๊ป ์ฐ๋ฉด ์ ์ ์์ง์ด ๋ฉ๋๋ค
๊ต์ก๋ณต์ง/๋์(1,856๊ฑด) ๋ผ์ด๋ธ ์ค์ธก:
์ค์ | ํ์ | ๋น์จ | ์์ฒญ |
์ฐํ ์์ | 500 | 27% | 1 |
| 1,746 | 94% | 7 |
| 1,854 | 100% | 24 |
sort_depth ๊ฐ ๋น์ฉ ๋๋น ํจ๊ณผ๊ฐ ์๋์ ์
๋๋ค โ ๊ฐ์ ๊ฒ์์์ ์ ๋ ฌ ์์๋ง ๋ฐ๊ฟ ๋ค์ ํ๋๋ฐ,
asc ์ desc ์ ๊ต์งํฉ์ด 0๊ฑด์ด๋ผ ์ ๋ ฌ์ถ ํ๋๊ฐ ์ํ์ ์ฌ์ค์ 2๋ฐฐ๋ก ๋๋ฆฝ๋๋ค.
๋ถํ (auto_partition)๊ณผ ์ง๊ตํ๋ฏ๋ก ํจ๊ป ์ธ ์ ์์ต๋๋ค.
โ auto_partition=True โ ์๋ฒ์ธก ์ถ์ผ๋ก ์ฌ๊ท ๋ถํ
์๋ต ํ๋๋ช
์ ํ๋ผ๋ฏธํฐ๋ก ๋๊ฒจ๋ณด๋ ๋ฐฉ์์ผ๋ก ์ค์ ๋์ํ๋ ์ถ 3๊ฐ๋ฅผ ์ฐพ์์ต๋๋ค:
category โ manageName(๋ ๋ค ์์ ๋ถํ ) โ licYn. ์ํ์ ๊ฑธ๋ฆฐ ์กฐ๊ฐ๋ง ๋ค์ ์ถ์ผ๋ก ๋ ์ชผ๊ฐ๊ณ ,
๋ถ๋ชจ ์กฐ๊ฐ๋ ํฉ์งํฉ์ ๋ฃ์ด ๋ถ์์ ํ ์ถ์ ์จ๋ ์ํด๊ฐ ๋์ง ์๊ฒ ํ์ต๋๋ค.
๊ต์ก๋ณต์ง(์ ์ฒด 7,028๊ฑด) ์ค์ธก:
๊น์ด | ์ถ | ํ์ | ๋น์จ | ์์ฒญ |
โ | ๋ถํ ์์ | 500 | 7% | 1 |
1 |
| 2,134 | 30% | 13 |
2 |
| 3,265 | 46% | 25 |
3 |
| 4,722 | 67% | 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
Related MCP server: kci-openapi-mcp
์ค์น
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 ๋ฉ๋๋ค)ํ๊ฒฝ๋ณ์ | ๊ธฐ๋ณธ๊ฐ | ์ค๋ช |
| (ํ์) | ๊ตญ๋ฆฝ์ค์๋์๊ด ์คํAPI ์ธ์ฆํค |
|
| ๊ต์ก๋งยท์ฌ๋ด๋ง SSL ์ธํฐ์
์
๋์(OS ์ ๋ขฐ์ ์ฅ์ ์ฌ์ฉ). |
ํ๊ตยท๊ต์ก์ฒญยท์ฌ๋ด๋ง์ ์์ฒด์๋ช ๋ฃจํธ CA๋ก TLS๋ฅผ ๊ฐ๋ก์ฑ๋๋ค. ์ด ๋๊ตฌ๋ ๊ฒ์ฆ์ ๋์ง ์๊ณ
truststore๋ก OS ์ ๋ขฐ์ ์ฅ์๋ฅผ ์ฌ์ฉํด ํต๊ณผํฉ๋๋ค.
MCP ๋๊ตฌ
๋๊ตฌ | ์ค๋ช |
| ์ธ์ฆํค ์ ํจ์ฑ + API ์ค์ ์๋ณต 1ํ ์ ๊ฒ |
| ์์ฅ์๋ฃ ๊ฒ์ ( |
| ๊ฒ์์ด ํฉ์งํฉ ์์ง โ ํ์ผ ์ ์ฅ. |
์์
"๊ตญ๋ฆฝ์ค์๋์๊ด์์ '๊ต์ก๋ถํ๋ฑ', '๊ต์ก๊ฒฉ์ฐจ', 'ํ๋ ฅ๊ฒฉ์ฐจ' ๊ด๋ จ ๋จํ๋ณธ์ ๋ชจ์์ 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ยทNlicYnโlic_code:LยทFยทSยทDยทNยทY
์๋ฌธ ๋ณด์ ํ์ ์ Holding.has_fulltext() ๋ฅผ ์ฐ์ธ์("N"ยท๋น๊ฐ๋ง ๊ฑฐ์ง).
๊ฒ์ฆ ์ํ
โ ์๋ต ์คํค๋ง 24๊ฐ ํ๋ โ ์ค์๋ต 1,124๊ฑด ์ ์ ์ง๊ณ๋ก ํ์
โ 500๊ฑด ์ํ โ ๊ณต์ ์ค๋ฅ์ฝ๋ + ์ค์ ์์ง ๋ก๊ทธ + ์คํ์ ๊ธฐ์ค๊น์ง ์ค์ธก
โ ํธ์ถ ๊ท๊ฒฉ ๋ผ์ด๋ธ ์ ์ ๊ฒ์ฆ โ
srchTarget์ง์/ํด๋ฐฑ,category12์ข ,sort์์ธ ํ๋๋ช ,ipub_year์ฐ๋ ํํฐ, f-์ฌ๋กฏ ๋ถ๋ฆฌ์ธ, ์ค๋ฅ ๋ดํฌ, 0๊ฑด ์๋ต ํํ.scripts/probe_api.py๋ก ์ฌํ ๊ฐ๋ฅโ ์คํ๋ผ์ธ ํ๊ท 186๊ฑด ยท MCP stdio ํธ๋์ ฐ์ดํฌ ยท CI ์ฝ๋ ์คํํธ ์ค๋ชจํฌ ยท ์์ฒด์๊ฒฐ ๋ฐ์ด๋๋ฆฌ ํด๋ฆฐ ํ๊ฒฝ ๊ฒ์ฆ
โ ๏ธ ์๋ฒ์ธก ์ฐ๋ ๋ฒ์(from~to) ํํฐ๋ง ๋ฏธํ์ธ โ ๋จ์ผ ์ฐ๋(
ipub_year)๋ ๋์ํฉ๋๋ค
๋ผ์ด์ ์ค
MIT
Available Tools
3 toolsnl_collectA
[์์ง] ๊ฒ์์ด๋ค์ ๊ฐ๊ฐ ์กฐํํด ํฉ์งํฉ์ผ๋ก ๋ชจ์ผ๊ณ ํ์ผ๋ก ์ ์ฅํ๋ค.
terms: ๋ณํ์ด ๋ชฉ๋ก(๊ฐ๊ฐ ๊ฐ๋ณ ๊ฒ์ ํ ํฉ์งํฉ). ๊ฒ์์ด๋ฅผ ์ชผ๊ฐค์๋ก 500๊ฑด ์ํ์ ๋ ๋ฐ์ผ๋ฏ๋ก
๋์ ๋ง ํ๋๋ณด๋ค ์ข์ ๋ง ์ฌ๋ฟ์ด ํ์๋์ด ๋ง๋ค.
kwd: ๋จ์ผ ๊ฒ์์ด(terms ๋์ ).
exact: ๐ด ์ฝํผ์ค ์์ง์๋ ์ฐ์ง ๋ง ๊ฒ. ๊ตฌ๋ฌธ๊ฒ์์ ํ ํฐ ์ธ์ ์ ์๊ตฌํด ํ๊ตญ์ด ๋ณตํฉ์ด๊ฐ
์กฐ์ฌยท์์์ด๋ก ๊ฐ๋ผ์ง ํ์ (๊ต์ก์ ํํ์ฑ)๋ฅผ ์ ๋ถ ๋์น๋ค. ์ค์ธก ์ฌํ์จ ์์ค ํ๊ท 47%,
์ต์
84%(๊ต์กํํ์ฑ 31โ5๊ฑด)์ด๊ณ ๋ฒ๋ ค์ง ๊ฒ์ 76%๊ฐ ๊ด๋ จ ๋ฌธํ์ด์๋ค.
๋ณํ์ด๋ฅผ ๋๋ ค๋ ํ๋ณต๋์ง ์๋๋ค(12/31). ์๋ฃ๋ฅผ ๋๊ฒ ๋ชจ์ผ๋ ค๋ฉด False ๋ก ๋๊ณ ๊ฑธ๋ฌ๋ด๊ธฐ๋
contains ํ์ฒ๋ฆฌ๋ก ํ๋ผ. exact ๋ ์ ์ฒด ํ์ ๋ฅผ ์๋ ํน์ ์๋ฃ ์กฐํ์ฉ์ด๋ค.
category: ๋์ยทํ์๋
ผ๋ฌธยท์ก์ง/ํ์ ์งยท๊ธฐ์ฌ ๋ฑ. โ ๏ธ "์ ์ฒด" ๋ ์ค๋ฅ(013) โ ์๋ตํ ๊ฒ.
auto_partition: 500 ์ํ ์ฐํ. ๊ฒ์์ด๊ฐ ์ํ์ ๊ฑธ๋ฆฌ๊ณ category ๋ฅผ ์ง์ ํ์ง ์์์ผ๋ฉด
์๋ฒ์ธก ์ถ์ผ๋ก ์ฌ๊ท ๋ถํ ํด ์ฌ์์งํ๋ค. ์ถ์ ์ค์ธก์ผ๋ก ์ฐพ์ 3๊ฐ๋ค โ
category โ manageName(๋ ๋ค ์์ ๋ถํ ) โ licYn(๊ฐ์ด ๋น ๋ ์ฝ๋๋ ๋ชป ์ก์).
์ํ์ ๊ฑธ๋ฆฐ ์กฐ๊ฐ๋ง ๋ค์ ์ถ์ผ๋ก ๋ ์ชผ๊ฐ๊ณ , ๋ถ๋ชจ ์กฐ๊ฐ๋ ํฉ์งํฉ์ ๋ฃ์ด ๋ถ์์ ํ
์ถ์ ์จ๋ ์ํด๊ฐ ๋์ง ์๊ฒ ํ๋ค.
partition_depth: ๋ถํ ๊น์ด(1~3, ๊ธฐ๋ณธ 2). ์ค์ธก ํ๋ณต๋(๊ต์ก๋ณต์ง ์ ์ฒด 7,028๊ฑด):
๋ถํ ์์ 500(7%) โ ๊น์ด1 2,134(30%) โ ๊น์ด2 3,265(46%) โ ๊น์ด3 4,722(67%).
โ ๏ธ ํธ์ถ ์๊ฐ ํจ๊ป ๋๋ค(13 โ 25 โ 60ํ). ๊น์ด 3์ ์ฝํผ์ค ์ ์์ฑ์ด ์ค์ํ ๋๋ง.
โ ๏ธ ์ ์๋ ์ฌ์ ํ ๋ถ๊ฐ๋ฅํ๋ค. meta.axes[].partition.unreachable ๊ณผ
still_capped ๊ฐ ๋ชป ๋ฐ์ ๊ฑด์์ ๋จ์ ์กฐ๊ฐ์ ๋ณด๊ณ ํ๋ค.
contains: ๊ฒฐ๊ณผ ํ
์คํธ ๋ถ๋ถ์ผ์น ํ์ฒ๋ฆฌ. year_from/year_to: ๋ฐํ์ฐ๋ ํํฐ.
formats: xlsx/csv/json/sqlite (๊ธฐ๋ณธ 3์ข
). save=false ๋ฉด ์ ์ฅ ์์ด ๋ฏธ๋ฆฌ๋ณด๊ธฐ๋ง.
out_dir ๋ฏธ์ง์ ์ ํ์ nl-output/. extra_params: ์์ API ํ๋ผ๋ฏธํฐ ์ ๋ฌ.
โ ๏ธ year_from/year_to/contains ๋ ๋ก์ปฌ ํ์ฒ๋ฆฌ๋ค โ ์ด๋ฏธ ๋ฐ์ ๋ ์ฝ๋์๋ง ๊ฑธ๋ฆฐ๋ค.
500๊ฑด ์ํ์ ํ์ด์ฃผ์ง ์๋๋ค. ์๋ฒ์ธก ์ฐ๋ ํํฐ๋ ์กด์ฌํ์ง ์๋๋ค(์ค์ธก:
startPubYearยทpubYearStart ๋ฑ 11๊ฐ ํ๋ณด ์ ๋ถ ๋ฌด์๋จ). ์ฐ๋๋ก ์ํ์ ์ฐํํ ์๋ ์๋ค.
โ ๏ธ meta.cap_hit_terms ์ ๊ฒ์์ด๊ฐ ์์ผ๋ฉด ๊ทธ ๊ฒ์์ด๋ 500๊ฑด์์ ์๋ฆฐ ๊ฒ์ด๋ค.
max_records ๋ฅผ ์ฌ๋ ค๋ ํด๊ฒฐ๋์ง ์๋๋ค โ ๊ฒ์์ด๋ฅผ ์ขํ๊ฑฐ๋ category ๋ก ์ชผ๊ฐค ๊ฒ.
meta.year_missing_dropped ๋ ๋ฐํ์ฐ๋๊ฐ ๋น์ด ์ฐ๋ ํํฐ์์ ํ๋ฝํ ๊ฑด์๋ค
(์ค์ธก 5.2%์ ๋ ์ฝ๋๋ pubYearInfo ๊ฐ ๋น์ด ์๋ค).
Inputs: kwd, name, save, exact, +12 more.
nl_searchARead-only
[์์ฅ์๋ฃ ๊ฒ์] ๊ตญ๋ฆฝ์ค์๋์๊ด ์์ฅ์๋ฃ๋ฅผ ๊ฒ์ํ๋ค.
kwd: ๊ฒ์์ด.
exact: True ๋ฉด ํฐ๋ฐ์ดํ ๊ตฌ๋ฌธ๊ฒ์(ํ ํฐ ์ธ์ ์๊ตฌ). ํน์ ์๋ฃ๋ฅผ ์ ํํ ์ฐพ์ ๋๋ง ์ธ ๊ฒ โ
์ฝํผ์ค ์์ง์๋ ๋ถ์ ํฉํ๋ค(์๋ ์ฐธ์กฐ).
srch_target: ์ค์ธก ์ง์๊ฐ โ title(์ ๋ชฉ) ยท author(์ ์) ยท publisher(๋ฐํ์) ยท
keyword(ํค์๋) ยท total(์ ํ๋).
โ ๏ธ isbnยทclassNoยทcallNo ๋ฑ ๋ฏธ์ง์ ๊ฐ์ ์ค๋ฅ๊ฐ ๋์ง ์๊ณ ์กฐ์ฉํ ์ ํ๋ ๊ฒ์์ผ๋ก
ํด๋ฐฑํ๋ค. ISBN ์ผ๋ก ์ฐพ์๋ค๊ณ ๋ฏฟ์ผ๋ฉด ์ค์ ๋ก๋ ์ ํ๋ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ๋๋ค
(์ค์ธก: srchTarget=isbn&kwd=์ค์ฑํ ์ด ์ ์ ๊ฒ์๊ณผ ๊ฐ์ 36๊ฑด์ ๋ฐํ).
ISBN ์ ์ฐพ์ผ๋ ค๋ฉด srch_target="total" ๋ก ๋๊ณ ISBN ๋ฌธ์์ด์ ๋ฃ๋ ํธ์ด ์ ์งํ๋ค.
category: ๋์ยท๊ณ ๋ฌธํยทํ์๋
ผ๋ฌธยท์ก์ง/ํ์ ์งยท์ ๋ฌธยท๊ธฐ์ฌยท๋ฉํฐ๋ฏธ๋์ดยท์ฅ์ ์ธ์๋ฃยท์น์ฌ์ดํธยท
ํด์ธ๊ธฐ๋ก๋ฌผยท์ธ๋ถ์ฐ๊ณ์๋ฃยท๊ธฐํ. โ ๏ธ "์ ์ฒด" ๋ ์ค๋ฅ(013) โ ์ ์ฒด ๊ฒ์์ ์๋ตํ ๊ฒ.
rows: ๋ฐํ ๊ฑด์(1~100, ๋ฌธ๋งฅ ์ ์ฝ์ ์ํ ๋๊ตฌ ์์ฒด ์ํ. API ๋ 500๊น์ง ๋ฐ๋๋ค).
extra_params: ์์ API ํ๋ผ๋ฏธํฐ ์ ๋ฌ.
โ ๏ธ ๊ธฐ๋ณธ ๊ฒ์์ ์ ๋ชฉ ๋ถ๋ถ์ผ์น๊ฐ ์๋๋ผ ํ ํฐ ๋งค์นญ + ์ ํฉ๋ ์ ๋ ฌ์ด๋ค.
๊ต์ก๋ถํ๋ฑ ์ ๊ต์กยท๋ถํ๋ฑ ์ผ๋ก ์ชผ๊ฐ์ ธ ๋ ์ค ํ๋๋ง ๋ ์ ๋ชฉ๋ ํ์๋๋ค.
โ ๏ธ exact=True ๋ ์ฌํ์จ์ ํฌ๊ฒ ๋จ์ด๋จ๋ฆฐ๋ค โ ์ค์ธก 6๊ฐ ๊ฒ์์ด์์ ํ๊ท 47% ์์ค,
์ต์
84%(๊ต์กํํ์ฑ 31๊ฑด โ 5๊ฑด). ํ๊ตญ์ด ๋ณตํฉ์ด๊ฐ ํ์ ์์ ์กฐ์ฌยท์์์ด๋ก ๊ฐ๋ผ์ง๊ธฐ
๋๋ฌธ์ด๋ค(๊ต์ก์ ํํ์ฑ, ์ด์ค๋ฑ๊ต์ก์ ํํ์ฑ๊ณผ) โ ๊ตฌ๋ฌธ๊ฒ์์ ์ธ์ ์ ์๊ตฌํ๋ค.
๋ฒ๋ ค์ง๋ ๊ฒ์ 76%๊ฐ ๊ตฌ์ฑ์ด๋ฅผ ๋ชจ๋ ํฌํจํ ๊ด๋ จ ๋ฌธํ์ด์๋ค.
โ ์๋ฃ๋ฅผ ๋๊ฒ ๋ชจ์ ๋๋ ์ฐ์ง ๋ง๊ณ , ์ ์ฒด ํ์ ๋ฅผ ์๋ ํน์ ์๋ฃ ์กฐํ์๋ง ์ธ ๊ฒ.
AND/OR/NOT ์ ์ฐ์ฐ์๊ฐ ์๋๋ผ ๊ทธ๋ฅ ํ ํฐ์ด๋ค(AND ๋จ๋
๊ฒ์ ์ 451,670๊ฑด).
โ ๏ธ total ์ ๊ตญ๋ฆฝ์ค์๋์๊ด์ด ๋ณด๊ณ ํ ์ ์ฒด ๊ฑด์, truncated ๋ ์ด๋ฒ ์๋ต์ด ๊ทธ๋ณด๋ค ์ ๋ค๋ ๋ป.
cap_hit=true ๋ ๋ค๋ฅด๋ค โ total ์ด 500์ ๋์ด 501๋ฒ์งธ๋ถํฐ๋ ์ด๋ค ํ์ด์ง์ผ๋ก๋
๋ฐ์ ์ ์๋ค(๋ ์ฝ๋ ์คํ์
๊ธฐ์ค ์ํ, ์ค์ธก ํ์ธ). ๊ทธ ๊ฒฝ์ฐ ๊ฒ์์์ ์ชผ๊ฐ์ผ ํ๋ค.
๋น records ๋ฅผ '์๋ฃ ์์'์ผ๋ก ์ค๋
ํ์ง ๋ง๊ณ total ์ ํจ๊ป ๋ณผ ๊ฒ.
Inputs: kwd (required), page, rows, exact, +3 more.
nl_statusARead-only
์ฐ๊ฒฐ ์ ๊ฒ โ ์ธ์ฆํค ๋ณด์ ์ฌ๋ถ + ์์ฅ์๋ฃ ๊ฒ์ API ์ค์ ์๋ณต 1ํ.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogโฆ
TDQS
Scored across 3 tools
Each tool has a distinct purpose: nl_status verifies connectivity, nl_search performs a single query, and nl_collect aggregates multiple searches with saving and partitioning. Though nl_search and nl_collect both search, their roles are clearly separated (single vs. batch), so an agent cannot confuse them.
All tool names share the consistent 'nl_' prefix and lowercase_snake_case format. While 'status' is a noun and 'search'/'collect' are verbs, the naming is predictable and each name directly reflects its function, making the pattern easy to infer.
Three tools is a well-scoped count for a library search MCP, providing essential operations without redundancy. Each tool carries substantial functionality, especially nl_collect which bundles complex features like recursive partitioning and filtering, so every tool earns its place.
The set covers the full lifecycle of searching and collecting library records: health check, individual search, and batch collection with export options. It also addresses API limitations (e.g., 500-record cap) through built-in partitioning and provides explicit workarounds, leaving no obvious gaps for the stated domain.
Maintenance
Related MCP Connectors
Seoul Open Data MCP โ city data for Seoul via the Seoul Open Data Plaza API (openapi.seoul.go.kr).โฆ
IEEE Xplore MCP โ BYOK wrapper over the IEEE Xplore Metadata Search APIโฆ
Search and retrieve bioRxiv and medRxiv preprints โ by DOI, date interval, or keyword โ via MCP.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables searching and collecting academic literature metadata from KISTI ScienceOn via Claude or CLI, supporting various document types and export formats.51MIT
- AlicenseAqualityBmaintenanceEnables searching and harvesting Korean Citation Index literature, citation indices, and references via REST API and OAI-PMH.74MIT
- AlicenseAqualityBmaintenanceExposes KCI and OAK Korean bibliographic services as MCP tools for searching, harvesting, and retrieving articles, references, and journal metrics.91MIT
- AlicenseAqualityBmaintenanceEnables searching the Kakao Daum Book Search API by title, author, publisher, or ISBN, retrieving detailed bibliographic and pricing metadata, and exporting results to xlsx, csv, json, or sqlite through MCP or CLI.41MIT