OpenKnowledge
OFFICIAL SERVERLets an assistant search, write, edit and organise a local Markdown knowledge base
Reads, checks, fills and generates Korean HWP, HWPX, PDF and Office documents as Markdown
By 딴짓하는 류주임 (individual) TypeScript Local · stdio ProductivityFiles and storage
90 popularity score ★ 2.9k ↓ 64k/wk
Opens the app, which asks before it adds the server.
claude mcp add kordoc -- npx -y kordoc mcp{
"mcpServers": {
"kordoc": {
"command": "npx",
"args": [
"-y",
"kordoc",
"mcp"
]
}
}
}{
"mcpServers": {
"kordoc": {
"command": "npx",
"args": [
"-y",
"kordoc",
"mcp"
]
}
}
}{
"servers": {
"kordoc": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"kordoc",
"mcp"
]
}
}
}[mcp_servers.kordoc]
command = "npx"
args = ["-y", "kordoc", "mcp"]gemini mcp add --scope user kordoc npx -- -y kordoc mcpKORDOC_ROOT |
Optional: Directory the MCP server's file access is confined to; no limit when unset. |
|---|---|
KORDOC_OFFLINE |
Optional: Set to 1 (or true/yes/on) to block model downloads and webhooks before they are tried. |
kordoc turns Korean documents (HWP 3.x and 5.x, HWPX, HWPML, PDF, XLS/XLSX, DOCX, PPTX and PNG/JPG/WebP images) into Markdown and structured data. It comes as a JavaScript library, a command-line tool and an MCP server. It reads Hancom files itself, so Hancom Office does not need to be installed.
Start the MCP server with `npx -y kordoc mcp` and you get 22 tools (counted in src/mcp.ts and its six tool modules). Besides parsing whole documents, page ranges, single tables, metadata or RAG chunks, it can diff two documents, read and fill form fields, and write edited Markdown back into the original HWPX or HWP. It also generates HWPX from Markdown, places seals, adds memos, masks personal data, and renders pages to images, SVG, HTML or PDF so the output can be checked. Newer additions are `convert_to_hwpx`, which turns an HWP file into HWPX, and agency packs: `build_agency_pack` learns one office's house style from a few of its HWPX files and saves it as a .kpack that `generate_document` can then write with. `lint_document` checks date, amount and loanword notation on every run, and can also check bullet style, AI-style phrasing, report structure, figures and budget sums when asked.
`npx -y kordoc setup` registers the server in installed clients such as Claude Desktop, Claude Code, Cursor and Codex. OCR for scanned pages runs on the local CPU without an API key. According to src/shared/offline.ts, the only outside traffic is the first download of OCR and formula models from huggingface.co and the CLI's `watch --webhook` URL. KORDOC_OFFLINE=1 blocks both before they are tried, and KORDOC_ROOT confines file access to one directory (no limit when unset).
| Runtime | Node.js 20+ |
|---|---|
| Runs on | macOS, Windows, Linux |
Suits people who work with Korean public-sector or office documents in HWP/HWPX and want an assistant to read, check, fill or draft them on their own machine, without Hancom Office and without sending files to a hosted service. Because it writes files and has no folder limit by default, set KORDOC_ROOT (and KORDOC_OFFLINE on closed networks) before pointing it at a shared disk. If you only need plain-text extraction from common Office formats, a general converter may be lighter; kordoc's value is the Hancom formats and Korean official-document tooling.
10 only read, 12 change things. A ? marks an optional parameter.
parse_documentdetect_formatparse_metadataparse_pagesparse_tablecompare_documentsparse_chunksparse_formfill_form changesplace_seal changesadd_memo changesfile_path: stringanchor: stringtext: stringauthor?: stringoccurrence?: integeroutput_path: stringpatch_document changesredact_document changesrender_document changescrop_regions changesextract_tables changesextract_profile changesgenerate_document changesbuild_agency_pack changessample_paths: arrayname: stringkind?: stringoutput_path: stringinto_path?: stringagency_pack_infopack_path: stringlint_documenttext?: stringfile_path?: stringblocks?: arraymunche?: booleanslop?: booleanlogic?: booleannumbers?: booleanbudget?: booleangate?: booleanpreset?: stringconvert_to_hwpx changesfile_path: stringoutput_path?: stringpassword?: string