hwp-mcp

jkf87/hwp-mcp

3.6

If you are the rightful owner of hwp-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

HWP-MCP is a Model Context Protocol server that allows AI models like Claude to control the Korean word processor (HWP) for document creation, editing, and manipulation.

HWP-MCP (ν•œκΈ€ Model Context Protocol)

GitHub

HWP-MCPλŠ” ν•œκΈ€ μ›Œλ“œ ν”„λ‘œμ„Έμ„œ(HWP)λ₯Ό Claude와 같은 AI λͺ¨λΈμ΄ μ œμ–΄ν•  수 μžˆλ„λ‘ ν•΄μ£ΌλŠ” Model Context Protocol(MCP) μ„œλ²„μž…λ‹ˆλ‹€. 이 ν”„λ‘œμ νŠΈλŠ” ν•œκΈ€ λ¬Έμ„œλ₯Ό μžλ™μœΌλ‘œ 생성, νŽΈμ§‘, μ‘°μž‘ν•˜λŠ” κΈ°λŠ₯을 AIμ—κ²Œ μ œκ³΅ν•©λ‹ˆλ‹€.

μ£Όμš” κΈ°λŠ₯

  • λ¬Έμ„œ 생성 및 관리: μƒˆ λ¬Έμ„œ 생성, μ—΄κΈ°, μ €μž₯ κΈ°λŠ₯
  • ν…μŠ€νŠΈ νŽΈμ§‘: ν…μŠ€νŠΈ μ‚½μž…, κΈ€κΌ΄ μ„€μ •, 단락 μΆ”κ°€
  • ν…Œμ΄λΈ” μž‘μ—…: ν…Œμ΄λΈ” 생성, 데이터 μ±„μš°κΈ°, μ…€ λ‚΄μš© μ„€μ •
  • μ™„μ„±λœ λ¬Έμ„œ 생성: ν…œν”Œλ¦Ώ 기반 λ³΄κ³ μ„œ 및 νŽΈμ§€ μžλ™ 생성
  • 일괄 μž‘μ—…: μ—¬λŸ¬ μž‘μ—…μ„ ν•œ λ²ˆμ— μ‹€ν–‰ν•˜λŠ” 배치 κΈ°λŠ₯

μ‹œμŠ€ν…œ μš”κ΅¬μ‚¬ν•­

  • Windows 운영체제
  • ν•œκΈ€(HWP) ν”„λ‘œκ·Έλž¨ μ„€μΉ˜
  • Python 3.7 이상
  • ν•„μˆ˜ Python νŒ¨ν‚€μ§€ (requirements.txt μ°Έμ‘°)

μ„€μΉ˜ 방법

  1. μ €μž₯μ†Œ 클둠:
git clone https://github.com/jkf87/hwp-mcp.git
cd hwp-mcp
  1. μ˜μ‘΄μ„± μ„€μΉ˜:
pip install -r requirements.txt
  1. (선택사항) MCP νŒ¨ν‚€μ§€ μ„€μΉ˜:
pip install mcp

μ‚¬μš© 방법

Claude와 ν•¨κ»˜ μ‚¬μš©ν•˜κΈ°

Claude λ°μŠ€ν¬ν†± μ„€μ • νŒŒμΌμ— λ‹€μŒκ³Ό 같이 HWP-MCP μ„œλ²„λ₯Ό λ“±λ‘ν•˜μ„Έμš”:

{
  "mcpServers": {
    "hwp": {
      "command": "python",
      "args": ["경둜/hwp-mcp/hwp_mcp_stdio_server.py"]
    }
  }
}

μ£Όμš” κΈ°λŠ₯ μ˜ˆμ‹œ

μƒˆ λ¬Έμ„œ 생성
hwp_create()
ν…μŠ€νŠΈ μ‚½μž…
hwp_insert_text("μ›ν•˜λŠ” ν…μŠ€νŠΈλ₯Ό μž…λ ₯ν•˜μ„Έμš”.")
ν…Œμ΄λΈ” 생성 및 데이터 μž…λ ₯
# ν…Œμ΄λΈ” 생성
hwp_insert_table(rows=5, cols=2)

