Skip to main content
Glama
airmang

hwpx-mcp-server


๐Ÿงฉ HWPX Stack (3์ข…)

๊ณ„์ธต

๋ ˆํฌ

์—ญํ• 

๐Ÿ“ฆ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

python-hwpx

์ˆœ์ˆ˜ ํŒŒ์ด์ฌ HWPX ํŒŒ์‹ฑยทํŽธ์ง‘ยท์ƒ์„ฑ ์ฝ”์–ด

๐Ÿ”Œ MCP ์„œ๋ฒ„

hwpx-mcp-server

MCP ํด๋ผ์ด์–ธํŠธ(Claude Desktop, VS Code ๋“ฑ)์—์„œ HWPX ์กฐ์ž‘

๐ŸŽฏ ์—์ด์ „ํŠธ ์Šคํ‚ฌ

hwpx-skill

์—์ด์ „ํŠธ๊ฐ€ HWPX๋ฅผ ๋ฐ”๋กœ ์“ฐ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ณต์‹ ์˜จ๋ณด๋”ฉ ์Šคํ‚ฌ


hwpx-mcp-server๋Š” ๋ชจ๋ธ ์ปจํ…์ŠคํŠธ ํ”„๋กœํ† ์ฝœ(MCP) ํ‘œ์ค€์„ ๋”ฐ๋ฅด๋Š” ์„œ๋ฒ„๋กœ, python-hwpx ๊ธฐ๋ฐ˜์—์„œ HWPX ๋ฌธ์„œ์˜ ์—ด๋žŒ ยท ๊ฒ€์ƒ‰ ยท ํŽธ์ง‘ ยท ์ถ”์ถœ์„ AI ํด๋ผ์ด์–ธํŠธ์—์„œ ์ง์ ‘ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

์ฐธ๊ณ  ์ด ์„œ๋ฒ„๋Š” Open XML ๊ธฐ๋ฐ˜ .hwpx ํฌ๋งท์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ๋ฐ”์ด๋„ˆ๋ฆฌ .hwp ํฌ๋งท์€ ์ง์ ‘ ํŽธ์ง‘ ๋Œ€์ƒ์ด ์•„๋‹™๋‹ˆ๋‹ค.

Related MCP server: HWPX Document Server

์ด ์„œ๋ฒ„๊ฐ€ ๋ฐ”๋กœ ํ•ด๊ฒฐํ•˜๋Š” ์ผ

  • Claude Desktop, VS Code, Gemini CLI ๊ฐ™์€ MCP ํด๋ผ์ด์–ธํŠธ์—์„œ HWPX๋ฅผ ๋ฐ”๋กœ ์ฝ๊ธฐ

  • ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“  ๋’ค ์•ˆ์ „ํ•˜๊ฒŒ ๊ฒ€์ƒ‰ยท์น˜ํ™˜ยทํ‘œ ํŽธ์ง‘ยท๋ฌธ๋‹จ ์ถ”๊ฐ€ ์ˆ˜ํ–‰

  • ๋ฌธ์„œ ๊ฐœ์š”, ํ‘œ ๋งต, ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๋ฅผ AI๊ฐ€ ์ง์ ‘ ์กฐํšŒํ•˜๊ณ  ํ›„์† ์ž‘์—…์œผ๋กœ ์—ฐ๊ฒฐ

  • ํ•œ๊ธ€ ์›Œ๋“œํ”„๋กœ์„ธ์„œ ์—†์ด ์„œ๋ฒ„ยทCIยท๋กœ์ปฌ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์—์„œ ๊ฐ™์€ ํ๋ฆ„ ์œ ์ง€

  • ๊ณ ๊ธ‰ ๋ชจ๋“œ์—์„œ ๊ฒ€์ฆ, package inspection, edit planning๊นŒ์ง€ ํ™•์žฅ

Claude Desktop 5๋ถ„ ์—ฐ๊ฒฐ

์•„๋ž˜ ์„ค์ • ํ•˜๋‚˜๋งŒ ๋„ฃ์œผ๋ฉด Claude Desktop์—์„œ hwpx MCP ์„œ๋ฒ„๋ฅผ ๋ฐ”๋กœ ์žก๋Š”๋‹ค.

{
  "mcpServers": {
    "hwpx": {
      "command": "uvx",
      "args": ["hwpx-mcp-server"]
    }
  }
}

Screenshot placeholder: Claude Desktop ์„ค์ • ํ™”๋ฉด์—์„œ hwpx ์„œ๋ฒ„๊ฐ€ ํ™œ์„ฑํ™”๋œ ์žฅ๋ฉด์„ ์—ฌ๊ธฐ์— ๋„ฃ์„ ์˜ˆ์ •.

์™œ ํ•„์š”ํ•œ๊ฐ€?

๊ตญ๋‚ด ๊ณต๊ณต๊ธฐ๊ด€ยทํ•™๊ตยท๊ธฐ์—…์—์„œ๋Š” ํ•œ๊ธ€ ๋ฌธ์„œ ๊ธฐ๋ฐ˜ ์—…๋ฌด๊ฐ€ ๋งŽ์ง€๋งŒ, ์ž๋™ํ™”๋Š” ์˜ค๋žซ๋™์•ˆ ์šด์˜์ฒด์ œ์™€ ํ”„๋กœ๊ทธ๋žจ์— ํฌ๊ฒŒ ์˜์กดํ–ˆ์Šต๋‹ˆ๋‹ค.

