HWP MCP Server

HWP MCP Server

Enables LLMs to read and modify HWP (한글) documents via the HWP COM API, with tools for text, tables, formatting, and file conversion.

Category
Visit Server

README

HWP MCP Server

MCP (Model Context Protocol) server that enables LLMs to read and modify binary HWP (한글) documents via the HWP COM API.

Architecture

LLM ↔ MCP Server (Python/FastMCP) ↔ PowerShell Bridge (JSON stdin/stdout) ↔ HWP COM API ↔ 한글

Python MCP server manages a long-running PowerShell subprocess that hosts HWP COM objects.

Requirements

  • Windows (HWP COM API is Windows-only)
  • 한컴오피스 한글 installed (provides HWP COM server)
  • PowerShell 5.1+ (included with Windows)
  • Python >= 3.11

Installation

uv pip install -e .

Usage

Run MCP Server

python -m hwp_mcp.server

Claude Desktop Config

{
  "mcpServers": {
    "hwp": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/hwp-mcp", "hwp-mcp"]
    }
  }
}

MCP Tools (140)

HWP COM API 199 HParameterSet 100% coverage

Document Management (5)

Tool Description
open_document Open HWP document
close_document Close document
list_open_documents List open documents
save_document Save document
save_document_as Save as different name/format

Read (5)

Tool Description
get_document_text Extract full text
get_paragraphs Get paragraph list
get_tables Get table list
get_table_data Get table data (2D array)
search_text Search text

Write (5)

Tool Description
replace_text Replace text
insert_text Insert text
set_table_cell_text Set table cell text
append_paragraph Append paragraph
set_text_file Set document content from text data

Formatting (3)

Tool Description
set_text_style Character formatting (font, size, bold, color, etc.)
set_paragraph_style Paragraph formatting (alignment, line spacing)
set_page_style Page formatting (margins, orientation)

Table (3)

Tool Description
create_table Create table
add_table_row Add table row
delete_table_row Delete table row

Advanced (5)

Tool Description
run_hwp_action Execute arbitrary HWP action (power user)
convert_to_hwpx Convert HWP → HWPX
convert_to_pdf Convert HWP → PDF
batch_convert_files Batch convert files (HWP, PDF, DOCX, etc.)
set_file_security File security settings (copy/print restriction)

Cursor & Navigation (11)

Tool Description
move_cursor Move cursor to specified position
get_cursor_position Get current cursor position
set_cursor_position Set cursor position (list, para, pos)
get_pos_by_set Get cursor position as set
set_pos_by_set Set cursor position from set
get_selected_pos_by_set Get selection start/end positions
select_text Select text range by coordinates
get_selection_info Get current selection info
clear_selection Clear selection
delete_selection Delete selected content
init_scan Initialize document scan

Field (12)

Tool Description
create_field Create named field (template placeholder)
field_exists Check if field exists
get_field_list Get all field names
get_field_text Read field text
put_field_text Set field text
get_current_field Get field name at cursor
set_current_field_name Set current field name
move_to_field Move cursor to field
rename_field Rename field
modify_field_properties Modify field properties
set_field_ctrl_properties Set field control properties
batch_fill_fields Batch fill multiple fields

Advanced Table (11)

Tool Description
add_table_column Add table column
delete_table_column Delete table column
merge_table_cells Merge cells
split_table_cell Split cell
set_table_cell_style_adv Cell style (background, vertical alignment)
set_table_border_adv Table border style
table_to_text Table → text conversion
text_to_table Text → table conversion
swap_table_row_col Swap table rows/columns
apply_table_template Apply table template

Enhanced Formatting (5)

Tool Description
set_char_shape Extended character properties (kerning, spacing, shadow, etc.)
set_bullet_style Bullet style
set_numbering_style Numbering style
set_tab_definition Tab stops
manage_style Create/delete/apply styles

Page & Section (10)

Tool Description
set_section_definition Section definition (binding margin, text flow)
set_page_border Page border and background
set_columns Multi-column layout
set_page_number Page number
set_header_footer Header/footer
set_footnote_style Footnote style
set_master_page Master page
set_page_hiding Hide page elements (header/footer, etc.)
set_page_num_ctrl Page number control (restart numbering)
set_text_direction Text direction (horizontal/vertical)

Image & Equation (3)

Tool Description
insert_picture Insert picture
insert_background_picture Insert background picture
create_equation Insert equation

Form Control (3)

Tool Description
insert_form_control Insert form control (button, checkbox, etc.)
set_form_properties Set form control properties
get_form_data Read form data

