Skip to main content
Glama
Dayoooun

HWPX MCP Server

by Dayoooun

HWPX MCP Server - Enhanced Edition

GitHub Fork

πŸš€ Original ν”„λ‘œμ νŠΈλ₯Ό Forkν•˜μ—¬ μ•ˆμ •μ„±κ³Ό κΈ°λŠ₯을 λŒ€ν­ κ°œμ„ ν•œ λ²„μ „μž…λ‹ˆλ‹€.

AI 도ꡬ(Claude λ“±)와 μ—°λ™ν•˜μ—¬ ν•œκΈ€(HWPX) λ¬Έμ„œλ₯Ό μžλ™μœΌλ‘œ νŽΈμ§‘ν•  수 μžˆλŠ” MCP(Model Context Protocol) μ„œλ²„μž…λ‹ˆλ‹€.


🌍 Cross-Platform Support

λͺ¨λ“  μš΄μ˜μ²΄μ œμ—μ„œ μž‘λ™ν•©λ‹ˆλ‹€!

OS

MCP μ„œλ²„

HWPX νŽΈμ§‘

κ²°κ³Όλ¬Ό 확인

βœ… Windows

βœ…

βœ…

ν•œμ»΄μ˜€ν”ΌμŠ€

βœ… macOS

βœ…

βœ…

ν•œμ»΄μ˜€ν”ΌμŠ€ Mac

βœ… Linux

βœ…

βœ…

ν•œμ»΄μ˜€ν”ΌμŠ€ Linux / LibreOffice*

μ™œ κ°€λŠ₯ν•œκ°€μš”? HWPX νŒŒμΌμ€ ZIP + XML κ΅¬μ‘°μž…λ‹ˆλ‹€. ν•œκΈ€ ν”„λ‘œκ·Έλž¨ 없이도 Node.js만으둜 μ™„λ²½ν•˜κ²Œ 읽고 μ“Έ 수 μžˆμŠ΅λ‹ˆλ‹€.

*LibreOfficeλŠ” HWPXλ₯Ό μ œν•œμ μœΌλ‘œ μ§€μ›ν•©λ‹ˆλ‹€. μ™„λ²½ν•œ ν˜Έν™˜μ„ μœ„ν•΄ ν•œμ»΄μ˜€ν”ΌμŠ€ μ‚¬μš©μ„ ꢌμž₯ν•©λ‹ˆλ‹€.


Related MCP server: HWP MCP Server

✨ Enhanced Features (κ°œμ„ λœ κΈ°λŠ₯)

원본 ν”„λ‘œμ νŠΈ λŒ€λΉ„ λ‹€μŒκ³Ό 같은 핡심 λ¬Έμ œλ“€μ„ ν•΄κ²°ν–ˆμŠ΅λ‹ˆλ‹€:

πŸ”§ Critical Bug Fixes

문제

원본 μƒνƒœ

κ°œμ„  ν›„

ν…Œμ΄λΈ” μ €μž₯ μ‹€νŒ¨

μ…€ μˆ˜μ • ν›„ μ €μž₯해도 변경사항 사라짐

βœ… μ™„λ²½ν•˜κ²Œ μ €μž₯됨

ν…μŠ€νŠΈ κ²ΉμΉ¨ ν˜„μƒ

μ €μž₯ ν›„ ν•œκΈ€μ—μ„œ μ—΄λ©΄ κΈ€μžκ°€ 겹쳐 ν‘œμ‹œ

βœ… 정상 ν‘œμ‹œ

파일 손상

μ €μž₯ μ‹œ 가끔 파일이 손상됨

βœ… μ›μžμ  μ“°κΈ°λ‘œ 100% μ•ˆμ „

닀쀑 μ…€ 손상

같은 행에 μ—¬λŸ¬ μ…€ μˆ˜μ • μ‹œ XML 손상

βœ… 인덱슀 κ΄€λ¦¬λ‘œ μ•ˆμ „

μžκ°„/쀄간격 손싀

μ €μž₯ ν›„ μŠ€νƒ€μΌ 정보 μœ μ‹€