hwpx-mcp-server๋Š” ์ด ์ œ์•ฝ์„ ์ค„์ด๋Š” ๋ฐ ์ดˆ์ ์„ ๋‘ก๋‹ˆ๋‹ค.

  • โœ… ์šด์˜์ฒด์ œ ๋ฌด๊ด€ โ€” Windows, macOS, Linux์—์„œ ๋™์ž‘

  • โœ… ํ•œ๊ธ€ ์›Œ๋“œํ”„๋กœ์„ธ์„œ ๋ถˆํ•„์š” โ€” ์ˆœ์ˆ˜ ํŒŒ์ด์ฌ ๊ธฐ๋ฐ˜ ์ฒ˜๋ฆฌ

  • โœ… AI ์—ฐ๋™ ์ค‘์‹ฌ โ€” Claude Desktop, VS Code, Gemini CLI ๋“ฑ MCP ํด๋ผ์ด์–ธํŠธ์™€ ์ง์ ‘ ์—ฐ๊ฒฐ

  • โœ… ๋ฌธ์„œ ํŽธ์ง‘์„ ๋„๊ตฌ ํ˜ธ์ถœ๋กœ ํ‘œ์ค€ํ™” โ€” ์ฝ๊ธฐ, ํŽธ์ง‘, ๋ณต์ œ, ๊ฒ€์ฆ์„ MCP ๋„๊ตฌ ์ง‘ํ•ฉ์œผ๋กœ ๋…ธ์ถœ

  • โœ… ์‹ค์ „ ์ž‘์—… ํ๋ฆ„์— ๋งž์ถ˜ ์„ค๊ณ„ โ€” read, copy, edit, inspect, validate๋ฅผ ํ•œ ์„œ๋ฒ„ ํ‘œ๋ฉด์œผ๋กœ ์ •๋ฆฌ

  • โœ… ์ผ๊ด€๋œ ํ˜ธ์ถœ ๋ฐฉ์‹ โ€” ๋„๊ตฌ ํ˜ธ์ถœ๋งˆ๋‹ค filename์„ ๋ช…์‹œํ•˜๋Š” stateless ๊ตฌ์กฐ

์‚ฌ์šฉ ์‚ฌ๋ก€

๋น ๋ฅธ ์‹œ์ž‘

1. ์„ค์น˜ ๋ฐ ์‹คํ–‰

uv ๊ธฐ์ค€:

uvx hwpx-mcp-server

๋˜๋Š” pip ์„ค์น˜ ํ›„ ์‹คํ–‰:

pip install hwpx-mcp-server
hwpx-mcp-server

์š”๊ตฌ ์‚ฌํ•ญ:

  • Python >= 3.10

  • python-hwpx >= 2.10.3

ํ˜„์žฌ ์ €์žฅ์†Œ ๊ธฐ์ค€ ๊ฒ€์ฆ ๋ฒ„์ „์€ python-hwpx 2.10.3์ž…๋‹ˆ๋‹ค (2026-06-09 ๊ฒ€์ฆ). ์ตœ์†Œ ์ง€์› ๋ฒ„์ „์€ python-hwpx >= 2.10.3์ž…๋‹ˆ๋‹ค.

2. MCP ํด๋ผ์ด์–ธํŠธ ์„ค์ •

HWPX plugin companion launcher

The hwpx-plugins repository builds per-host bundles whose MCP launcher (plugins/<host>/hwpx-plugin/scripts/hwpx-mcp-server) can run this server. In local development, set HWPX_MCP_SERVER_REPO=/absolute/path/to/hwpx-mcp-server and PYTHON_HWPX_REPO=/absolute/path/to/python-hwpx when the repositories are not under a common parent. The launcher otherwise discovers them by walking up from the bundle directory and uses uv run --project "$HWPX_MCP_SERVER_REPO" --with-editable "$PYTHON_HWPX_REPO" --with-editable "$HWPX_MCP_SERVER_REPO" hwpx-mcp-server.

claude_desktop_config.json

{
  "mcpServers": {
    "hwpx": {
      "command": "uvx",
      "args": ["hwpx-mcp-server"]
    }
  }
}

~/.gemini/settings.json

{
  "mcpServers": {
    "hwpx": {
      "command": "uvx",
      "args": ["hwpx-mcp-server"]
    }
  }
}

.vscode/mcp.json

{
  "servers": {
    "hwpx": {
      "command": "uvx",
      "args": ["hwpx-mcp-server"]
    }
  }
}

๊ฐ ์—๋””ํ„ฐ์˜ MCP ์„ค์ • ํŒŒ์ผ์— ๊ฐ™์€ ๋ธ”๋ก์„ ์ถ”๊ฐ€ํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

{
  "mcpServers": {
    "hwpx": {
      "command": "uvx",
      "args": ["hwpx-mcp-server"]
    }
  }
}

์ž‘์—…๋ณ„ ๋น ๋ฅธ ๊ฒฝ๋กœ

์ฒ˜์Œ๋ถ€ํ„ฐ ๋ชจ๋“  ๋„๊ตฌ๋ฅผ ์™ธ์šธ ํ•„์š”๋Š” ์—†๋‹ค. ๋ณดํ†ต์€ ์•„๋ž˜ ๋„ค ํ๋ฆ„ ์ค‘ ํ•˜๋‚˜๋กœ ์‹œ์ž‘ํ•˜๋ฉด ๋œ๋‹ค.

1. ์ฝ๊ธฐ ์ „์šฉ์œผ๋กœ ๋ฌธ์„œ๋ฅผ ํŒŒ์•…ํ•  ๋•Œ

  1. get_document_info

  2. get_document_outline ๋˜๋Š” get_document_text

  3. find_text, get_table_text, get_table_map ๊ฐ™์€ ์ฝ๊ธฐ ๋„๊ตฌ๋กœ ํ•„์š”ํ•œ ๋ถ€๋ถ„๋งŒ ๋” ๋ณธ๋‹ค.

์ด ํ๋ฆ„์€ ์›๋ณธ์„ ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

2. ์•ˆ์ „ํ•˜๊ฒŒ ์ˆ˜์ •ํ•  ๋•Œ

  1. copy_document๋กœ ์ž‘์—…์šฉ ์‚ฌ๋ณธ์„ ๋งŒ๋“ ๋‹ค.

  2. ์ฝ๊ธฐ ๋„๊ตฌ๋กœ ์ˆ˜์ • ๋Œ€์ƒ์„ ๋‹ค์‹œ ํ™•์ธํ•œ๋‹ค.

  3. search_and_replace, batch_replace, set_table_cell_text, add_paragraph ๊ฐ™์€ ๊ฐ€์žฅ ์ž‘์€ ๋ณ€๊ฒฝ ๋„๊ตฌ๋งŒ ์“ด๋‹ค.

  4. ์ˆ˜์ • ํ›„ ๋‹ค์‹œ ์ฝ๊ธฐ ๋„๊ตฌ๋กœ ๊ฒฐ๊ณผ๋ฅผ ํ™•์ธํ•œ๋‹ค.

  5. ๋‚ฉํ’ˆ์ด๋‚˜ handoff๊ฐ€ ํ•„์š”ํ•˜๋ฉด ๊ฒ€ํ† ๊ฐ€ ๋๋‚œ ๋ณต์‚ฌ๋ณธ ํŒŒ์ผ์„ ๊ทธ๋Œ€๋กœ ๋„˜๊ธด๋‹ค.

ํ•ต์‹ฌ์€ copy first, smallest edit, re-read after edits๋‹ค.

3. ๊ตฌ์กฐ ์ ๊ฒ€๊ณผ ๊ฒ€์ฆ์ด ๋ชฉ์ ์ผ ๋•Œ

  1. MCP ์„ค์ •์—์„œ HWPX_MCP_ADVANCED=1

  2. package_parts, package_get_xml, package_get_text๋กœ ๋‚ด๋ถ€ ํŒŒํŠธ๋ฅผ ๋ณธ๋‹ค.

  3. validate_structure, lint_text_conventions, plan_edit, preview_edit๋Š” ๊ธฐ๋ณธ ํŽธ์ง‘ ํ๋ฆ„๊ณผ ์„ž์ง€ ์•Š๊ณ  ์ ๊ฒ€/๊ฒ€์ฆ ๋‹จ๊ณ„์—์„œ๋งŒ ์‚ฌ์šฉํ•œ๋‹ค.

4. ํ•œ์ปด์—์„œ ์—ด๋ฆฌ์ง€ ์•Š๋Š” HWPX๋ฅผ ๋ณต๊ตฌํ•  ๋•Œ

  1. ์›๋ณธ์„ ์ง์ ‘ ๋ฎ์–ด์“ฐ์ง€ ์•Š๊ณ  repair_hwpx(source_filename, output_filename)๋กœ ๋ณต๊ตฌ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ ๋‹ค.

  2. ์ผ๋ฐ˜ ZIP open์ด ์‹คํŒจํ•˜๊ฑฐ๋‚˜ central directory ์†์ƒ์ด ์˜์‹ฌ๋˜๋ฉด recover=true๋ฅผ ์ง€์ •ํ•œ๋‹ค.

  3. ๋ฐ˜ํ™˜๊ฐ’์˜ crcOk, validatePackage.ok, reordered, recovered๋ฅผ ํ™•์ธํ•œ๋‹ค.

  4. ์ตœ์ข… handoff ์ „์—๋Š” ๊ฐ€๋Šฅํ•˜๋ฉด Hancom Office HWP ๋˜๋Š” viewer๋กœ ์‹ค์ œ ์—ด๋žŒํ•œ๋‹ค.

์•ˆ์ „ํ•œ ์‚ฌ์šฉ ์›์น™

์ด ์„œ๋ฒ„์˜ ๊ณต๊ฐœ ํ‘œ๋ฉด์€ ํ˜„์žฌ README์— ์ ํžŒ MCP ๋„๊ตฌ ์ง‘ํ•ฉ์ด๋‹ค. ์›Œํฌํ”Œ๋กœ ๋ฌธ์„œ๋‚˜ ์Šคํ‚ฌ ์˜ˆ์‹œ๋Š” ์ด ๋„๊ตฌ๋“ค์„ ์กฐํ•ฉํ•˜๋Š” ์‚ฌ์šฉ ํŒจํ„ด์ด์ง€, ๋ณ„๋„์˜ ์ƒˆ public tool ๊ณ„์•ฝ์ด ์•„๋‹ˆ๋‹ค.

์‹ค์ „์—์„œ๋Š” ์•„๋ž˜ ์ˆœ์„œ๊ฐ€ ๊ฐ€์žฅ ์•ˆ์ „ํ•˜๋‹ค.

  1. ๋จผ์ € get_document_info, get_document_text, find_text ๊ฐ™์€ ์ฝ๊ธฐ ๋„๊ตฌ๋กœ ๋ฌธ์„œ๋ฅผ ํŒŒ์•…ํ•œ๋‹ค.

  2. ์ˆ˜์ • ์ „ ๊ฒฐ๊ณผ๋ฌผ์„ ๋ณด์กดํ•ด์•ผ ํ•˜๋ฉด copy_document๋ฅผ ๋จผ์ € ํ˜ธ์ถœํ•œ๋‹ค.

  3. ์ˆ˜์ • ๋„๊ตฌ๋Š” ํ˜ธ์ถœ ์ฆ‰์‹œ ์ €์žฅ๋˜๋ฏ€๋กœ, ๊ฒ€ํ† ์šฉ ๊ฒฝ๋กœ๊ฐ€ ํ•„์š”ํ•˜๋ฉด ์›๋ณธ ๋Œ€์‹  ๋ณต์‚ฌ๋ณธ์—์„œ ์ž‘์—…ํ•œ๋‹ค.

  4. ๊ฒฐ๊ณผ๋ฌผ์„ ๋”ฐ๋กœ ๋„˜๊ฒจ์•ผ ํ•˜๋ฉด ๊ฒ€ํ† ๊ฐ€ ๋๋‚œ ๋ณต์‚ฌ๋ณธ ํŒŒ์ผ์„ handoff ๊ฒฝ๊ณ„๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

  5. package inspection, edit planning, validation์€ HWPX_MCP_ADVANCED=1์ผ ๋•Œ๋งŒ ์“ฐ๊ณ , ๊ธฐ๋ณธ ํ๋ฆ„๊ณผ ์„ž์–ด ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

์งง๊ฒŒ ๋งํ•˜๋ฉด:

  • read first

  • copy before risky edits

  • mutating tools persist immediately

  • explicit handoff uses the reviewed copy

  • advanced mode๋Š” ์ ๊ฒ€/๊ฒ€์ฆ์šฉ์œผ๋กœ ๋ถ„๋ฆฌ

๋„๊ตฌ ๋™์ž‘ ๋น ๋ฅธ ๊ฐ๊ฐ

๊ตฌ๋ถ„

๋Œ€ํ‘œ ๋„๊ตฌ

ํŠน์ง•

ํŒŒ์ผ ๊ธฐ๋ฐ˜ ์ฝ๊ธฐ ์ „์šฉ

get_document_info, get_document_text, get_paragraph_text, get_location_text, get_paragraphs_text, find_text, get_table_text, get_table_map, find_cell_by_label, list_styles, list_available_documents

๊ธฐ์กด .hwpx ํŒŒ์ผ์„ ์ฝ๊ฑฐ๋‚˜ ํƒ์ƒ‰๋งŒ ํ•œ๋‹ค. ์ €์žฅํ•˜์ง€ ์•Š๋Š”๋‹ค.