Document Info (5)

Tool Description
get_document_info Document metadata (page count, modified state)
get_document_summary Document summary (title, author)
get_page_text Extract specific page text
get_page_count Total page count
export_page_as_image Export page as image

Print & Export (3)

Tool Description
print_document Print document
set_watermark Set watermark (text/image)
save_as_image Save document as image

Utility (4)

Tool Description
convert_units Unit conversion (mm, pt, hwpunit)
rgb_color RGB/Hex → HWP color value
run_macro Run HWP macro
get_file_info File metadata (without opening)

Bookmark & Hyperlink (6)

Tool Description
insert_bookmark Insert bookmark
insert_hyperlink Insert hyperlink
hyperlink_jump Jump to hyperlink target
insert_index_mark Insert index mark
insert_auto_number Insert auto number field
insert_cross_reference Insert cross reference

Header/Footer & Caption (2)

Tool Description
set_drop_cap Drop cap (decorative first letter)
set_caption Table/image caption

Document Operations (8)

Tool Description
sort_text Sort text
spell_check Spell check
set_track_changes Track changes
mail_merge Mail merge
make_table_of_contents Generate table of contents
insert_file Insert another file
set_password Document password
save_block Save selection to file

Compatibility & Settings (3)

Tool Description
set_compatible_document Document compatibility mode
set_view_properties HWP view properties (zoom, view mode, etc.)
set_engine_properties HWP engine properties (spell check, auto-save, etc.)

Control & Object (4)

Tool Description
delete_ctrl Delete selected control
find_ctrl Find control
check_x_object Check X object existence
release_scan Release scan resources

Style & Script (4)

Tool Description
import_style Import style
export_style Export style
run_script Run HWP script
get_script_source Get script source

System & Security (11)

Tool Description
register_module Register COM module
set_drm_authority DRM authority
lock_command Lock/unlock command
is_command_lock Check command lock status
set_message_box_mode Message box mode
get_message_box_mode Get message box mode
is_action_enable Check action enabled
replace_action Replace action handler
get_hwp_property Get HWP COM property
set_hwp_property Set HWP COM property
hwp_enum String → HWP enum value

HParameterSet Actions (10)

Tool Description HParameterSet Count
hwp_table_param_action Table actions 14
hwp_file_param_action File actions 11
hwp_draw_param_action Draw object actions 22
hwp_shape_param_action Shape actions 6
hwp_style_param_action Style/border actions 6
hwp_form_param_action Form actions 13
hwp_doc_info_param_action Document info actions 9
hwp_hanja_param_action Hanja/conversion actions 11
hwp_selection_param_action Selection/position actions 6
hwp_misc_param_action Miscellaneous actions 69

Project Structure

hwp-mcp/
├── src/hwp_mcp/
│   ├── __init__.py
│   ├── _core.py         # FastMCP instance & shared helpers
│   ├── server.py        # Entry point, imports all tool modules
│   ├── bridge.py        # PowerShell subprocess manager
│   ├── commands.py      # JSON command builders
│   └── tools/           # MCP tool definitions (140 tools)
│       ├── cursor.py
│       ├── doc_info.py
│       ├── document.py
│       ├── drawing.py
│       ├── field.py
│       ├── form.py
│       ├── formatting.py
│       ├── hparam.py
│       ├── hwpobject.py
│       ├── page_section.py
│       ├── print_export.py
│       ├── system.py
│       ├── table.py
│       ├── text.py
│       └── utility.py
├── scripts/
│   ├── hwp_bridge.ps1   # PowerShell COM bridge dispatcher
│   └── handlers/        # 12 handler modules
│       ├── document.ps1
│       ├── text.ps1
│       ├── table.ps1
│       ├── style_format.ps1
│       ├── action.ps1
│       ├── cursor_selection.ps1
│       ├── field.ps1
│       ├── draw_object.ps1
│       ├── form_control.ps1
│       ├── document_info.ps1
│       ├── print_export.ps1
│       ├── utility.ps1
│       └── hwpobject_methods.ps1
├── tests/
│   ├── test_bridge.py   # Bridge unit tests
│   ├── test_commands.py # Command builder unit tests
│   └── test_server.py   # Server tool unit tests
└── pyproject.toml

Development

uv pip install -e ".[dev]"
pytest tests/ -v
ruff check src/ tests/

Limitations

  • Windows only: HWP COM API requires Windows
  • 한글 required: 한컴오피스 한글 must be installed
  • Binary HWP only: HWPX (XML-based) needs a separate server

License

MIT

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured