MCP server for reading, editing, and creating HWPX (한컴오피스) documents
14 tools with clear verb-noun naming and consistent parameter descriptions. All tools have input schemas with type definitions. However, descriptions are generic and lack LLM-optimized guidance on WHEN to use each tool, dependencies, and error recovery. Output schemas are undocumented, LLMs cannot predict return structure. No error handling guidance. Parameter descriptions are minimal (10-30 chars) and lack constraints, ranges, or format specifications. Missing idempotency hints for destructive operations. No pagination support despite list_paragraphs returning unbounded results.
Add a paragraph with the given text to the end of the document.
Add a table to the document. Args: doc_id: Document identifier. rows: Number of rows. cols: Number of columns. cell_data: Optional 2D list of cell text values (rows × cols).
Close a document and release it from memory.
Create a new empty HWPX document. Returns a doc_id.
Find XML elements in the document by tag name. Useful for inspecting low-level document structure.
Get structural summary of a document (sections, paragraphs, etc.).
Get document content as text, html, or markdown. Args: doc_id: Document identifier. format: Output format — "text", "html", or "markdown".
Output schemas undocumented. LLMs cannot predict return structure (e.g., get_document_text returns string, get_document_info returns dict with 'total_sections'/'total_paragraphs'/'sections' array). Agents cannot plan downstream operations or extract required fields.
Parameter descriptions are minimal (10-30 chars) and lack actionable constraints. 'format' param in get_document_text lacks enum constraint; 'rows'/'cols' in add_table lack min/max bounds; 'tag' in find_by_tag lacks format guidance. LLMs cannot self-correct invalid inputs.
No error handling guidance. Destructive operations (remove_paragraph, replace_text) lack recovery hints. If remove_paragraph fails with 'index out of range', LLM has no guidance on next step. No confirmation/dry-run pattern for irreversible operations.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2026-07-28+ | v2 |
List all currently open documents with their doc_ids and file paths.
List all paragraphs with their index and a text preview. Note: Paragraph indices may change after add/remove operations. Always call this to get current indices before using remove_paragraph.
Open a HWPX file. Returns a doc_id for subsequent operations.
Remove a paragraph by index. Use list_paragraphs first to get current indices.
Replace all occurrences of old_text with new_text across the document.
Save a document. If path is omitted, saves to the original location.
Set header and/or footer text for the document.
Tool descriptions lack WHEN-to-use guidance and dependencies. 'list_paragraphs' warns indices change after add/remove but doesn't explain why agents should call it before remove_paragraph. No hints on tool composition (e.g., 'call list_paragraphs first to get current indices').
No pagination or result limits. list_paragraphs and find_by_tag return unbounded arrays. If a document has 10,000 paragraphs, list_paragraphs returns all 10,000 items, exhausting context window. No limit, offset, or cursor parameters.