ํŒŒ์ผ ๊ธฐ๋ฐ˜ ์ฆ‰์‹œ ์ €์žฅ ์ƒ์„ฑ/ํŽธ์ง‘

create_document, create_document_from_plan, create_proposal_document, search_and_replace, batch_replace, replace_in_paragraph, replace_by_anchor, add_heading, add_paragraph, insert_paragraph, delete_paragraph, add_table, fill_by_path, set_table_cell_text, add_page_break, add_memo, add_memo_by_anchor, remove_memo, format_text, create_custom_style, merge_table_cells, split_table_cell, format_table

ํ˜ธ์ถœ ๊ฒฐ๊ณผ๊ฐ€ ๊ณง ๋Œ€์ƒ ํŒŒ์ผ ๋ณ€๊ฒฝ์ด๋‹ค. ๊ฒ€ํ† ์šฉ์ด๋ฉด ๋จผ์ € ๋ณต์‚ฌ๋ณธ์—์„œ ์ž‘์—…ํ•œ๋‹ค.

์„ ์–ธํ˜• ์ƒ์„ฑ ๊ฒ€์ฆ

validate_document_plan, analyze_document_plan, inspect_document_authoring_quality, inspect_operating_plan_quality, inspect_document_quality, analyze_template_formfit

agent๊ฐ€ ๋งŒ๋“  hwpx.document_plan.v1, P6 baseline, ๋˜๋Š” ์ƒ์„ฑ ๊ฒฐ๊ณผ๋ฅผ ๊ฒ€์ฆํ•œ๋‹ค. validate_document_plan, analyze_document_plan, analyze_template_formfit์€ ํŒŒ์ผ์„ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

repair/recover

repair_hwpx

์›๋ณธ์„ ๋ณด์กดํ•˜๊ณ  ์ƒˆ output์— mimetype-first repair-repack ๋˜๋Š” Local File Header scan ๋ณต๊ตฌ๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๋ณต์ œ / handoff ๊ฒฝ๊ณ„

copy_document

์›๋ณธ ๋ณดํ˜ธ์™€ reviewable working copy ๋ถ„๋ฆฌ์— ์“ด๋‹ค. ํ˜„์žฌ FastMCP surface์—๋Š” ๋ณ„๋„ public save / save_as tool์ด ์—†๋‹ค.

payload/url ๊ธฐ๋ฐ˜ ์ถ”์ถœ

hwpx_to_markdown, hwpx_to_html, hwpx_extract_json

ํŒŒ์ผ๋ช…์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜์ง€ ์•Š๋Š”๋‹ค. HWPX payload ๋˜๋Š” URL์„ ์ฝ์–ด ๋ณ€ํ™˜ ๊ฒฐ๊ณผ๋งŒ ๋Œ๋ ค์ค€๋‹ค.

๊ณ ๊ธ‰ ์ ๊ฒ€/๊ฒ€์ฆ

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

HWPX_MCP_ADVANCED=1์ผ ๋•Œ๋งŒ ํ™œ์„ฑํ™”ํ•œ๋‹ค. package/๊ตฌ์กฐ ์ ๊ฒ€์šฉ์ด๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ

๊ธฐ๋ณธ ๋ชจ๋“œ์—์„œ 52๊ฐœ HWPX ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•˜๋ฉฐ, ๊ณ ๊ธ‰ ๋ชจ๋“œ(HWPX_MCP_ADVANCED=1)์—์„œ๋Š” ์ ๊ฒ€ยท๊ฒ€์ฆ์šฉ ๋„๊ตฌ๊นŒ์ง€ ์ด 62๊ฐœ๊ฐ€ ํ™œ์„ฑํ™”๋ฉ๋‹ˆ๋‹ค.

์œ„์น˜ ๊ณ„์•ฝ

paragraph_index๋Š” ๋ฌธ์„œ ๋ณธ๋ฌธ ์ง์† ๋ฌธ๋‹จ์˜ 0-based ์ธ๋ฑ์Šค๋‹ค. ํ‘œ ์•ˆ ๋ฌธ๋‹จ์€ ์ด ์ธ๋ฑ์Šค์— ์„ž์ง€ ์•Š๊ณ  location ๊ฐ์ฒด๋กœ ์ง€์ •ํ•œ๋‹ค. ํ‘œ ์…€ ๋ฌธ๋‹จ location์€ {"kind":"table_cell_paragraph","table_index":0,"row":0,"col":1,"cell_paragraph_index":0} ํ˜•ํƒœ์ด๋ฉฐ, get_table_map๊ณผ find_text๊ฐ€ ๋ฐ˜ํ™˜ํ•œ ๊ฐ’์„ get_paragraph_text, get_location_text, add_memo, replace_in_paragraph์— ๊ทธ๋Œ€๋กœ ๋„˜๊ธธ ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“– ์ฝ๊ธฐ ๋ฐ ํƒ์ƒ‰

๋„๊ตฌ

์„ค๋ช…

get_document_info

๋ฌธ์„œ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ, ์„น์…˜, ๋ฌธ๋‹จ, ํ‘œ ๊ฐœ์ˆ˜ ์กฐํšŒ

get_document_text

๋ฌธ์„œ ์ „์ฒด ํ…์ŠคํŠธ ์ถ”์ถœ (max_chars ์ง€์›)

get_document_outline

์ œ๋ชฉ๊ณผ ๊ฐœ์š” ๊ตฌ์กฐ ์ถ”์ถœ

get_paragraph_text

๋ณธ๋ฌธ ๋ฌธ๋‹จ ๋˜๋Š” location์œผ๋กœ ์ง€์ •ํ•œ ํ‘œ ์…€ ๋ฌธ๋‹จ ํ…์ŠคํŠธ ์กฐํšŒ

get_location_text

get_table_map/find_text๊ฐ€ ๋ฐ˜ํ™˜ํ•œ location์œผ๋กœ ํ…์ŠคํŠธ ์กฐํšŒ

get_paragraphs_text

๋ฌธ๋‹จ ๋ฒ”์œ„ ์กฐํšŒ

list_available_documents

ํด๋” ์•ˆ์˜ .hwpx ํŒŒ์ผ ๋ชฉ๋ก ์กฐํšŒ

๐Ÿ”Ž ๊ฒ€์ƒ‰ ๋ฐ ์น˜ํ™˜

find_text๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๊ณ , search_and_replace / batch_replace๋Š” ํ˜ธ์ถœ ์ฆ‰์‹œ ์ €์žฅ๋œ๋‹ค.

