hwpx-mcp-server
MCP server for AI-driven editing of HWPX (Korean word processor) documents, providing 132 tools for text, tables, images, and more.
README
HWPX MCP Server
AI 도구(Claude, Cursor 등)와 연동하여 한글(HWPX) 문서를 자동으로 편집할 수 있는 MCP(Model Context Protocol) 서버입니다. 132개 도구를 제공합니다.
Cross-Platform Support
| OS | MCP 서버 | HWPX 편집 | 결과물 확인 |
|---|---|---|---|
| Windows | O | O | 한컴오피스 |
| macOS | O | O | 한컴오피스 Mac |
| Linux | O | O | 한컴오피스 Linux / LibreOffice* |
HWPX 파일은 ZIP + XML 구조이므로 한글 프로그램 없이도 Node.js만으로 읽고 쓸 수 있습니다. *LibreOffice는 HWPX를 제한적으로 지원합니다.
1. 설정
별도 설치 없이 MCP 클라이언트 설정만 추가하면 됩니다. (Node.js 18+ 필요)
Claude Desktop
설정 파일 위치:
| OS | 경로 |
|---|---|
| Windows | %APPDATA%\Claude\claude_desktop_config.json |
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Linux | ~/.config/Claude/claude_desktop_config.json |
설정 내용:
{
"mcpServers": {
"hwpx": {
"command": "npx",
"args": ["-y", "hwpx-mcp-server@latest"]
}
}
}
Claude Code (CLI)
macOS / Linux:
# 전역 설정 (모든 프로젝트에서 사용)
claude mcp add hwpx --scope user npx -y hwpx-mcp-server@latest
# 프로젝트별 설정
claude mcp add hwpx npx -y hwpx-mcp-server@latest
Windows:
# 전역 설정
claude mcp add hwpx --scope user -- npx -y hwpx-mcp-server@latest
# 프로젝트별 설정
claude mcp add hwpx -- npx -y hwpx-mcp-server@latest
Windows에서는
--를 넣어야-y옵션이 정상 전달됩니다.
Cursor
설정 파일: ~/.cursor/mcp.json
{
"mcpServers": {
"hwpx": {
"command": "npx",
"args": ["-y", "hwpx-mcp-server@latest"]
}
}
}
VS Code
설정 파일: .vscode/mcp.json
{
"servers": {
"hwpx": {
"command": "npx",
"args": ["-y", "hwpx-mcp-server@latest"]
}
}
}
Codex / Gemini CLI / 기타
{
"mcpServers": {
"hwpx": {
"command": "npx",
"args": ["-y", "hwpx-mcp-server@latest"]
}
}
}
2. 문서 작성 스킬 설치 (선택)
스킬 파일을 설치하면 AI가 build_document 도구를 활용하여 서식이 갖춰진 한글 문서를 한 번의 호출로 작성합니다.
스킬 파일 URL:
https://raw.githubusercontent.com/flamingo8006/hwpx-mcp/main/skills/hwpx-document-writer.md
Claude Code
macOS / Linux:
mkdir -p ~/.claude/skills/hwpx-document-writer
curl -o ~/.claude/skills/hwpx-document-writer/skill.md \
https://raw.githubusercontent.com/flamingo8006/hwpx-mcp/main/skills/hwpx-document-writer.md
Windows (PowerShell):
New-Item -ItemType Directory -Force -Path "$HOME\.claude\skills\hwpx-document-writer"
curl.exe -o "$HOME\.claude\skills\hwpx-document-writer\skill.md" `
https://raw.githubusercontent.com/flamingo8006/hwpx-mcp/main/skills/hwpx-document-writer.md
Claude Desktop
Claude Desktop은 공식적으로 커스텀 스킬을 지원하지 않습니다. 프로젝트 Custom Instructions 사용을 권장합니다:
- 위 URL에서 스킬 파일 내용을 복사
- Claude Desktop에서 프로젝트 생성
- 프로젝트 설정 → Custom Instructions 에 붙여넣기
기타 클라이언트 (Cursor / Codex / Gemini CLI)
위 URL에서 스킬 파일 내용을 복사하여 시스템 프롬프트에 포함시키면 동일한 효과를 얻을 수 있습니다.
3. 설치 확인
클라이언트 재시작 후 MCP 도구 목록에서 hwpx 서버와 132개 도구가 표시되면 성공입니다.
4. MCP 도구 목록 (132개)
문서 관리 (8개)
| 도구 | 설명 |
|---|---|
get_tool_guide |
도구 사용 가이드 조회 |
create_document |
새 빈 HWPX 문서 생성 |
open_document |
HWPX 문서 열기 |
close_document |
열린 문서 닫기 |
save_document |
문서 저장 (백업/무결성 검증 지원) |
list_open_documents |
현재 열린 문서 목록 |
get_document_metadata |
메타데이터 조회 (제목, 저자, 날짜) |
set_document_metadata |
메타데이터 수정 |
문서 조회 (9개)
| 도구 | 설명 |
|---|---|
get_document_text |
전체 텍스트 추출 |
get_document_structure |
문서 구조 (섹션/단락/테이블/이미지 수) |
get_document_outline |
문서 개요 (제목 기반) |
get_paragraphs |
단락 목록 조회 |
get_paragraph |
특정 단락 상세 정보 |
get_word_count |
글자수/단어수 통계 |
get_insert_context |
삽입 위치 컨텍스트 조회 |
find_insert_position_after_header |
제목 다음 삽입 위치 찾기 |
find_insert_position_after_table |
테이블 다음 삽입 위치 찾기 |
텍스트 편집 (11개)
| 도구 | 설명 |
|---|---|
insert_paragraph |
새 단락 삽입 |
update_paragraph_text |
단락 텍스트 수정 (전체 교체) |
update_paragraph_text_preserve_styles |
스타일 유지하며 텍스트 수정 |
append_text_to_paragraph |
기존 단락에 텍스트 추가 |
delete_paragraph |
단락 삭제 |
copy_paragraph |
단락 복사 |
move_paragraph |
단락 이동 |
format_text |
텍스트 포매팅 |
search_text |
텍스트 검색 (정규식, 테이블 셀 포함) |
replace_text |
텍스트 찾아 바꾸기 |
find_paragraph_by_text |
텍스트로 단락 찾기 |
일괄 처리 (2개)
| 도구 | 설명 |
|---|---|
batch_replace |
여러 텍스트 일괄 치환 |
batch_fill_table |
테이블 여러 셀 일괄 채우기 |
서식 - 문자/문단 스타일 (10개)
| 도구 | 설명 |
|---|---|
get_text_style |
문자 스타일 조회 (폰트/크기/색상) |
set_text_style |
문자 스타일 설정 |
get_paragraph_style |
문단 스타일 조회 (정렬/줄간격/여백) |
set_paragraph_style |
문단 스타일 설정 |
get_styles |
문서 스타일 목록 |
get_char_shapes |
문자 모양(CharShape) 정의 |
get_para_shapes |
문단 모양(ParaShape) 정의 |
apply_style |
단락에 스타일 적용 |
get_column_def |
단(Column) 설정 조회 |
set_column_def |
단 설정 변경 (다단 편집) |
번호/불릿 매기기 (3개)
| 도구 | 설명 |
|---|---|
get_numbering_defs |
번호 매기기 정의 목록 |
get_bullet_defs |
불릿 정의 목록 |
set_numbering |
번호/불릿 목록 스타일 적용 |
내어쓰기 (8개)
| 도구 | 설명 |
|---|---|
get_hanging_indent |
내어쓰기 조회 |
set_hanging_indent |
내어쓰기 설정 |
set_auto_hanging_indent |
자동 내어쓰기 |
remove_hanging_indent |
내어쓰기 제거 |
get_table_cell_hanging_indent |
셀 내어쓰기 조회 |
set_table_cell_hanging_indent |
셀 내어쓰기 설정 |
set_table_cell_auto_hanging_indent |
셀 자동 내어쓰기 |
remove_table_cell_hanging_indent |
셀 내어쓰기 제거 |
테이블 (29개)
| 도구 | 설명 |
|---|---|
get_tables |
테이블 목록 |
get_table |
테이블 상세 데이터 |
get_table_cell |
특정 셀 내용 |
get_table_as_csv |
테이블을 CSV로 추출 |
get_table_map |
테이블 구조 맵 |
get_tables_summary |
테이블 요약 정보 |
get_tables_by_section |
섹션별 테이블 |
get_cell_context |
셀 컨텍스트 정보 |
find_table_by_header |
헤더로 테이블 찾기 |
find_cell_by_label |
라벨로 셀 찾기 |
find_empty_tables |
빈 테이블 찾기 |
get_element_index_for_table |
테이블 요소 인덱스 |
fill_by_path |
경로 기반 셀 채우기 |
insert_table |
테이블 삽입 |
insert_nested_table |
중첩 테이블 삽입 (표 안에 표) |
delete_table |
테이블 삭제 |
update_table_cell |
셀 수정 |
replace_text_in_cell |
셀 내 텍스트 치환 |
set_cell_properties |
셀 속성 설정 (크기/배경/정렬) |
set_cell_background_color |
셀 배경색 설정 |
set_column_widths |
열 너비 설정 |
insert_table_row |
행 추가 |
delete_table_row |
행 삭제 |
insert_table_column |
열 추가 |
delete_table_column |
열 삭제 |
merge_cells |
셀 병합 |
split_cell |
셀 분할 |
copy_table |
테이블 복사 |
move_table |
테이블 이동 |
이미지 (7개)
| 도구 | 설명 |
|---|---|
get_images |
이미지 목록 |
insert_image |
이미지 삽입 |
insert_image_in_cell |
테이블 셀에 이미지 삽입 |
update_image_size |
이미지 크기 변경 |
delete_image |
이미지 삭제 |
render_mermaid |
Mermaid 다이어그램 삽입 |
render_mermaid_in_cell |
셀에 Mermaid 다이어그램 삽입 |
도형 (3개)
| 도구 | 설명 |
|---|---|
insert_line |
선 도형 삽입 |
insert_rect |
사각형 도형 삽입 |
insert_ellipse |
타원 도형 삽입 |
머리글/바닥글 (4개)
| 도구 | 설명 |
|---|---|
get_header |
머리글 조회 |
set_header |
머리글 설정 |
get_footer |
바닥글 조회 |
set_footer |
바닥글 설정 |
각주/미주 (4개)
| 도구 | 설명 |
|---|---|
get_footnotes |
각주 목록 |
insert_footnote |
각주 삽입 |
get_endnotes |
미주 목록 |
insert_endnote |
미주 삽입 |
북마크/하이퍼링크 (4개)
| 도구 | 설명 |
|---|---|
get_bookmarks |
북마크 목록 |
insert_bookmark |
북마크 삽입 |
get_hyperlinks |
하이퍼링크 목록 |
insert_hyperlink |
하이퍼링크 삽입 |
수식/메모 (5개)
| 도구 | 설명 |
|---|---|
get_equations |
수식 목록 |
insert_equation |
수식 삽입 |
get_memos |
메모 목록 |
insert_memo |
메모 삽입 |
delete_memo |
메모 삭제 |
섹션/페이지 (6개)
| 도구 | 설명 |
|---|---|
get_sections |
섹션 목록 |
insert_section |
섹션 삽입 |
delete_section |
섹션 삭제 |
get_page_settings |
페이지 설정 조회 |
set_page_settings |
페이지 설정 변경 |
insert_page_break |
페이지 나누기 삽입 |
내보내기 (2개)
| 도구 | 설명 |
|---|---|
export_to_text |
텍스트 파일로 내보내기 |
export_to_html |
HTML 파일로 내보내기 |
실행 취소 (2개)
| 도구 | 설명 |
|---|---|
undo |
실행 취소 |
redo |
다시 실행 |
검색/인덱싱 (8개)
| 도구 | 설명 |
|---|---|
chunk_document |
문서 청킹 |
search_chunks |
청크 검색 |
get_chunk_context |
청크 컨텍스트 |
get_chunk_at_offset |
오프셋 청크 조회 |
extract_toc |
목차 추출 |
build_position_index |
위치 인덱스 빌드 |
get_position_index |
위치 인덱스 조회 |
search_position_index |
위치 인덱스 검색 |
고급/디버깅 (7개)
| 도구 | 설명 |
|---|---|
get_section_xml |
섹션 XML 조회 |
set_section_xml |
섹션 XML 설정 |
get_raw_section_xml |
원본 섹션 XML 조회 |
set_raw_section_xml |
원본 섹션 XML 설정 |
analyze_xml |
XML 구조 분석 |
repair_xml |
XML 복구 |
invalidate_reading_cache |
읽기 캐시 무효화 |
5. 사용 예시
예시 1: 기본 문서 편집
사용자: report.hwpx 열어서 3번째 단락 텍스트를 수정해줘
AI 동작:
1. open_document("report.hwpx")
2. get_paragraphs(section_index=0) → 단락 목록 확인
3. update_paragraph_text(section=0, paragraph=2, text="수정된 내용")
4. save_document()
예시 2: 테이블 셀 수정
사용자: 사업계획서.hwpx에서 3번째 테이블의 2행 1열을 수정해줘
AI 동작:
1. open_document("사업계획서.hwpx")
2. get_tables() → 테이블 목록 확인
3. get_table(section=0, index=2) → 구조 확인
4. update_table_cell(section=0, table=2, row=1, col=0, text="수정 내용")
5. save_document()
예시 3: 스타일 복사 후 새 단락 추가
사용자: 기존 양식의 스타일을 참고해서 새 문단을 추가해줘
AI 동작:
1. get_paragraph_style(sec=0, para=10) → {align: "Justify", lineSpacing: 145}
2. get_text_style(sec=0, para=10) → {fontName: "맑은 고딕", fontSize: 14}
3. insert_paragraph(sec=0, after=10, text="새 내용")
4. set_paragraph_style(sec=0, para=11, align="justify", line_spacing=145)
5. set_text_style(sec=0, para=11, font_name="맑은 고딕", font_size=14)
6. save_document()
예시 4: 테이블 셀 검색 후 정밀 치환
사용자: "김철수"를 "이영희"로 바꿔줘 (3번째 테이블의 것만)
AI 동작:
1. search_text(query="김철수", include_tables=true)
→ [{type: "table", tableIndex: 2, row: 3, col: 1}, ...]
2. replace_text_in_cell(table=2, row=3, col=1, old="김철수", new="이영희")
3. save_document()
예시 5: Mermaid 다이어그램 삽입
사용자: 플로우차트를 문서에 넣어줘
AI 동작:
1. render_mermaid(
mermaid_code="graph TD; A[시작]-->B[처리]; B-->C[완료]",
after_index=5,
theme="default"
)
2. save_document()
예시 6: 일괄 치환
사용자: "2025년"을 "2026년"으로, "홍길동"을 "김영수"로 전부 바꿔줘
AI 동작:
1. batch_replace(replacements=[
{old_text: "2025년", new_text: "2026년"},
{old_text: "홍길동", new_text: "김영수"}
])
2. save_document()
6. 지원 포맷
| 포맷 | 확장자 | 읽기 | 쓰기 |
|---|---|---|---|
| HWPX | .hwpx | O | O |
| HWP | .hwp | X | X |
HWP(바이너리) 파일은 지원하지 않습니다. 한컴오피스에서 HWPX로 변환 후 사용하세요.
7. 알려진 제한사항
- 각주/미주/북마크/하이퍼링크 삽입: 메모리에서만 동작, save 후 XML 미반영 (읽기는 정상)
- HWP 파일: 지원하지 않음 (HWPX로 변환 필요)
- secPr 문단 스타일: 첫 번째 특수 문단에서 스타일 reload 제한
8. 개발
빌드
cd mcp-server
npm run build
테스트
cd mcp-server
npm test # 전체 테스트 (vitest)
npx vitest run src/HwpxDocument.test.ts # 특정 파일
npx vitest run -t "test name" # 이름 패턴
Credits
- Original Project: mjyoo2/hwp-extension
- Enhanced by: Dayoooun
License
MIT
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。