Model Context Protocol server for local HWPX document automation.
Project description
hwpx-mcp-server
Stateless MCP server for reading and editing HWPX documents with python-hwpx.
What Changed in v2
- Stateless tool design: every tool receives
filename(orsource_filename) and works in one call. - No session/handle IDs in default workflow.
- Token-safe text responses with
max_charslimits. - LLM-friendly tool names (
get_document_text,find_text,search_and_replace,batch_replace). - Advanced XML/pipeline tools are opt-in with
HWPX_MCP_ADVANCED=1.
Install
uvx hwpx-mcp-server
Requirements:
- Python 3.10+
python-hwpx >= 1.9
MCP Client Config
Example (claude_desktop_config.json):
{
"mcpServers": {
"hwpx": {
"command": "uvx",
"args": ["hwpx-mcp-server"]
}
}
}
Core Tool Surface
Document
create_document(filename, title?, author?)get_document_info(filename)get_document_text(filename, max_chars?)get_document_outline(filename)list_available_documents(directory?)copy_document(source_filename, destination_filename?)
Content
add_heading(filename, text, level?)add_paragraph(filename, text, style?)insert_paragraph(filename, paragraph_index, text, style?)delete_paragraph(filename, paragraph_index)add_table(filename, rows, cols, data?)get_table_text(filename, table_index?)set_table_cell_text(filename, table_index, row, col, text)add_page_break(filename)add_memo(filename, paragraph_index, text)remove_memo(filename, paragraph_index)
Search / Replace
find_text(filename, text_to_find, match_case?, max_results?)search_and_replace(filename, find_text, replace_text)batch_replace(filename, replacements)
batch_replace runs in order and saves once after all replacements.
Formatting
format_text(filename, paragraph_index, start_pos, end_pos, ...)create_custom_style(filename, style_name, ...)list_styles(filename)format_table(filename, table_index, has_header_row?)merge_table_cells(filename, table_index, start_row, start_col, end_row, end_col)split_table_cell(filename, table_index, row, col)
Advanced Mode (Opt-in)
Set HWPX_MCP_ADVANCED=1 to enable advanced/debug tools:
package_partspackage_get_xmlpackage_get_textobject_find_by_tagobject_find_by_attrplan_editpreview_editapply_editvalidate_structurelint_text_conventions
These tools are hidden by default.
Environment Variables
| Variable | Description | Default |
|---|---|---|
HWPX_MCP_MAX_CHARS |
Default max text size for text-returning tools | 10000 |
HWPX_MCP_AUTOBACKUP |
Create .bak before save when 1 |
1 |
LOG_LEVEL |
Log level | INFO |
HWPX_MCP_ADVANCED |
Enable advanced tools when 1 |
0 |
Example: Year Rollover
batch_replace("school_plan.hwpx", [
{"find": "2026", "replace": "2027"},
{"find": "2025", "replace": "2026"},
])
Development
Run tests:
pytest -q
Run server (stdio transport):
hwpx-mcp-server
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hwpx_mcp_server-2.0.1.tar.gz.
File metadata
- Download URL: hwpx_mcp_server-2.0.1.tar.gz
- Upload date:
- Size: 76.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
39deb9c26968a22929e20eac4d86464e7a4dab8d1f819c2606b042d8132e67aa
|
|
| MD5 |
52e26e160e5a3c7c226a9f5a7ed811b6
|
|
| BLAKE2b-256 |
8aeb86796978ec9186a6f7a899aec36ea1363f9498733af3eb35183cdb3c1ae6
|
File details
Details for the file hwpx_mcp_server-2.0.1-py3-none-any.whl.
File metadata
- Download URL: hwpx_mcp_server-2.0.1-py3-none-any.whl
- Upload date:
- Size: 72.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fdff7165585c0a14f260ed075ff372ef3c2cedc9281927e0dea62874e4902bdd
|
|
| MD5 |
d74cc471836041a0824b51ac88976beb
|
|
| BLAKE2b-256 |
4287f226453e914862f0de6623f4a7811ab45a27f391159008318d2880b524f2
|