๋„๊ตฌ

์„ค๋ช…

find_text

ํ‚ค์›Œ๋“œ ๊ฒ€์ƒ‰๊ณผ ์ฃผ๋ณ€ ๋ฌธ๋งฅ, ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ location/anchor ๋ฐ˜ํ™˜

search_and_replace

๋‹จ์ผ ํ…์ŠคํŠธ ์น˜ํ™˜

replace_in_paragraph

๋ณธ๋ฌธ/ํ‘œ ์…€ ๋ฌธ๋‹จ ํ•˜๋‚˜์—์„œ run ์„œ์‹์„ ์œ ์ง€ํ•˜๋ฉฐ ๋ถ€๋ถ„ ์น˜ํ™˜

replace_by_anchor

find_text๊ฐ€ ๋ฐ˜ํ™˜ํ•œ anchor์˜ ์ •ํ™•ํ•œ ์œ„์น˜์—์„œ ๋ถ€๋ถ„ ์น˜ํ™˜

batch_replace

์—ฌ๋Ÿฌ ์น˜ํ™˜ ์ž‘์—… ์ผ๊ด„ ์‹คํ–‰

โœ๏ธ ๋ฌธ์„œ ํŽธ์ง‘

์ด ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋„๊ตฌ๋Š” ๋Œ€์ฒด๋กœ ๋Œ€์ƒ ํŒŒ์ผ์— ์ฆ‰์‹œ ๋ฐ˜์˜๋œ๋‹ค. ๊ตฌ์กฐ ๋ณ€๊ฒฝ ์ „์—๋Š” copy_document๋กœ ์ž‘์—…์šฉ ์‚ฌ๋ณธ์„ ๋งŒ๋“ค๊ณ , handoff๋Š” ๊ฒ€ํ† ๊ฐ€ ๋๋‚œ ๋ณต์‚ฌ๋ณธ ํŒŒ์ผ ๊ธฐ์ค€์œผ๋กœ ์žก๋Š” ํŽธ์ด ์•ˆ์ „ํ•˜๋‹ค.

๋„๊ตฌ

์„ค๋ช…

add_heading

์ œ๋ชฉ(ํ—ค๋”ฉ) ๋ฌธ๋‹จ ์ถ”๊ฐ€

add_paragraph / insert_paragraph / delete_paragraph

๋ฌธ๋‹จ ์ถ”๊ฐ€, ์‚ฝ์ž…, ์‚ญ์ œ

add_page_break

ํŽ˜์ด์ง€ ๋‚˜๋ˆ„๊ธฐ ์ถ”๊ฐ€

add_memo / add_memo_by_anchor / remove_memo

๋ณธ๋ฌธ ๋ฌธ๋‹จ ๋˜๋Š” ํ‘œ ์…€ ๋ฌธ๋‹จ์— ๋ฉ”๋ชจ ์ถ”๊ฐ€, ๊ฒ€์ƒ‰ anchor ๊ธฐ๋ฐ˜ ๋ฉ”๋ชจ ์ถ”๊ฐ€, ์ œ๊ฑฐ

๐Ÿงพ ์„ ์–ธํ˜• ๋ฌธ์„œ ์ƒ์„ฑ

hwpx.document_plan.v1์€ agent๊ฐ€ OWPML์„ ์ง์ ‘ ๋งŒ์ง€์ง€ ์•Š๊ณ  ์ œ๋ชฉ, ๋ฌธ๋‹จ, bullet, ํ‘œ, ํ’ˆ์งˆ ๊ฒŒ์ดํŠธ๋ฅผ ์„ ์–ธํ•˜๋Š” ์ƒ์„ฑ ๊ณ„์•ฝ์ด๋‹ค.

๋„๊ตฌ

์„ค๋ช…

validate_document_plan

plan์„ ๊ฒ€์ฆํ•˜๊ณ  ์ •๊ทœํ™” ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค. ํŒŒ์ผ์€ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.

analyze_document_plan

ํŒŒ์ผ์„ ์“ฐ์ง€ ์•Š๊ณ  ์ƒ์„ฑ ๊ฐ€๋Šฅ ์—ฌ๋ถ€, ์ •๊ทœํ™” plan, ์„ ํƒํ•œ ํ’ˆ์งˆ ํ”„๋กœํ•„์˜ preview๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

create_document_from_plan

plan์„ HWPX๋กœ ์ƒ์„ฑํ•˜๊ณ  ์ฆ‰์‹œ ์ €์žฅํ•œ ๋’ค reopen/package/schema ๊ฒ€์ฆ๊ณผ ํ’ˆ์งˆ ํ”„๋กœํ•„ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

inspect_document_authoring_quality

์ƒ์„ฑ๋œ HWPX์˜ document-plan ํ’ˆ์งˆ ๊ทผ๊ฑฐ๋ฅผ ๋‹ค์‹œ ์กฐํšŒํ•œ๋‹ค. quality_profile="operating_plan"์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๋‹ค.

inspect_operating_plan_quality

์šด์˜ ๊ณ„ํš์„œ ์ œ์ถœ ํ›„๋ณด์˜ ์„น์…˜, ์ผ์ •ํ‘œ, ์‚ฌ์—…๋น„ ๊ทผ๊ฑฐ, ๊ธฐ๋Œ€ ํšจ๊ณผ, ๋งˆ๊ฐ ๋ฌธ๊ตฌ, placeholder ์ž”์—ฌ๋ฌผ์„ ์ง์ ‘ ๊ฒ€์‚ฌํ•œ๋‹ค.

analyze_template_formfit

P6 ๊ธฐ์ค€์„  ๊ธฐ๋ฐ˜ ์–‘์‹ ๋ณด์กด ์ƒ์„ฑ ๊ณ„ํš์„ ๋น„ํŒŒ๊ดด ๋ถ„์„ํ•œ๋‹ค.

apply_template_formfit

๋ถ„์„๋œ ๊ณ„ํš์„ ์›๋ณธ๊ณผ ๋‹ค๋ฅธ destination ๋ณต์‚ฌ๋ณธ์—๋งŒ ์ ์šฉํ•˜๊ณ  ๊ฒ€์ฆํ•œ๋‹ค.

create_proposal_document / inspect_document_quality

์ œ์•ˆ์„œ/๊ธฐํš์•ˆ ํŠนํ™” ํ˜ธํ™˜ ๊ฒฝ๋กœ