# ν…Œμ΄λΈ”μ— 데이터 μ±„μš°κΈ°
hwp_fill_table_with_data([
    ["μ›”", "νŒλ§€λŸ‰"], 
    ["1μ›”", "120"], 
    ["2μ›”", "150"], 
    ["3μ›”", "180"], 
    ["4μ›”", "200"]
], has_header=True)

# ν‘œμ— μ—°μ†λœ 숫자 μ±„μš°κΈ°
hwp_fill_column_numbers(start=1, end=10, column=1, from_first_cell=True)
λ¬Έμ„œ μ €μž₯
hwp_save("경둜/λ¬Έμ„œλͺ….hwp")
일괄 μž‘μ—… μ˜ˆμ‹œ
hwp_batch_operations([
    {"operation": "hwp_create"},
    {"operation": "hwp_insert_text", "params": {"text": "제λͺ©"}},
    {"operation": "hwp_set_font", "params": {"size": 20, "bold": True}},
    {"operation": "hwp_save", "params": {"path": "경둜/λ¬Έμ„œλͺ….hwp"}}
])

ν”„λ‘œμ νŠΈ ꡬ쑰

hwp-mcp/
β”œβ”€β”€ hwp_mcp_stdio_server.py  # 메인 μ„œλ²„ 슀크립트
β”œβ”€β”€ requirements.txt         # μ˜μ‘΄μ„± νŒ¨ν‚€μ§€ λͺ©λ‘
β”œβ”€β”€ hwp-mcp-ꡬ쑰섀λͺ….md       # ν”„λ‘œμ νŠΈ ꡬ쑰 μ„€λͺ… λ¬Έμ„œ
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ tools/
β”‚   β”‚   β”œβ”€β”€ hwp_controller.py  # ν•œκΈ€ μ œμ–΄ 핡심 컨트둀러
β”‚   β”‚   └── hwp_table_tools.py # ν…Œμ΄λΈ” κ΄€λ ¨ κΈ°λŠ₯ μ „λ¬Έ λͺ¨λ“ˆ
β”‚   β”œβ”€β”€ utils/                 # μœ ν‹Έλ¦¬ν‹° ν•¨μˆ˜
β”‚   └── __tests__/             # ν…ŒμŠ€νŠΈ λͺ¨λ“ˆ
└── security_module/
    └── FilePathCheckerModuleExample.dll  # λ³΄μ•ˆ λͺ¨λ“ˆ

νŠΈλŸ¬λΈ”μŠˆνŒ…

λ³΄μ•ˆ λͺ¨λ“ˆ κ΄€λ ¨ 문제

기본적으둜 ν•œκΈ€ ν”„λ‘œκ·Έλž¨μ€ μ™ΈλΆ€μ—μ„œ 파일 μ ‘κ·Ό μ‹œ λ³΄μ•ˆ κ²½κ³ λ₯Ό ν‘œμ‹œν•©λ‹ˆλ‹€. 이λ₯Ό μš°νšŒν•˜κΈ° μœ„ν•΄ FilePathCheckerModuleExample.dll λͺ¨λ“ˆμ„ μ‚¬μš©ν•©λ‹ˆλ‹€. λ§Œμ•½ λ³΄μ•ˆ λͺ¨λ“ˆ 등둝에 μ‹€νŒ¨ν•΄λ„ κΈ°λŠ₯은 μž‘λ™ν•˜μ§€λ§Œ, 파일 μ—΄κΈ°/μ €μž₯ μ‹œ λ³΄μ•ˆ λŒ€ν™” μƒμžκ°€ ν‘œμ‹œλ  수 μžˆμŠ΅λ‹ˆλ‹€.

ν•œκΈ€ μ—°κ²° μ‹€νŒ¨

ν•œκΈ€ ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰ 쀑이지 μ•Šμ„ 경우 연결에 μ‹€νŒ¨ν•  수 μžˆμŠ΅λ‹ˆλ‹€. ν•œκΈ€ ν”„λ‘œκ·Έλž¨μ΄ μ„€μΉ˜λ˜μ–΄ 있고 정상 μž‘λ™ν•˜λŠ”μ§€ ν™•μΈν•˜μ„Έμš”.