βœ… λͺ¨λ“  μŠ€νƒ€μΌ 보쑴

πŸ›  Technical Improvements

  1. Atomic File Writing (μ›μžμ  파일 μ“°κΈ°)

    • μž„μ‹œ 파일 β†’ ZIP 검증 β†’ μ›μžμ  이동

    • μ €μž₯ 쀑 였λ₯˜ λ°œμƒν•΄λ„ 원본 파일 보호

  2. Smart Lineseg Reset (슀마트 쀄 λ ˆμ΄μ•„μ›ƒ μ΄ˆκΈ°ν™”)

    • ν…μŠ€νŠΈ μˆ˜μ • μ‹œ lineseg μžλ™ μ΄ˆκΈ°ν™”

    • ν•œκΈ€ ν”„λ‘œκ·Έλž¨μ΄ μ—΄ λ•Œ μžλ™μœΌλ‘œ μ€„λ°”κΏˆ μž¬κ³„μ‚°

    • ν…μŠ€νŠΈ κ²ΉμΉ¨ ν˜„μƒ μ™„μ „ ν•΄κ²°

  3. Depth-based XML Parsing (깊이 기반 XML νŒŒμ‹±)

    • κΈ°μ‘΄ lazy regex의 쀑첩 ꡬ쑰 μ˜€μΈμ‹ 문제 ν•΄κ²°

    • λ³΅μž‘ν•œ ν…Œμ΄λΈ”(쀑첩 ν…Œμ΄λΈ”, subList λ“±) μ™„λ²½ 지원

  4. Complete Style Preservation (μŠ€νƒ€μΌ μ™„μ „ 보쑴)

    • charPr, spacing λ“± 원본 μŠ€νƒ€μΌ 100% μœ μ§€

    • λΆˆμ™„μ „ν•œ 직렬화 둜직 제거둜 데이터 무결성 보μž₯

  5. Safe Multi-Cell Updates (μ•ˆμ „ν•œ 닀쀑 μ…€ μ—…λ°μ΄νŠΈ)

    • 같은 ν–‰(row)의 μ—¬λŸ¬ 셀을 λ™μ‹œμ— μˆ˜μ •ν•΄λ„ μ•ˆμ „

    • 행별 κ·Έλ£Ήν™” + μ—­μˆœ 처리둜 인덱슀 손상 λ°©μ§€


πŸ“¦ Installation

1. MCP μ„œλ²„ μ„€μΉ˜

git clone https://github.com/Dayoooun/hwpx-mcp.git
cd hwpx-mcp/mcp-server
npm install
npm run build

2. MCP ν΄λΌμ΄μ–ΈνŠΈ μ„€μ •

μ•„λž˜μ—μ„œ μ‚¬μš©ν•˜λŠ” ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ„ νƒν•˜μ„Έμš”.


πŸ–₯️ 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-mcp": {
      "command": "node",
      "args": ["C:/path/to/hwpx-mcp/mcp-server/dist/index.js"]
    }
  }
}

⚠️ Windowsμ—μ„œλŠ” κ²½λ‘œμ— \\ λ˜λŠ” / μ‚¬μš© (예: C:/Users/username/hwpx-mcp/...)


πŸ’» Claude Code (CLI)

방법 1: ν”„λ‘œμ νŠΈλ³„ μ„€μ • (.mcp.json νŒŒμΌμ„ ν”„λ‘œμ νŠΈ λ£¨νŠΈμ— 생성)

{
  "mcpServers": {
    "hwpx-mcp": {
      "command": "node",
      "args": ["/path/to/hwpx-mcp/mcp-server/dist/index.js"]
    }
  }
}

방법 2: μ „μ—­ μ„€μ • (~/.claude/settings.json)

{
  "mcpServers": {
    "hwpx-mcp": {
      "command": "node",
      "args": ["/path/to/hwpx-mcp/mcp-server/dist/index.js"]
    }
  }
}

방법 3: CLI λͺ…λ Ήμ–΄λ‘œ μΆ”κ°€

claude mcp add hwpx-mcp node /path/to/hwpx-mcp/mcp-server/dist/index.js

πŸ”· Cursor