visual_review_required=true๋Š” ๊ตฌ์กฐ/ํŒŒ์ผ ๊ธฐ๋ฐ˜ ๊ฒ€์ฆ์€ ํ†ต๊ณผํ–ˆ์ง€๋งŒ ๋ Œ๋”๋ง๋œ ์‹œ๊ฐ ๋ ˆ์ด์•„์›ƒ์€ ์•„์ง ์ฆ๋ช…๋˜์ง€ ์•Š์•˜๋‹ค๋Š” ๋œป์ด๋‹ค. ์šด์˜ ๊ณ„ํš์„œ์™€ template-formfit ๊ฒฐ๊ณผ๋ฅผ ์ตœ์ข… ์ œ์ถœ ๊ฐ€๋Šฅ(submission-ready) ์ƒํƒœ๋กœ ์ฃผ์žฅํ•˜๋ ค๋ฉด ../hwpx-skill/scripts/visual_review.py ๋˜๋Š” ComputerUse๋กœ ์—ด๋ฆฐ ๋ฌธ์„œ๋ฅผ ๊ฒ€ํ† ํ•ด hwpx.visual-review.v1 ์ฆ๊ฑฐ๋ฅผ ๋‚จ๊ธฐ๊ณ  current.status="observed_pass"์—ฌ์•ผ ํ•œ๋‹ค. HWPX viewer๊ฐ€ ์—†๋Š” ํ™˜๊ฒฝ์—์„œ๋Š” fallback ์ฆ๊ฑฐ๋ฅผ current.status="blocked"๋กœ ๊ธฐ๋กํ•˜๊ณ  ์ž”์—ฌ ์œ„ํ—˜์„ ์œ ์ง€ํ•œ๋‹ค.

validate_document_plan ๊ฒฐ๊ณผ๊ฐ€ ok=false์ด๋ฉด issues[].code, issues[].path, repairHints[]๋ฅผ ๋ณด๊ณ  plan์„ ์ˆ˜์ •ํ•œ ๋’ค ๋‹ค์‹œ ๊ฒ€์ฆํ•œ๋‹ค. ์ด๋•Œ can_create=false์ด๋ฏ€๋กœ create_document_from_plan์„ ํ˜ธ์ถœํ•˜์ง€ ์•Š๋Š”๋‹ค. table ์˜ค๋ฅ˜๋Š” columns[].key์™€ rows[] key๋ฅผ ๋งž์ถ”๊ณ , style warning์€ ์ง€์› token์œผ๋กœ ๋ฐ”๊พธ๊ฑฐ๋‚˜ ์ƒ๋žตํ•œ๋‹ค. ์ƒ์„ฑ ํ›„ package/schema ์˜ค๋ฅ˜๊ฐ€ ์žˆ์œผ๋ฉด quality.validation.*.issues[]์™€ quality.recovery.repair_hints[]๋ฅผ ํ™•์ธํ•ด ์žฌ์ €์žฅ ๋˜๋Š” ์žฌ์ƒ์„ฑํ•œ๋‹ค.

์šด์˜ ๊ณ„ํš์„œ ์ž‘์„ฑ์€ ๋‹ค์Œ ์ˆœ์„œ๋ฅผ ๊ถŒ์žฅํ•œ๋‹ค.

  1. validate_document_plan(document_plan)์œผ๋กœ schema์™€ block/table ์˜ค๋ฅ˜๋ฅผ ๋จผ์ € ๊ณ ์นœ๋‹ค.

  2. analyze_document_plan(document_plan, quality_profile="operating_plan")์œผ๋กœ ํŒŒ์ผ ์ƒ์„ฑ ์—†์ด ํ’ˆ์งˆ preview๋ฅผ ํ™•์ธํ•œ๋‹ค.

  3. handoff_status="ready"์ด๋ฉด create_document_from_plan(filename, document_plan, quality_profile="operating_plan")์œผ๋กœ ๋ช…์‹œํ•œ ๊ฒฝ๋กœ์—๋งŒ ์ƒ์„ฑํ•œ๋‹ค.

  4. handoff_status="needs_revision"์ด๋ฉด quality.gaps[]์™€ quality.profiles.operating_plan.repair_hints[]๋ฅผ ๋ฐ˜์˜ํ•ด plan์„ ๋ณด๊ฐ•ํ•œ๋‹ค.

  5. ์ƒ์„ฑ ํ›„ get_document_text, get_table_text๋กœ ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์ฝ๋Š”๋‹ค.

  6. visual_review_required=true์ด๋ฉด visual_review.py ๋˜๋Š” ์—ด๋ฆฐ ๋ฌธ์„œ ๊ฒ€ํ† ๋กœ hwpx.visual-review.v1 ์ฆ๊ฑฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. current.status="observed_pass"๊ฐ€ ์•„๋‹ˆ๋ฉด handoff_status="ready"๋ฅผ ์ตœ์ข… ์ œ์ถœ ๊ฐ€๋Šฅ(submission-ready)์œผ๋กœ ์„ค๋ช…ํ•˜์ง€ ์•Š๋Š”๋‹ค.

์Šน์ธ๋œ HWPX ์–‘์‹์„ ๋ณด์กดํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” create_document_from_plan์œผ๋กœ ์ƒˆ ๋ฌธ์„œ๋ฅผ ๋งŒ๋“ค์ง€ ๋ง๊ณ  P6 baseline ๊ธฐ๋ฐ˜ form-fit ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

  1. analyze_template_formfit(source_filename, baseline, content, destination_filename)์œผ๋กœ ์›๋ณธ์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š๋Š”์ง€์™€ required anchor ํ•ด์†Œ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•œ๋‹ค.

  2. unresolved_count > 0์ด๋ฉด unresolved[].reason์— ๋”ฐ๋ผ content ๋˜๋Š” baseline locator๋ฅผ ๋ณด๊ฐ•ํ•œ๋‹ค.

  3. apply_template_formfit(analysis=..., confirm=true)๋กœ ์›๋ณธ๊ณผ ๋‹ค๋ฅธ destination์—๋งŒ ์ ์šฉํ•œ๋‹ค.

  4. source.preserved, validation.validate_package.ok, validation.validate_document.ok, residual_markers.blocking == []๋ฅผ ํ™•์ธํ•œ๋‹ค.

  5. visual_review_required=true์ด๋ฉด visual_review.py ๋˜๋Š” ์—ด๋ฆฐ ๋ฌธ์„œ ๊ฒ€ํ† ๋กœ hwpx.visual-review.v1 ์ฆ๊ฑฐ๋ฅผ ์ƒ์„ฑํ•œ๋‹ค. current.status="observed_pass"๊ฐ€ ์•„๋‹ˆ๋ฉด handoff_status="ready"๋ฅผ ์ตœ์ข… ์ œ์ถœ ๊ฐ€๋Šฅ(submission-ready)์œผ๋กœ ์„ค๋ช…ํ•˜์ง€ ์•Š๋Š”๋‹ค.

