Metadata-Version: 2.4
Name: sokgi-mcp
Version: 0.1.1
Summary: Sokgi — read and write Korean business documents (HWP/HWPX) from your AI agent; files stay on your machine
Project-URL: Homepage, https://sokgi.14dimension.com
Project-URL: Console, https://sokgi.14dimension.com/console
Author-email: 14Dimension <admin@14dimension.com>
License: MIT
Keywords: ai-agent,claude,codex,document,hancom,hwp,hwpx,korean,mcp
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Natural Language :: Korean
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Topic :: Office/Business
Classifier: Topic :: Text Processing :: Markup
Requires-Python: >=3.10
Requires-Dist: mcp>=1.2.0
Requires-Dist: olefile>=0.47
Description-Content-Type: text/markdown

# 속기 (Sokgi) — MCP server

Korean business documents your AI agent can actually read.

An LLM will happily write a parser for `.hwpx` — and on real Korean government documents it
gets **27.9% of tables wrong**, silently. One unhandled merged cell shifts a whole row, so
"담당 부서" comes back as "담당자". Nothing errors.

Sokgi restores tables properly — **on your machine** — and hands your agent the fields it
asked for.

## Tools

| Tool | What it does |
|---|---|
| `read_document(paths)` | Parse locally → text + tables as 0-based grids, merged cells expanded |
| `extract_documents(paths, fields)` | Pull named fields out of a batch of documents |
| `fill_document(template, values, out_path)` | Fill a HWPX template, save a new file |

Formats: **HWPX / DOCX / XLSX / PPTX** (text + tables) and **HWP 5.0** (text). No Hancom Office
required — reading uses a pure-Python OLE parser, writing produces HWPX (ZIP + XML).
PDF is not supported; asking for one returns an explicit error, not an empty document.

## Install

```bash
claude mcp add sokgi --env SOKGI_API_KEY=<key> -- uvx sokgi-mcp
```

Get a free key at <https://sokgi.14dimension.com/console>.

## Why it abstains

A field that is not in the document comes back `null` and listed in `missing` — never invented.
You delegate precisely because you cannot re-check every file, so a confident guess is worse
than useless. Likewise `fill_document` refuses to save a document with unreplaced placeholders
or a table too narrow for its text.

**Files never leave your machine.** Only the extracted text and tables are sent, and only for
`extract_documents`; the other two tools make no network call beyond a licence check.

---

Part of the 명철 (MyungChul) series · <https://ai.14dimension.com> · admin@14dimension.com