μ„€μ • 파일: ~/.cursor/mcp.json (μ—†μœΌλ©΄ 생성)

{
  "mcpServers": {
    "hwpx-mcp": {
      "command": "node",
      "args": ["/path/to/hwpx-mcp/mcp-server/dist/index.js"]
    }
  }
}

λ˜λŠ” Cursor Settings > MCP μ—μ„œ 직접 μΆ”κ°€ κ°€λŠ₯


πŸ†š VS Code (MCP ν™•μž₯ μ‚¬μš© μ‹œ)

μ„€μ • 파일: .vscode/mcp.json (ν”„λ‘œμ νŠΈ 폴더 λ‚΄)

{
  "servers": {
    "hwpx-mcp": {
      "command": "node",
      "args": ["${workspaceFolder}/../hwpx-mcp/mcp-server/dist/index.js"]
    }
  }
}

${workspaceFolder} λ³€μˆ˜λ₯Ό ν™œμš©ν•˜λ©΄ μƒλŒ€ 경둜 μ§€μ • κ°€λŠ₯


πŸ› οΈ 기타 MCP ν΄λΌμ΄μ–ΈνŠΈ

일반적인 MCP μ„€μ • ν˜•μ‹:

{
  "mcpServers": {
    "hwpx-mcp": {
      "command": "node",
      "args": ["/absolute/path/to/hwpx-mcp/mcp-server/dist/index.js"]
    }
  }
}

경둜 μ˜ˆμ‹œ:

OS

경둜 μ˜ˆμ‹œ

Windows

C:/Users/username/hwpx-mcp/mcp-server/dist/index.js

macOS

/Users/username/hwpx-mcp/mcp-server/dist/index.js

Linux

/home/username/hwpx-mcp/mcp-server/dist/index.js


3. μ„€μΉ˜ 확인

ν΄λΌμ΄μ–ΈνŠΈ μž¬μ‹œμž‘ ν›„ MCP 도ꡬ λͺ©λ‘μ—μ„œ hwpx-mcp μ„œλ²„μ™€ 77개 도ꡬ가 ν‘œμ‹œλ˜λ©΄ 성곡!


πŸ”Œ MCP Tools (77개)

πŸ“ λ¬Έμ„œ 관리 (Document Management) - 5개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

create_document

μƒˆ 빈 HWPX λ¬Έμ„œ 생성

title?, creator?

open_document

HWPX λ¬Έμ„œ μ—΄κΈ°

file_path

close_document

μ—΄λ¦° λ¬Έμ„œ λ‹«κΈ°

doc_id

save_document

λ¬Έμ„œ μ €μž₯ (λ°±μ—…/무결성 검증 지원)

doc_id, output_path?, create_backup?, verify_integrity?

list_open_documents

ν˜„μž¬ μ—΄λ¦° λ¬Έμ„œ λͺ©λ‘ 쑰회

-

πŸ“„ λ¬Έμ„œ 정보 (Document Info) - 5개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

get_document_text

λ¬Έμ„œ 전체 ν…μŠ€νŠΈ μΆ”μΆœ

doc_id

get_document_structure

λ¬Έμ„œ ꡬ쑰 쑰회 (μ„Ήμ…˜/단락/ν…Œμ΄λΈ”/이미지 수)

doc_id

get_document_metadata

메타데이터 쑰회 (제λͺ©, μ €μž, λ‚ μ§œ λ“±)

doc_id

set_document_metadata

메타데이터 μˆ˜μ •

doc_id, title?, creator?, subject?, description?

get_word_count

κΈ€μžμˆ˜/λ‹¨μ–΄μˆ˜ 톡계

doc_id

πŸ“ 단락 (Paragraphs) - 8개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

get_paragraphs

단락 λͺ©λ‘ 쑰회 (ν…μŠ€νŠΈ/μŠ€νƒ€μΌ 포함)

doc_id, section_index?

get_paragraph

νŠΉμ • 단락 상세 정보

doc_id, section_index, paragraph_index

insert_paragraph

μƒˆ 단락 μ‚½μž…

doc_id, section_index, after_index, text