๐Ÿงฏ ํŒจํ‚ค์ง€ ๋ณต๊ตฌ

repair_hwpx๋Š” ์›๋ณธ์„ ์ง์ ‘ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ  ์ƒˆ output ๊ฒฝ๋กœ์— ๋ณต๊ตฌ ๋ณต์‚ฌ๋ณธ์„ ๋งŒ๋“ ๋‹ค.

๋„๊ตฌ

์„ค๋ช…

repair_hwpx

recover=false์ด๋ฉด mimetype ์ฒซ ์—”ํŠธ๋ฆฌ/ZIP_STORED ์žฌํŒจํ‚น๊ณผ CRC self-check๋ฅผ ์ˆ˜ํ–‰ํ•œ๋‹ค. recover=true์ด๋ฉด central directory ์†์ƒ ZIP์„ Local File Header scan์œผ๋กœ ๋ณต๊ตฌํ•œ ๋’ค ์žฌํŒจํ‚นํ•œ๋‹ค.

ํ™•์ธํ•  ์‘๋‹ต ํ•„๋“œ๋Š” crcOk, validatePackage.ok, reordered, recovered, entryCount๋‹ค. ๊ธฐ๊ณ„ ๊ฒ€์ฆ ํ›„์—๋„ ์ œ์ถœยท๋‚ฉํ’ˆ ์ „์—๋Š” ๊ฐ€๋Šฅํ•˜๋ฉด Hancom Office HWP ๋˜๋Š” viewer์—์„œ ์‹ค์ œ ์—ด๋žŒํ•œ๋‹ค.

๐Ÿ’พ ๋ณต์ œ

์ด ์นดํ…Œ๊ณ ๋ฆฌ๋Š” ์ˆ˜์ • ์›Œํฌํ”Œ๋กœ์˜ ์•ˆ์ „ ์žฅ์น˜๋‹ค. ์›๋ณธ ๋ณดํ˜ธ์™€ reviewable working copy ๋ถ„๋ฆฌ์— ์“ด๋‹ค.

๋„๊ตฌ

์„ค๋ช…

copy_document

์›๋ณธ์„ ๊ฑด๋“œ๋ฆฌ๊ธฐ ์ „์— ์ž‘์—…์šฉ ์‚ฌ๋ณธ ์ƒ์„ฑ

๐Ÿ“Š ํ‘œ ํŽธ์ง‘

get_table_text, get_table_map, find_cell_by_label๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๋‹ค. fill_by_path, set_table_cell_text, merge_table_cells, split_table_cell, format_table์€ ํ˜ธ์ถœ ์ฆ‰์‹œ ์ €์žฅ๋œ๋‹ค.

๋„๊ตฌ

์„ค๋ช…

add_table / get_table_text

ํ‘œ ์ƒ์„ฑ, ์กฐํšŒ

get_table_map

ํ‘œ๊ฐ€ ๋งŽ์€ ๋ฌธ์„œ์—์„œ ํ‘œ ์œ„์น˜, ํฌ๊ธฐ, caption/์ง์ „ ๋ฌธ๋‹จ ๋ฌธ๋งฅ, ์…€ ๋ฌธ๋‹จ location์„ ๋น ๋ฅด๊ฒŒ ํƒ์ƒ‰

find_cell_by_label

ํ•œ๊ตญ์–ด ์–‘์‹/ํ…œํ”Œ๋ฆฟ์—์„œ ๋ผ๋ฒจ ์…€ ๊ธฐ์ค€์œผ๋กœ ์ž…๋ ฅ ๋Œ€์ƒ ์…€ ์ฐพ๊ธฐ

fill_by_path

์„ฑ๋ช… > right, ์†Œ์† > right, ํ•ฉ๊ณ„ > down > right ๊ฐ™์€ ๊ฒฝ๋กœ ๊ตฌ๋ฌธ์œผ๋กœ ์…€ ์ฑ„์šฐ๊ธฐ

set_table_cell_text

์…€ ํ…์ŠคํŠธ ์ˆ˜์ •. ๊ธฐ๋ณธ๊ฐ’์€ ๊ธฐ์กด charPr ์„œ์‹ ๋ณด์กด์ด๋ฉฐ, split_paragraphs=true๋กœ ๋ฉ€ํ‹ฐ๋ผ์ธ์„ ์—ฌ๋Ÿฌ hp:p๋กœ ๋ถ„๋ฆฌ

merge_table_cells / split_table_cell

์…€ ๋ณ‘ํ•ฉ, ๋ถ„ํ• 

format_table

ํ‘œ ํ—ค๋” ๋“ฑ ๊ธฐ๋ณธ ์„œ์‹ ์ ์šฉ

๋ณ€๊ฒฝ ๋„๊ตฌ๋Š” ํ˜ธ์ถœ ์‹œ ์ฆ‰์‹œ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๊ฒ€ํ† ์šฉ ์‚ฌ๋ณธ์ด ํ•„์š”ํ•˜๋ฉด copy_document๋ฅผ ๋จผ์ € ์‚ฌ์šฉํ•˜๊ณ , ๋‚ฉํ’ˆ๋ณธ์€ ๊ฒ€ํ† ๊ฐ€ ๋๋‚œ ๋ณต์‚ฌ๋ณธ ํŒŒ์ผ์„ ๊ธฐ์ค€์œผ๋กœ ๊ด€๋ฆฌํ•˜์„ธ์š”.

๐ŸŽจ ์„œ์‹ ๋ฐ ์Šคํƒ€์ผ

list_styles๋Š” ์ฝ๊ธฐ ์ „์šฉ์ด๋‹ค. format_text, create_custom_style์€ ๋ฌธ์„œ๋ฅผ ์ง์ ‘ ๊ฐฑ์‹ ํ•œ๋‹ค.

๋„๊ตฌ