ν…Œμ΄λΈ” 데이터 μž…λ ₯ 문제

ν…Œμ΄λΈ”μ— 데이터λ₯Ό μž…λ ₯ν•  λ•Œ μ»€μ„œ μœ„μΉ˜κ°€ μ˜ˆμƒκ³Ό λ‹€λ₯΄κ²Œ λ™μž‘ν•˜λŠ” κ²½μš°κ°€ μžˆμ—ˆμœΌλ‚˜, ν˜„μž¬ λ²„μ „μ—μ„œλŠ” 이 λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€. ν…Œμ΄λΈ”μ˜ λͺ¨λ“  셀에 μ •ν™•ν•˜κ²Œ 데이터가 μž…λ ₯λ©λ‹ˆλ‹€.

λ³€κ²½ 둜그

2025-03-27

  • ν‘œ 생성 및 데이터 μ±„μš°κΈ° κΈ°λŠ₯ κ°œμ„ 
    • ν‘œ μ•ˆμ— ν‘œκ°€ μ€‘μ²©λ˜λŠ” 문제 ν•΄κ²°
    • ν‘œ 생성과 데이터 μ±„μš°κΈ° κΈ°λŠ₯ 뢄리
    • ν‘œ 생성 μ „ ν˜„μž¬ μ»€μ„œ μœ„μΉ˜ 확인 둜직 μΆ”κ°€
    • κΈ°μ‘΄ ν‘œμ— λ°μ΄ν„°λ§Œ μ±„μš°λŠ” κΈ°λŠ₯ κ°œμ„ 
  • ν”„λ‘œμ νŠΈ 관리 κ°œμ„ 
    • .gitignore 파일 μΆ”κ°€ (μž„μ‹œ 파일, μΊμ‹œ 파일 λ“± μ œμ™Έ)

2025-03-25

  • ν…Œμ΄λΈ” 데이터 μž…λ ₯ κΈ°λŠ₯ κ°œμ„ 
    • 첫 번째 μ…€λΆ€ν„° μ •ν™•ν•˜κ²Œ 데이터 μž…λ ₯ κ°€λŠ₯
    • μ…€ 선택 및 μ»€μ„œ μœ„μΉ˜ μ„€μ • 둜직 κ°œμ„ 
    • ν…μŠ€νŠΈ μž…λ ₯ μ‹œ μ»€μ„œ μœ„μΉ˜ μœ μ§€ κΈ°λŠ₯ μΆ”κ°€
  • ν…Œμ΄λΈ” μ „μš© 도ꡬ λͺ¨λ“ˆ(hwp_table_tools.py) μΆ”κ°€
  • hwp_fill_column_numbers ν•¨μˆ˜μ— from_first_cell μ˜΅μ…˜ μΆ”κ°€

λΌμ΄μ„ μŠ€

이 ν”„λ‘œμ νŠΈλŠ” MIT λΌμ΄μ„ μŠ€μ— 따라 λ°°ν¬λ©λ‹ˆλ‹€. μžμ„Έν•œ λ‚΄μš©μ€ νŒŒμΌμ„ μ°Έμ‘°ν•˜μ„Έμš”.

κΈ°μ—¬ 방법

  1. 이슈 제보 λ˜λŠ” κΈ°λŠ₯ μ œμ•ˆ: GitHub 이슈λ₯Ό μ‚¬μš©ν•˜μ„Έμš”.
  2. μ½”λ“œ κΈ°μ—¬: 변경사항을 ν¬ν•¨ν•œ Pull Requestλ₯Ό μ œμΆœν•˜μ„Έμš”.

κ΄€λ ¨ ν”„λ‘œμ νŠΈ

μ—°λ½μ²˜

ν”„λ‘œμ νŠΈ κ΄€λ ¨ λ¬Έμ˜λŠ” GitHub 이슈, μ½”λ‚œμŒ€λ₯Ό 톡해 ν•΄μ£Όμ„Έμš”.