delete_paragraph

단락 μ‚­μ œ

doc_id, section_index, paragraph_index

update_paragraph_text

단락 ν…μŠ€νŠΈ λ‚΄μš© μˆ˜μ •

doc_id, section_index, paragraph_index, text, run_index?

append_text_to_paragraph

κΈ°μ‘΄ 단락에 ν…μŠ€νŠΈ μΆ”κ°€

doc_id, section_index, paragraph_index, text

copy_paragraph

단락을 λ‹€λ₯Έ μœ„μΉ˜λ‘œ 볡사

doc_id, source_section, source_paragraph, target_section, target_after

move_paragraph

단락을 λ‹€λ₯Έ μœ„μΉ˜λ‘œ 이동

doc_id, source_section, source_paragraph, target_section, target_after

🎨 ν…μŠ€νŠΈ μŠ€νƒ€μΌ (Text Styling) - 4개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

get_text_style

κΈ€μž μ„œμ‹ 쑰회 (폰트/크기/색상 λ“±)

doc_id, section_index, paragraph_index, run_index?

set_text_style

κΈ€μž μ„œμ‹ μ„€μ •

doc_id, section_index, paragraph_index, bold?, italic?, underline?, strikethrough?, font_name?, font_size?, font_color?, background_color?

get_paragraph_style

문단 μ„œμ‹ 쑰회 (μ •λ ¬/쀄간격/μ—¬λ°± λ“±)

doc_id, section_index, paragraph_index

set_paragraph_style

문단 μ„œμ‹ μ„€μ •

doc_id, section_index, paragraph_index, align?, line_spacing?, margin_*?, first_line_indent?

πŸ” 검색/μΉ˜ν™˜ (Search & Replace) - 4개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

search_text

λ¬Έμ„œ λ‚΄ ν…μŠ€νŠΈ 검색 (μ •κ·œμ‹ 지원, ν…Œμ΄λΈ” μ…€ 포함)

doc_id, query, case_sensitive?, regex?, include_tables?

replace_text

ν…μŠ€νŠΈ μ°Ύμ•„ λ°”κΎΈκΈ°

doc_id, old_text, new_text, case_sensitive?, regex?, replace_all?

replace_text_in_cell

νŠΉμ • ν…Œμ΄λΈ” μ…€ λ‚΄ ν…μŠ€νŠΈ μΉ˜ν™˜

doc_id, section_index, table_index, row, col, old_text, new_text

batch_replace

μ—¬λŸ¬ ν…μŠ€νŠΈ 일괄 μΉ˜ν™˜

doc_id, replacements[] (old_text, new_text 쌍 λ°°μ—΄)

πŸ“Š ν…Œμ΄λΈ” (Tables) - 12개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

get_tables

λ¬Έμ„œ λ‚΄ λͺ¨λ“  ν…Œμ΄λΈ” λͺ©λ‘

doc_id

get_table

νŠΉμ • ν…Œμ΄λΈ” 전체 데이터 쑰회

doc_id, section_index, table_index

get_table_cell

νŠΉμ • μ…€ λ‚΄μš© 쑰회

doc_id, section_index, table_index, row, col

update_table_cell

μ…€ λ‚΄μš© μˆ˜μ • (μŠ€νƒ€μΌ 보쑴)

doc_id, section_index, table_index, row, col, text, char_shape_id?

set_cell_properties

μ…€ 속성 μ„€μ • (크기/배경색/μ •λ ¬)

doc_id, section_index, table_index, row, col, width?, height?, background_color?, vertical_align?

insert_table

μƒˆ ν…Œμ΄λΈ” μ‚½μž…

doc_id, section_index, after_index, rows, cols, width?

insert_table_row

ν…Œμ΄λΈ”μ— ν–‰ μ‚½μž…

doc_id, section_index, table_index, after_row, cell_texts?

delete_table_row

ν…Œμ΄λΈ”μ—μ„œ ν–‰ μ‚­μ œ

doc_id, section_index, table_index, row_index

insert_table_column

ν…Œμ΄λΈ”μ— μ—΄ μ‚½μž…

doc_id, section_index, table_index, after_col