์„ค๋ช…

format_text

ํ…์ŠคํŠธ ๋ฒ”์œ„ ์„œ์‹ ์ ์šฉ

create_custom_style

์ปค์Šคํ…€ ์Šคํƒ€์ผ ์ƒ์„ฑ

list_styles

๋ฌธ์„œ ์Šคํƒ€์ผ ๋ชฉ๋ก ์กฐํšŒ

์Šคํƒ€์ผ ์ฐธ์กฐ ํŒ: add_paragraph(..., style=...)์™€ insert_paragraph(..., style=...)๋Š” list_styles์˜ id, create_custom_style์ด ๋ฐ˜ํ™˜ํ•˜๋Š” style_id, ์Šคํƒ€์ผ ์ด๋ฆ„์„ ๋ชจ๋‘ ๋ฐ›์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“ค ์ถ”์ถœ

์ด ์นดํ…Œ๊ณ ๋ฆฌ๋Š” filename ๊ธฐ๋ฐ˜ ํŽธ์ง‘ ๋„๊ตฌ๊ฐ€ ์•„๋‹ˆ๋‹ค. HWPX payload ๋˜๋Š” URL์„ ์ฝ์–ด ๋ณ€ํ™˜ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

๋„๊ตฌ

์„ค๋ช…

hwpx_to_markdown

HWPX ๋ฌธ์„œ๋ฅผ Markdown์œผ๋กœ ๋ณ€ํ™˜

hwpx_to_html

HWPX ๋ฌธ์„œ๋ฅผ HTML๋กœ ๋ณ€ํ™˜

hwpx_extract_json

HWPX ๋ฌธ์„œ๋ฅผ ๊ตฌ์กฐํ™”๋œ JSON์œผ๋กœ ์ถ”์ถœ

๐Ÿ”ฌ ๊ณ ๊ธ‰ ๋„๊ตฌ

HWPX_MCP_ADVANCED=1์ผ ๋•Œ ํ™œ์„ฑํ™”:

๋„๊ตฌ

์„ค๋ช…

package_parts

OPC ํŒŒํŠธ ๋ชฉ๋ก ์กฐํšŒ

package_get_xml / package_get_text

ํŒŒํŠธ XML ๋˜๋Š” ํ…์ŠคํŠธ ์กฐํšŒ

object_find_by_tag / object_find_by_attr

XML ์š”์†Œ ๊ฒ€์ƒ‰

plan_edit / preview_edit / apply_edit

ํŽธ์ง‘ ๊ณ„ํš, ๋ฏธ๋ฆฌ๋ณด๊ธฐ, ์ ์šฉ

validate_structure / lint_text_conventions

๊ตฌ์กฐ ๊ฒ€์ฆ, ํ…์ŠคํŠธ ๊ทœ์น™ ์ ๊ฒ€

๐Ÿฉบ ์„œ๋ฒ„ ์ง„๋‹จ

๋„๊ตฌ

์„ค๋ช…

mcp_server_health

transport, timeout, sandbox ๊ฒฝ๋กœ ์•ˆ๋‚ด, ๋Œ€์šฉ๋Ÿ‰ ๋ฌธ์„œ/์œ ํœด stdio/์›๊ฒฉ fetch timeout ๊ฐ™์€ disconnect ๊ฐ€๋Šฅ ์กฐ๊ฑด๊ณผ keepalive ์ ๊ฒ€ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜

ํ™˜๊ฒฝ ๋ณ€์ˆ˜

๋ณ€์ˆ˜

์„ค๋ช…

๊ธฐ๋ณธ๊ฐ’

HWPX_MCP_MAX_CHARS

ํ…์ŠคํŠธ ๋ฐ˜ํ™˜ ๋„๊ตฌ ๊ธฐ๋ณธ ์ตœ๋Œ€ ๊ธธ์ด

10000

HWPX_MCP_AUTOBACKUP

1์ด๋ฉด ์ €์žฅ ์ „ .bak ๋ฐฑ์—… ์ƒ์„ฑ

1

HWPX_MCP_ADVANCED

1์ด๋ฉด ๊ณ ๊ธ‰ ๋„๊ตฌ ํ™œ์„ฑํ™”

0

HWPX_MCP_SANDBOX_ROOT

์„ค์ • ์‹œ ์ด root ๋‚ด๋ถ€ ์ƒ๋Œ€๊ฒฝ๋กœ ๋˜๋Š” ๋‚ด๋ถ€ ์ ˆ๋Œ€๊ฒฝ๋กœ๋งŒ ํ—ˆ์šฉ

unset

HWPX_MCP_FETCH_TIMEOUT_SECONDS

URL ๊ธฐ๋ฐ˜ HWPX fetch timeout

20.0

LOG_LEVEL

๋กœ๊ทธ ๋ ˆ๋ฒจ

INFO

ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ํฌํ•จ MCP ์„ค์ • ์˜ˆ์‹œ:

{
  "mcpServers": {
    "hwpx": {
      "command": "uvx",
      "args": ["hwpx-mcp-server"],
      "env": {
        "HWPX_MCP_MAX_CHARS": "12000",
        "HWPX_MCP_AUTOBACKUP": "1",
        "HWPX_MCP_ADVANCED": "0",
        "LOG_LEVEL": "INFO"
      }
    }
  }
}

ํ…Œ์ŠคํŠธ

# ํ…Œ์ŠคํŠธ ์˜์กด์„ฑ ์„ค์น˜
python -m pip install -e ".[test]"

# ์ „์ฒด ํ…Œ์ŠคํŠธ
python -m pytest -q

์ถ”๊ฐ€ ์ฐธ๊ณ :

  • ์‚ฌ์šฉ ์‚ฌ๋ก€: docs/use-cases.md

  • ์ข…ํ•ฉ ๋ฆฌํฌํŠธ: tests/hwpx_mcp_report_updated.md

  • ์Šคํ‚ฌ ๊ธฐ๋ฐ˜ ์›Œํฌํ”Œ๋กœ: docs/skill-first-workflows.md

License

Apache License 2.0. See LICENSE and NOTICE.

์ž‘์„ฑ์ž

๊ณ ๊ทœํ˜„ โ€” ๊ด‘๊ต๊ณ ๋“ฑํ•™๊ต ์ •๋ณดยท์ปดํ“จํ„ฐ ๊ต์‚ฌ

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

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/airmang/hwpx-mcp-server'

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