Skip to main content

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 (or source_filename) and works in one call.
  • No session/handle IDs in default workflow.
  • Token-safe text responses with max_chars limits.
  • 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_parts
  • package_get_xml
  • package_get_text
  • object_find_by_tag
  • object_find_by_attr
  • plan_edit
  • preview_edit
  • apply_edit
  • validate_structure
  • lint_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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

hwpx_mcp_server-2.0.3.tar.gz (83.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

hwpx_mcp_server-2.0.3-py3-none-any.whl (74.5 kB view details)

Uploaded Python 3

File details

Details for the file hwpx_mcp_server-2.0.3.tar.gz.

File metadata

  • Download URL: hwpx_mcp_server-2.0.3.tar.gz
  • Upload date:
  • Size: 83.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.7

File hashes

Hashes for hwpx_mcp_server-2.0.3.tar.gz
Algorithm Hash digest
SHA256 8d51179b21a0d3061349fe4a5f947d84c2bedc2e450e6cbe81fd40e3d3c3cfaa
MD5 1b22c914bce7e2ec89a2d5d53dd8500d
BLAKE2b-256 bedc3bff7216e823e9ea99696bb404f751d7775524ad85301d1ff1e1b2dbc96d

See more details on using hashes here.

File details

Details for the file hwpx_mcp_server-2.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for hwpx_mcp_server-2.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 0d7a0624a6c9e936a1a3ffb85abba31cd47c221e0b826317d95634bce2fc6aaf
MD5 d19aba95a2d57589aa3f25780499fb5a
BLAKE2b-256 2e5fae2a9c736e5b9d11fbe8340e14ea721b7e75c94302b199126424b56ea3da

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page