delete_table_column

ν…Œμ΄λΈ”μ—μ„œ μ—΄ μ‚­μ œ

doc_id, section_index, table_index, col_index

insert_nested_table

μ…€ μ•ˆμ— 쀑첩 ν…Œμ΄λΈ” μ‚½μž… (ν‘œ μ•ˆμ— ν‘œ)

doc_id, section_index, parent_table_index, row, col, nested_rows, nested_cols, data?

get_table_as_csv

ν…Œμ΄λΈ”μ„ CSV ν˜•μ‹μœΌλ‘œ μΆ”μΆœ

doc_id, section_index, table_index, delimiter?

πŸ“ νŽ˜μ΄μ§€ μ„€μ • (Page Settings) - 2개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

get_page_settings

νŽ˜μ΄μ§€ μ„€μ • 쑰회 (μš©μ§€ 크기/μ—¬λ°±)

doc_id, section_index?

set_page_settings

νŽ˜μ΄μ§€ μ„€μ • λ³€κ²½

doc_id, section_index?, width?, height?, margin_*?, orientation?

πŸ–ΌοΈ 이미지 (Images) - 5개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

get_images

λ¬Έμ„œ λ‚΄ λͺ¨λ“  이미지 λͺ©λ‘

doc_id

insert_image

이미지 파일 μ‚½μž… (BinData μžλ™ 등둝)

doc_id, section_index, after_index, image_path, width?, height?

update_image_size

κΈ°μ‘΄ 이미지 크기 λ³€κ²½

doc_id, section_index, image_index, width, height

delete_image

이미지 μ‚­μ œ

doc_id, section_index, image_index

render_mermaid

Mermaid λ‹€μ΄μ–΄κ·Έλž¨μ„ μ΄λ―Έμ§€λ‘œ μ‚½μž…

doc_id, mermaid_code, after_index, section_index?, width?, height?, theme?, background_color?

✏️ λ„ν˜• (Shapes) - 3개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

insert_line

μ„  λ„ν˜• μ‚½μž…

doc_id, section_index, after_index, x1, y1, x2, y2, stroke_color?, stroke_width?

insert_rect

μ‚¬κ°ν˜• λ„ν˜• μ‚½μž…

doc_id, section_index, after_index, x, y, width, height, fill_color?, stroke_color?

insert_ellipse

타원 λ„ν˜• μ‚½μž…

doc_id, section_index, after_index, cx, cy, rx, ry, fill_color?, stroke_color?

πŸ“‘ 머리글/λ°”λ‹₯κΈ€ (Header/Footer) - 4개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

get_header

머리글 λ‚΄μš© 쑰회

doc_id, section_index?

set_header

머리글 μ„€μ •

doc_id, text, section_index?, apply_page_type? (both/even/odd)

get_footer

λ°”λ‹₯κΈ€ λ‚΄μš© 쑰회

doc_id, section_index?

set_footer

λ°”λ‹₯κΈ€ μ„€μ •

doc_id, text, section_index?, apply_page_type? (both/even/odd)

πŸ“Œ 각주/λ―Έμ£Ό (Footnotes/Endnotes) - 4개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

get_footnotes

λ¬Έμ„œ λ‚΄ λͺ¨λ“  각주 λͺ©λ‘

doc_id

insert_footnote

νŠΉμ • μœ„μΉ˜μ— 각주 μ‚½μž…

doc_id, section_index, paragraph_index, text

get_endnotes

λ¬Έμ„œ λ‚΄ λͺ¨λ“  λ―Έμ£Ό λͺ©λ‘

doc_id

insert_endnote

νŠΉμ • μœ„μΉ˜μ— λ―Έμ£Ό μ‚½μž…

doc_id, section_index, paragraph_index, text

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

get_bookmarks

λ¬Έμ„œ λ‚΄ λͺ¨λ“  뢁마크 λͺ©λ‘

doc_id

insert_bookmark

νŠΉμ • μœ„μΉ˜μ— 뢁마크 μ‚½μž…

doc_id, section_index, paragraph_index, name

get_hyperlinks

