LLM-friendly document template editing (DOCX/PPTX/HWPX/XLSX) with MCP server and Claude API tool-use support
Strong tool definitions with comprehensive schemas and detailed descriptions. All 10 tools have explicit input schemas with typed parameters and descriptions. Tool names follow verb_noun convention (inspect_, render_, get_, set_, append_). Descriptions are detailed (100-300+ chars) and explain WHEN to use each tool. However, output schemas are not documented, LLMs cannot predict return structure. Error handling guidance is minimal. Some parameter descriptions are in Korean, limiting accessibility. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels (READ_ONLY vs WRITE).
표 끝에 새 행을 추가한다. DOCX / PPTX / HWPX 모두 지원 (v0.5+). 마지막 행을 deepcopy 해 스타일/서식 상속. 제약: 마지막 행이 위 행의 rowSpan 영역에 걸쳐있으면 거부.
기존 셀 텍스트 뒤에 separator + value를 덧붙인다. 한국 관공서 폼처럼 '성 명' 같은 라벨 셀 뒤에 값을 붙이는 용도로 유용. 빈 셀이면 separator 없이 value만 기록. set_cell과 동일하게 병합 anchor만 수정 가능.
셀 하나의 전체 내용과 병합/중첩 메타를 반환한다. inspect_document의 preview는 max_cell_len으로 잘리지만 get_cell은 전체 텍스트를 돌려준다. 병합 영역 내부의 non-anchor 좌표로 호출해도 에러 없이 anchor 셀의 내용을 반환한다 (is_anchor=false, anchor/span 필드로 구조 확인 가능). nested_table_indices: 셀 안에 중첩 테이블이 있을 경우 그 flat index 목록 (DOCX/HWPX).
**PPTX 전용**. 슬라이드의 차트 목록과 각 차트의 카테고리/시리즈 수치를 반환한다. 차트는 inspect_document 의 tables 나 get_shapes 에 나타나지 않으므로, 차트 수치를 확인/편집하려면 반드시 이 도구로 slide_index + shape_id 를 파악해야 한다. editable=false 인 차트는 읽기 전용 (warning 필드에 이유 — scatter/bubble, 날짜축, 콤보 등).
**PPTX 전용**. 표 외 shape (textbox / placeholder / 도형 내 텍스트) 목록을 반환한다. PPTX 는 17 슬라이드에 걸쳐 표 4 개 외에 수십 개의 textbox / placeholder 로 내용이 채워져 있으므로, 전체 편집에는 get_tables 만으로 부족하다. 반환: shapes[] — 각 항목에 slide_index (1-based), shape_id (슬라이드 내 고유 숫자), name, kind (placeholder/text_box), text/text_preview, placeholder_type. DOCX/HWPX 는 빈 리스트 반환 (표와 paragraph 중심이라 shape 편집 개념 약함).
Output schemas not documented. LLMs cannot predict return structure (fields, types, pagination). Tools return JSON but no schema is visible in definitions.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are marked READ_ONLY or WRITE in metadata but not in schema. LLMs cannot infer safety/idempotency.
Error handling guidance missing. Tools document error conditions (MergedCellWriteError, missing keys) but do not guide LLM recovery. No actionable error messages visible.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | <=2025-11-25 | v2 |
문서(.docx/.pptx/.hwpx)의 구조를 분석한다. placeholders({{key}} 태그 목록)와 tables(각 표의 행/열/미리보기)를 반환한다. LLM이 어떤 필드를 채우거나 수정할지 판단할 때 먼저 호출해야 한다. **PPTX 특화**: 반환 JSON 에 `shape_summary` (total_shapes / empty_shapes / hint) 포함. `hint` 가 있으면 그 지시 를 따라 get_shapes + set_shape_text 를 호출해야 보고서가 완성됨. 표만 채우면 대부분의 보고서가 비어있는 상태로 남음.
문서의 {{key}} placeholder를 context의 값으로 치환해 새 파일로 저장한다. DOCX는 docxtpl(Jinja2 loop/if 지원), PPTX/HWPX는 단순 {{key}} 치환. 결과로 rendered_keys / missing_keys(context에 없던 키)를 반환. on_missing 으로 누락 키 처리 방식을 3포맷 동일하게 제어.
특정 표의 셀 값을 교체한다. table_index는 inspect_document의 tables 배열 인덱스. 3개 포맷(DOCX/PPTX/HWPX) 모두 병합 셀을 인지한다: inspect_document의 tables[i].merges에 나온 anchor 좌표로만 수정 가능. 병합 영역 내부의 non-anchor 좌표로 호출하면 MergedCellWriteError(ValueError 호환)가 발생하며, preview의 해당 슬롯은 null로 표시된다.
**PPTX 전용**. 차트의 수치를 편집한다 (서식/색/축/범례는 유지). get_charts 로 slide_index + shape_id 와 현재 데이터를 확인 후 호출. 두 모드 중 하나만 사용: (a) **일부 수치만 수정** → set_points=[{series:'매출', category:'3분기', value:999}] — series/category 는 이름 또는 0-based 인덱스. (b) **전체 교체** (카테고리 추가/삭제, 시리즈 개수 변경 포함) → categories + series=[{name, values}] (values 길이 == categories 수). title 만 단독 지정하면 차트 제목만 변경. 반환의 before/after 로 결과를 즉시 검증할 것.
**PPTX 전용**. shape (textbox/placeholder) 의 텍스트를 교체한다. run-level 포맷 (폰트/크기/색상) 은 보존. get_shapes 로 slide_index + shape_id 파악 후 호출. 표 셀은 이 도구 아닌 set_cell 을 쓸 것.
Descriptions in Korean limit accessibility for non-Korean-speaking developers and LLMs. English descriptions are essential for tool discovery and LLM reasoning.
set_chart_data has complex conditional logic (set_points vs categories+series modes) but parameter relationships are not explicitly documented. LLMs may pass both modes simultaneously.