README
🚀 HWP MCP 服务器
HWP MCP 服务器借助 HWP COM API,使大语言模型(LLMs)能够读取和修改二进制 HWP(韩文字处理软件文档)文件。
🚀 快速开始
运行 MCP 服务器
python -m hwp_mcp.server
Claude 桌面配置
{
"mcpServers": {
"hwp": {
"command": "uv",
"args": ["run", "--directory", "/path/to/hwp-mcp", "hwp-mcp"]
}
}
}
✨ 主要特性
- 支持大语言模型通过 HWP COM API 读取和修改二进制 HWP 文档。
- 提供丰富的工具集,涵盖文档管理、读写、格式设置、表格操作等多个方面。
📦 安装指南
uv pip install -e .
💻 使用示例
基础用法
# 运行 MCP 服务器
python -m hwp_mcp.server
📚 详细文档
MCP 工具(140 个)
文档管理(5 个)
| 工具 | 描述 |
|------|-------------|
| open_document | 打开 HWP 文档 |
| close_document | 关闭文档 |
| list_open_documents | 列出已打开的文档 |
| save_document | 保存文档 |
| save_document_as | 以不同名称/格式保存文档 |
读取(5 个)
| 工具 | 描述 |
|------|-------------|
| get_document_text | 提取全文 |
| get_paragraphs | 获取段落列表 |
| get_tables | 获取表格列表 |
| get_table_data | 获取表格数据(二维数组) |
| search_text | 搜索文本 |
写入(5 个)
| 工具 | 描述 |
|------|-------------|
| replace_text | 替换文本 |
| insert_text | 插入文本 |
| set_table_cell_text | 设置表格单元格文本 |
| append_paragraph | 追加段落 |
| set_text_file | 根据文本数据设置文档内容 |
格式设置(3 个)
| 工具 | 描述 |
|------|-------------|
| set_text_style | 字符格式设置(字体、大小、加粗、颜色等) |
| set_paragraph_style | 段落格式设置(对齐方式、行间距) |
| set_page_style | 页面格式设置(页边距、方向) |
表格(3 个)
| 工具 | 描述 |
|------|-------------|
| create_table | 创建表格 |
| add_table_row | 添加表格行 |
| delete_table_row | 删除表格行 |
高级操作(5 个)
| 工具 | 描述 |
|------|-------------|
| run_hwp_action | 执行任意 HWP 操作(高级用户) |
| convert_to_hwpx | 将 HWP 转换为 HWPX |
| convert_to_pdf | 将 HWP 转换为 PDF |
| batch_convert_files | 批量转换文件(HWP、PDF、DOCX 等) |
| set_file_security | 文件安全设置(复制/打印限制) |
光标与导航(11 个)
| 工具 | 描述 |
|------|-------------|
| move_cursor | 将光标移动到指定位置 |
| get_cursor_position | 获取当前光标位置 |
| set_cursor_position | 设置光标位置(列表、段落、位置) |
| get_pos_by_set | 获取光标位置作为集合 |
| set_pos_by_set | 根据集合设置光标位置 |
| get_selected_pos_by_set | 获取选择的起始/结束位置 |
| select_text | 通过坐标选择文本范围 |
| get_selection_info | 获取当前选择信息 |
| clear_selection | 清除选择 |
| delete_selection | 删除所选内容 |
| init_scan | 初始化文档扫描 |
字段(12 个)
| 工具 | 描述 |
|------|-------------|
| create_field | 创建命名字段(模板占位符) |
| field_exists | 检查字段是否存在 |
| get_field_list | 获取所有字段名称 |
| get_field_text | 读取字段文本 |
| put_field_text | 设置字段文本 |
| get_current_field | 获取光标处的字段名称 |
| set_current_field_name | 设置当前字段名称 |
| move_to_field | 将光标移动到字段 |
| rename_field | 重命名字段 |
| modify_field_properties | 修改字段属性 |
| set_field_ctrl_properties | 设置字段控件属性 |
| batch_fill_fields | 批量填充多个字段 |
高级表格(11 个)
| 工具 | 描述 |
|------|-------------|
| add_table_column | 添加表格列 |
| delete_table_column | 删除表格列 |
| merge_table_cells | 合并单元格 |
| split_table_cell | 拆分单元格 |
| set_table_cell_style_adv | 单元格样式(背景、垂直对齐) |
| set_table_border_adv | 表格边框样式 |
| table_to_text | 表格转换为文本 |
| text_to_table | 文本转换为表格 |
| swap_table_row_col | 交换表格行/列 |
| apply_table_template | 应用表格模板 |
增强格式设置(5 个)
| 工具 | 描述 |
|------|-------------|
| set_char_shape | 扩展字符属性(字距、间距、阴影等) |
| set_bullet_style | 项目符号样式 |
| set_numbering_style | 编号样式 |
| set_tab_definition | 制表位 |
| manage_style | 创建/删除/应用样式 |
页面与章节(10 个)
| 工具 | 描述 |
|------|-------------|
| set_section_definition | 章节定义(装订边距、文本流向) |
| set_page_border | 页面边框和背景 |
| set_columns | 多列布局 |
| set_page_number | 页码 |
| set_header_footer | 页眉/页脚 |
| set_footnote_style | 脚注样式 |
| set_master_page | 母版页 |
| set_page_hiding | 隐藏页面元素(页眉/页脚等) |
| set_page_num_ctrl | 页码控制(重新开始编号) |
| set_text_direction | 文本方向(水平/垂直) |
图像与公式(3 个)
| 工具 | 描述 |
|------|-------------|
| insert_picture | 插入图片 |
| insert_background_picture | 插入背景图片 |
| create_equation | 插入公式 |
表单控件(3 个)
| 工具 | 描述 |
|------|-------------|
| insert_form_control | 插入表单控件(按钮、复选框等) |
| set_form_properties | 设置表单控件属性 |
| get_form_data | 读取表单数据 |
文档信息(5 个)
| 工具 | 描述 |
|------|-------------|
| get_document_info | 文档元数据(页数、修改状态) |
| get_document_summary | 文档摘要(标题、作者) |
| get_page_text | 提取特定页面的文本 |
| get_page_count | 总页数 |
| export_page_as_image | 将页面导出为图像 |
打印与导出(3 个)
| 工具 | 描述 |
|------|-------------|
| print_document | 打印文档 |
| set_watermark | 设置水印(文本/图像) |
| save_as_image | 将文档保存为图像 |
实用工具(4 个)
| 工具 | 描述 |
|------|-------------|
| convert_units | 单位转换(毫米、磅、HWP 单位) |
| rgb_color | RGB/十六进制颜色转换为 HWP 颜色值 |
| run_macro | 运行 HWP 宏 |
| get_file_info | 获取文件元数据(无需打开) |
书签与超链接(6 个)
| 工具 | 描述 |
|------|-------------|
| insert_bookmark | 插入书签 |
| insert_hyperlink | 插入超链接 |
| hyperlink_jump | 跳转到超链接目标 |
| insert_index_mark | 插入索引标记 |
| insert_auto_number | 插入自动编号字段 |
| insert_cross_reference | 插入交叉引用 |
页眉/页脚与标题(2 个)
| 工具 | 描述 |
|------|-------------|
| set_drop_cap | 首字下沉(装饰性首字母) |
| set_caption | 表格/图像标题 |
文档操作(8 个)
| 工具 | 描述 |
|------|-------------|
| sort_text | 对文本进行排序 |
| spell_check | 拼写检查 |
| set_track_changes | 跟踪更改 |
| mail_merge | 邮件合并 |
| make_table_of_contents | 生成目录 |
| insert_file | 插入另一个文件 |
| set_password | 设置文档密码 |
| save_block | 将选择内容保存到文件 |
兼容性与设置(3 个)
| 工具 | 描述 |
|------|-------------|
| set_compatible_document | 文档兼容模式 |
| set_view_properties | HWP 视图属性(缩放、视图模式等) |
| set_engine_properties | HWP 引擎属性(拼写检查、自动保存等) |
控件与对象(4 个)
| 工具 | 描述 |
|------|-------------|
| delete_ctrl | 删除所选控件 |
| find_ctrl | 查找控件 |
| check_x_object | 检查 X 对象是否存在 |
| release_scan | 释放扫描资源 |
样式与脚本(4 个)
| 工具 | 描述 |
|------|-------------|
| import_style | 导入样式 |
| export_style | 导出样式 |
| run_script | 运行 HWP 脚本 |
| get_script_source | 获取脚本源代码 |
系统与安全(11 个)
| 工具 | 描述 |
|------|-------------|
| register_module | 注册 COM 模块 |
| set_drm_authority | DRM 权限 |
| lock_command | 锁定/解锁命令 |
| is_command_lock | 检查命令锁定状态 |
| set_message_box_mode | 消息框模式 |
| get_message_box_mode | 获取消息框模式 |
| is_action_enable | 检查操作是否启用 |
| replace_action | 替换操作处理程序 |
| get_hwp_property | 获取 HWP COM 属性 |
| set_hwp_property | 设置 HWP COM 属性 |
| hwp_enum | 字符串转换为 HWP 枚举值 |
HParameterSet 操作(10 个)
| 工具 | 描述 | HParameterSet 数量 |
|------|-------------|---------------------|
| hwp_table_param_action | 表格操作 | 14 |
| hwp_file_param_action | 文件操作 | 11 |
| hwp_draw_param_action | 绘图对象操作 | 22 |
| hwp_shape_param_action | 形状操作 | 6 |
| hwp_style_param_action | 样式/边框操作 | 6 |
| hwp_form_param_action | 表单操作 | 13 |
| hwp_doc_info_param_action | 文档信息操作 | 9 |
| hwp_hanja_param_action | 汉字/转换操作 | 11 |
| hwp_selection_param_action | 选择/位置操作 | 6 |
| hwp_misc_param_action | 杂项操作 | 69 |
项目结构
hwp-mcp/
├── src/hwp_mcp/
│ ├── __init__.py
│ ├── _core.py # FastMCP 实例与共享辅助函数
│ ├── server.py # 入口点,导入所有工具模块
│ ├── bridge.py # PowerShell 子进程管理器
│ ├── commands.py # JSON 命令构建器
│ └── tools/ # MCP 工具定义(140 个工具)
│ ├── 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 桥接调度器
│ └── handlers/ # 12 个处理模块
│ ├── 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 # 桥接单元测试
│ ├── test_commands.py # 命令构建器单元测试
│ └── test_server.py # 服务器工具单元测试
└── pyproject.toml
开发
uv pip install -e ".[dev]"
pytest tests/ -v
ruff check src/ tests/
🔧 技术细节
Python MCP 服务器管理一个长期运行的 PowerShell 子进程,该子进程托管 HWP COM 对象。架构如下:
LLM ↔ MCP Server (Python/FastMCP) ↔ PowerShell Bridge (JSON stdin/stdout) ↔ HWP COM API ↔ 한글
📄 许可证
本项目采用 MIT 许可证。
⚠️ 局限性
- 仅支持 Windows:HWP COM API 仅在 Windows 系统上可用。
- 需要安装韩文字处理软件:必须安装 한컴오피스 한글。
- 仅支持二进制 HWP 文件:基于 XML 的 HWPX 文件需要单独的服务器。
Scan to join WeChat group