λ¬Έμ„œ λ‚΄ λͺ¨λ“  ν•˜μ΄νΌλ§ν¬ λͺ©λ‘

doc_id

insert_hyperlink

ν•˜μ΄νΌλ§ν¬ μ‚½μž…

doc_id, section_index, paragraph_index, url, text

βž— μˆ˜μ‹ (Equations) - 2개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

get_equations

λ¬Έμ„œ λ‚΄ λͺ¨λ“  μˆ˜μ‹ λͺ©λ‘

doc_id

insert_equation

μˆ˜μ‹ μ‚½μž… (HWP μˆ˜μ‹ 슀크립트 ν˜•μ‹)

doc_id, section_index, after_index, script

πŸ’¬ λ©”λͺ¨ (Memos/Comments) - 3개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

get_memos

λ¬Έμ„œ λ‚΄ λͺ¨λ“  λ©”λͺ¨/주석 λͺ©λ‘

doc_id

insert_memo

λ©”λͺ¨/주석 μ‚½μž…

doc_id, section_index, paragraph_index, content, author?

delete_memo

λ©”λͺ¨/주석 μ‚­μ œ

doc_id, memo_id

πŸ“š μ„Ήμ…˜ (Sections) - 5개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

get_sections

λ¬Έμ„œ λ‚΄ λͺ¨λ“  μ„Ήμ…˜ λͺ©λ‘

doc_id

insert_section

μƒˆ μ„Ήμ…˜ μ‚½μž…

doc_id, after_index

delete_section

μ„Ήμ…˜ μ‚­μ œ

doc_id, section_index

get_section_xml

μ„Ήμ…˜ Raw XML 쑰회 (AI λ¬Έμ„œ μ‘°μž‘μš©)

doc_id, section_index?

set_section_xml

μ„Ήμ…˜ Raw XML ꡐ체 (HWPML ν˜•μ‹ ν•„μˆ˜)

doc_id, xml, section_index?, validate?

🎭 μŠ€νƒ€μΌ μ •μ˜ (Style Definitions) - 4개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

get_styles

λ¬Έμ„œμ— μ •μ˜λœ μŠ€νƒ€μΌ λͺ©λ‘

doc_id

get_char_shapes

κΈ€μž λͺ¨μ–‘(CharShape) μ •μ˜ λͺ©λ‘

doc_id

get_para_shapes

문단 λͺ¨μ–‘(ParaShape) μ •μ˜ λͺ©λ‘

doc_id

apply_style

단락에 μŠ€νƒ€μΌ 적용

doc_id, section_index, paragraph_index, style_id

πŸ“° 단 μ„€μ • (Column Layout) - 2개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

get_column_def

단(Column) μ„€μ • 쑰회

doc_id, section_index?

set_column_def

단 μ„€μ • λ³€κ²½ (닀단 νŽΈμ§‘)

doc_id, count, section_index?, type?, same_size?, gap?

πŸ“€ 내보내기 (Export) - 2개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

export_to_text

λ¬Έμ„œλ₯Ό ν…μŠ€νŠΈ 파일둜 내보내기

doc_id, output_path

export_to_html

λ¬Έμ„œλ₯Ό HTML 파일둜 내보내기

doc_id, output_path

↩️ μ‹€ν–‰ μ·¨μ†Œ (Undo/Redo) - 2개

Tool

μ„€λͺ…

μ£Όμš” νŒŒλΌλ―Έν„°

undo

λ§ˆμ§€λ§‰ λ³€κ²½ μ‹€ν–‰ μ·¨μ†Œ

doc_id

redo

μ‹€ν–‰ μ·¨μ†Œν•œ λ³€κ²½ λ‹€μ‹œ μ‹€ν–‰

doc_id


μ‚¬μš© μ˜ˆμ‹œ

// λ¬Έμ„œ μ—΄κΈ°
await mcp.open_document({ file_path: "report.hwpx" })

// ν…Œμ΄λΈ” μ…€ μˆ˜μ •
await mcp.update_table_cell({
  doc_id: "...",
  section_index: 0,
  table_index: 0,
  row: 0,
  col: 1,
  text: "μˆ˜μ •λœ λ‚΄μš©"
})

// 쀑첩 ν…Œμ΄λΈ” μ‚½μž… (ν‘œ μ•ˆμ— ν‘œ)
await mcp.insert_nested_table({
  doc_id: "...",
  section_index: 0,
  parent_table_index: 0,
  row: 1,
  col: 2,
  nested_rows: 2,
  nested_cols: 2,
  data: [["A1", "A2"], ["B1", "B2"]]
})

// Mermaid λ‹€μ΄μ–΄κ·Έλž¨ μ‚½μž…
await mcp.render_mermaid({
  doc_id: "...",
  mermaid_code: "graph TD; A-->B; B-->C;",
  after_index: 0,
  theme: "default"
})

// μ €μž₯
await mcp.save_document({ doc_id: "..." })

ν…Œμ΄λΈ” μ…€ 검색/μΉ˜ν™˜ μ›Œν¬ν”Œλ‘œμš°

λ™μΌν•œ ν…μŠ€νŠΈκ°€ μ—¬λŸ¬ 곳에 μžˆμ„ λ•Œ νŠΉμ • μœ„μΉ˜λ§Œ μˆ˜μ •ν•˜λŠ” 방법:

// 1. ν…Œμ΄λΈ” 포함 κ²€μƒ‰μœΌλ‘œ μœ„μΉ˜ νŒŒμ•…
const results = await mcp.search_text({
  doc_id: "...",
  query: "μˆ˜μ •λŒ€μƒ",
  include_tables: true  // ν…Œμ΄λΈ” μ…€ 포함
})
// κ²°κ³Ό: [{ text: "μˆ˜μ •λŒ€μƒ", location: { type: "table", tableIndex: 2, row: 3, col: 1 } }, ...]

// 2. μ›ν•˜λŠ” μœ„μΉ˜μ˜ μ…€λ§Œ μ •λ°€ μΉ˜ν™˜
await mcp.replace_text_in_cell({
  doc_id: "...",
  section_index: 0,
  table_index: 2,  // 검색 κ²°κ³Όμ—μ„œ ν™•μΈν•œ μœ„μΉ˜
  row: 3,
  col: 1,
  old_text: "μˆ˜μ •λŒ€μƒ",
  new_text: "μƒˆλ‘œμš΄λ‚΄μš©"
})

πŸ“‹ Supported Format

포맷

ν™•μž₯자

읽기

μ“°κΈ°

HWPX

.hwpx

βœ…

βœ…

HWP

.hwp

❌

❌

Note: HWP(λ°”μ΄λ„ˆλ¦¬) νŒŒμΌμ€ μ§€μ›ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•œμ»΄μ˜€ν”ΌμŠ€μ—μ„œ HWPX둜 λ³€ν™˜ ν›„ μ‚¬μš©ν•˜μ„Έμš”.


πŸ“ Release Notes

v0.4.0 (Enhanced Search & Diagram Support)

  • πŸ†• New Feature: search_text에 include_tables μ˜΅μ…˜ μΆ”κ°€ - ν…Œμ΄λΈ” μ…€ λ‚΄ ν…μŠ€νŠΈλ„ 검색

  • πŸ†• New Feature: replace_text_in_cell - νŠΉμ • ν…Œμ΄λΈ” μ…€ λ‚΄ ν…μŠ€νŠΈλ§Œ μ •λ°€ μΉ˜ν™˜

  • πŸ†• New Feature: render_mermaid - Mermaid λ‹€μ΄μ–΄κ·Έλž¨μ„ μ΄λ―Έμ§€λ‘œ λ¬Έμ„œμ— μ‚½μž…

    • Flowchart, Sequence, Class Diagram λ“± λͺ¨λ“  Mermaid 문법 지원

    • ν…Œλ§ˆ 선택 κ°€λŠ₯ (default, dark, forest, neutral)

  • πŸ†• New Feature: get_section_xml / set_section_xml - μ„Ήμ…˜ Raw XML 직접 μ‘°μž‘

    • AI 기반 κ³ κΈ‰ λ¬Έμ„œ νŽΈμ§‘ μ‹œλ‚˜λ¦¬μ˜€ 지원

  • πŸ”§ Improvement: insert_image μ™„μ „ κ°œμ„ 

    • BinData 폴더에 이미지 μžλ™ μ €μž₯

    • content.hpf λ§€λ‹ˆνŽ˜μŠ€νŠΈ μžλ™ 등둝

    • 파일 손상 없이 이미지 μ‚½μž… 보μž₯

v0.3.0 (Nested Table Support)

  • πŸ†• New Feature: insert_nested_table - ν…Œμ΄λΈ” μ…€ μ•ˆμ— 쀑첩 ν…Œμ΄λΈ” μ‚½μž… κΈ°λŠ₯

    • λΆ€λͺ¨ ν…Œμ΄λΈ”μ˜ νŠΉμ • 셀에 μƒˆ ν…Œμ΄λΈ”μ„ μ‚½μž…

    • 초기 데이터 μ§€μ • κ°€λŠ₯ (2D λ°°μ—΄)

    • HWPX ν‘œμ€€ ꡬ쑰(treatAsChar, hp:subList) μ™„λ²½ μ€€μˆ˜

  • πŸ”§ Improvement: charSpacing νŒŒμ‹± κ°œμ„  (속성 μˆœμ„œ λ¬΄κ΄€ν•˜κ²Œ 처리)

v0.2.1 (Critical Fix)

  • πŸ”₯ Critical Fix: 같은 행에 μ—¬λŸ¬ μ…€ λ™μ‹œ μˆ˜μ • μ‹œ 파일 손상 문제 μ™„μ „ ν•΄κ²°

    • ν–‰(row)별 μ—…λ°μ΄νŠΈ κ·Έλ£Ήν™”λ‘œ 인덱슀 뢈일치 λ°©μ§€

    • μ—­μˆœ(descending) 처리둜 μ•ˆμ „ν•œ XML μˆ˜μ • 보μž₯

v0.2.0 (Enhanced Edition)

  • πŸ”₯ Major Fix: ν…μŠ€νŠΈ μˆ˜μ • μ‹œ lineseg μžλ™ μ΄ˆκΈ°ν™”λ‘œ κ²ΉμΉ¨ ν˜„μƒ μ™„μ „ ν•΄κ²°

  • πŸ”§ Bug Fix: 쀑첩 ν…Œμ΄λΈ” κ΅¬μ‘°μ—μ„œ XML μš”μ†Œ 경계 μ˜€μΈμ‹ 문제 μˆ˜μ •

  • πŸ›‘οΈ Stability: μ›μžμ  파일 μ“°κΈ°λ‘œ 파일 손상 λ°©μ§€

  • πŸ“¦ Preservation: 원본 charPr/spacing μŠ€νƒ€μΌ μ™„μ „ 보쑴

v0.1.0 (Original)

  • 졜초 릴리슀 (mjyoo2/hwp-extension)


πŸ™ Credits


πŸ“„ License

MIT


🀝 Contributing

버그 리포트 및 κΈ°λŠ₯ μš”μ²­: GitHub Issues

A
license - permissive license
-
quality - not tested
F
maintenance

Maintenance

–Maintainers
–Response time
–Release cycle
–Releases (12mo)
Commit activity
Issues opened vs closed

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    -
    quality
    D
    maintenance
    Enables AI assistants to control Hancom's HWP/HWPX documents (Korean word processor) via COM interface on Windows, supporting creation, editing, formatting, and export.
    MIT
  • A
    license
    -
    quality
    C
    maintenance
    Enables AI assistants to read, modify, and create Word (.docx) and Excel (.xlsx) files through natural language commands, including batch queries and temporary table management.
    MIT

View all related MCP servers

Related MCP Connectors

  • DXF and PDF/X-4 for AI agents: structured facts, PNG renders, an interactive in-chat viewer.

  • Persistent docs and memory for AI agents β€” read, write, organize & search a shared workspace.

  • AI document editing for agents: draft, edit, export .docx/PDF. 37 MCP tools; agent self-signup.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Dayoooun/hwpx-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server