Skip to main content
Glama

通用表格填充系统 (Universal Table Filler)

一个功能强大的Word文档表格填充系统,支持任意格式的Word表格智能分析和精确填充。基于MCP (Model Context Protocol) 协议,为AI提供完整的Word文档表格处理能力。

✨ 主要特性

  • 🎯 坐标填充 - 基于精确坐标的表格填充(主要功能)

  • 🔍 智能分析 - 自动分析表格结构和字段位置

  • 🤖 AI友好 - 提供AI可直接使用的MCP工具接口

  • 📄 通用支持 - 支持任意Word表格格式,无需硬编码

  • 🔄 完整工作流 - AI可以自主完成整个填充过程

  • 📋 文件管理 - 支持文档复制、工作副本创建

  • 💾 状态管理 - 智能的文档状态管理和保存机制

Related MCP server: DOCX-MCP

🚀 快速开始

系统要求

  • Python 3.8+

  • Windows 10/11 (推荐)

  • Microsoft Word 或兼容的docx处理库

安装依赖

# 克隆项目
git clone <repository-url>
cd docx_mcp

# 安装依赖
pip install -r requirements.txt

启动MCP服务器

python final_complete_server.py

服务器启动后将显示:

启动最终完整MCP服务器...
功能模块:
- 基础文档管理 (8个工具)
- 智能文档创建 (1个工具)
- 基础文本内容 (4个工具)
- 智能内容处理 (1个工具)
- 基础表格处理 (5个工具)
- 表格结构提取 (4个工具)
- 智能表格处理 (2个工具)
- 智能规划指导 (3个工具)
- 基础图片处理 (3个工具)
- 基础页面设置 (3个工具)
- 智能建议 (1个工具)
- 系统状态 (3个工具)

总计: 42个工具 (32个基础工具 + 10个智能工具)

🎯 核心功能

1. 坐标填充工作流程

这是系统的核心功能,提供精确的表格填充能力:

# 1. 分析文档结构,提取坐标信息
analysis = extract_fillable_fields("实习鉴定表.docx")

# 2. 根据分析结果创建填充计划
fill_plan = {
    "张三": [1, 0, 2],           # 表格1, 行0, 列2 (姓名字段右侧)
    "2024001234": [1, 1, 2],     # 表格1, 行1, 列2 (学号字段右侧)
    "计算机学院": [1, 0, 4],      # 表格1, 行0, 列4 (学院字段右侧)
    "软件工程专业": [1, 0, 6],    # 表格1, 行0, 列6 (专业字段右侧)
    "腾讯科技有限公司": [1, 1, 4], # 表格1, 行1, 列4 (实习单位字段右侧)
    "2024年7月-9月": [1, 1, 6]    # 表格1, 行1, 列6 (实习时间字段右侧)
}

# 3. 执行精确填充
result = fill_with_coordinates("实习鉴定表.docx", fill_plan)

2. 智能分析功能

系统会自动分析文档结构,识别:

  • 字段名称和位置

  • 可填充的空位坐标

  • 填充规则和建议

  • AI判断指导信息

3. 文件管理功能

# 创建文档副本
copy_document("原始文档.docx", "工作副本.docx")

# 创建工作副本
create_work_copy("实习鉴定表.docx", "_填写版")

📋 完整的MCP工具列表

基础文档管理 (8个工具)

  • create_document() - 创建新文档

  • open_document() - 打开现有文档

  • save_document() - 保存当前文档

  • save_as_document() - 另存为文档

  • copy_document() - 复制文档文件

  • create_work_copy() - 创建工作副本

  • close_document() - 关闭文档

  • get_document_info() - 获取文档信息

表格处理工具 (13个工具)

  • extract_fillable_fields() - 提取可填充字段坐标

  • fill_with_coordinates() - 执行精确坐标填充

  • basic_table_fill() - 基础表格填充

  • intelligent_table_fill() - 智能填充引导

  • add_table() - 添加表格

  • add_table_row() - 添加表格行

  • add_table_column() - 添加表格列

  • format_table() - 格式化表格

  • merge_table_cells() - 合并表格单元格

  • extract_table_structure() - 提取表格结构

  • extract_all_tables_structure() - 提取所有表格结构

内容处理工具 (9个工具)

  • add_paragraph() - 添加段落

  • add_heading() - 添加标题

  • add_text_with_formatting() - 添加格式化文本

  • search_and_replace() - 搜索和替换

  • smart_add_content() - 智能添加内容

  • intelligent_create_document() - 智能创建文档

  • intelligent_create_table() - 智能创建表格

其他工具 (12个工具)

  • add_image() - 添加图片

  • extract_images() - 提取图片

  • resize_image() - 调整图片大小

  • set_page_margins() - 设置页面边距

  • set_page_orientation() - 设置页面方向

  • set_page_size() - 设置页面大小

  • get_smart_suggestions() - 获取智能建议

  • get_system_status() - 获取系统状态

  • test_connection() - 测试连接

  • get_server_info() - 获取服务器信息

📊 系统优势

✅ 精确控制

  • 基于3D坐标系统 (表格索引, 行索引, 列索引)

  • 100%精确的填充位置控制

  • 支持合并单元格的智能处理

✅ 通用性强

  • 支持任意Word表格格式

  • 无需硬编码字段映射

  • 自动识别表格结构和字段类型

✅ AI友好

  • 提供AI可直接使用的MCP工具接口

  • 智能的填充建议和AI判断指导

  • 清晰的工作流程和错误处理

✅ 易于使用

  • 简单的三步工作流程:分析 → 规划 → 填充

  • 详细的使用说明和示例

  • 完善的错误处理和日志记录

✅ 高可靠性

  • 智能的文档状态管理

  • 自动的文件锁定处理

  • 完整的保存和恢复机制

🔧 技术架构

核心组件

docx_mcp/
├── core/                                    # 核心组件
│   ├── intelligent_table_analyzer.py        # 智能表格分析器
│   ├── universal_table_filler.py            # 通用表格填充器
│   ├── table_structure_extractor.py         # 表格结构提取器
│   ├── intelligent_tool_planner.py          # 智能工具规划器
│   ├── smart_suggestion_engine.py           # 智能建议引擎
│   ├── enhanced_state_manager.py            # 增强状态管理器
│   ├── ai_guidance_enhancer.py              # AI指导增强器
│   ├── workflow_engine.py                   # 工作流引擎
│   ├── template_engine.py                   # 模板引擎
│   ├── json_validation_engine.py            # JSON验证引擎
│   ├── font_processor.py                    # 字体处理器
│   ├── image_processor.py                   # 图片处理器
│   ├── oss_processor.py                     # OSS处理器
│   ├── file_path_utils.py                   # 文件路径工具
│   ├── fixed_docx_processor.py              # 修复的docx处理器
│   ├── enhanced_docx_processor.py           # 增强docx处理器
│   ├── ai_interface.py                      # AI接口
│   ├── docx_processor.py                    # docx处理器
│   ├── state_machine.py                     # 状态机
│   ├── state_manager.py                     # 状态管理器
│   └── models.py                            # 数据模型
├── templates/                               # 模板文件
│   └── academic/                            # 学术模板
│       └── academic_paper_simple.json       # 学术论文简单模板
├── tests/                                   # 测试文件
│   ├── test_universal_table_filler.py       # 通用表格填充器测试
│   ├── test_intelligent_analyzer.py         # 智能分析器测试
│   ├── test_table_structure_extractor.py    # 表格结构提取器测试
│   ├── test_intelligent_tool_planner.py     # 智能工具规划器测试
│   ├── test_smart_suggestion_engine.py      # 智能建议引擎测试
│   ├── test_enhanced_state_manager.py       # 增强状态管理器测试
│   ├── test_ai_guidance_enhancer.py         # AI指导增强器测试
│   ├── test_workflow_engine.py              # 工作流引擎测试
│   ├── test_template_engine.py              # 模板引擎测试
│   ├── test_json_validation_engine.py       # JSON验证引擎测试
│   ├── test_font_processor.py               # 字体处理器测试
│   ├── test_image_processor.py              # 图片处理器测试
│   ├── test_oss_processor.py                # OSS处理器测试
│   └── test_integration.py                  # 集成测试
├── docs/                                    # 测试文档
│   ├── 附件7:岭南师范学院毕业(生产)实习鉴定表A3打印.docx
│   ├── 附件11:岭南师范学院专业实习优秀实习生登记表.docx
│   └── ... (其他测试文档)
├── final_complete_server.py                 # 主MCP服务器
├── requirements.txt                         # 依赖文件
├── pyproject.toml                          # 项目配置
├── README.md                               # 项目说明
├── LICENSE                                 # 许可证
└── COMPREHENSIVE_PROJECT_DOCUMENTATION.md  # 完整项目文档

数据流程

文档输入 → 结构分析 → 字段识别 → 坐标提取 → 填充规划 → 精确填充 → 文档保存
    ↓         ↓         ↓         ↓         ↓         ↓         ↓
   .docx → 表格结构 → 字段位置 → 3D坐标 → 填充计划 → 内容写入 → 保存完成

🎯 使用示例

示例1:填写实习鉴定表

# 1. 打开文档
open_document("实习鉴定表.docx")

# 2. 分析文档结构
analysis = extract_fillable_fields("实习鉴定表.docx")
print("字段坐标:", analysis['field_coordinates'])
print("填充建议:", analysis['fill_suggestions'])

# 3. 创建填充计划
fill_plan = {
    "张三": [1, 0, 2],                    # 姓名
    "2024001234": [1, 1, 2],              # 学号
    "计算机学院": [1, 0, 4],               # 学院
    "软件工程专业2021级1班": [1, 0, 6],     # 专业班别
    "腾讯科技有限公司": [1, 1, 4],          # 实习单位
    "2024年7月-2024年9月": [1, 1, 6]       # 实习时间
}

# 4. 执行填充
result = fill_with_coordinates("实习鉴定表.docx", fill_plan)
print("填充结果:", result)

# 5. 保存文档
save_document()

示例2:智能填充

# 使用智能填充功能(自动匹配字段)
fill_data = {
    "姓名": "张三",
    "学号": "2024001234",
    "学院": "计算机学院",
    "专业": "软件工程专业",
    "实习单位": "腾讯科技有限公司",
    "实习时间": "2024年7月-2024年9月"
}

result = basic_table_fill("实习鉴定表.docx", fill_data)
print("智能填充结果:", result)

示例3:文档管理

# 创建文档副本
copy_result = copy_document(
    "原始文档.docx", 
    "工作副本.docx"
)

# 创建工作副本
work_copy = create_work_copy(
    "实习鉴定表.docx", 
    "_填写版"
)

# 打开工作副本
open_document("实习鉴定表_填写版.docx")

# 进行填充操作...

# 保存并关闭
save_document()
close_document()

🔍 坐标系统说明

3D坐标格式

  • 格式: [表格索引, 行索引, 列索引]

  • 表格索引: 从0开始,表示文档中的第几个表格

  • 行索引: 从0开始,表示表格中的第几行

  • 列索引: 从0开始,表示表格中的第几列

填充规则

  1. 字段右侧填充: 字段值通常填在字段名的右侧,即 (z, x, y+1)

  2. 字段下方填充: 某些情况下填在字段名的下方,即 (z, x+1, y)

  3. AI判断指导: 系统会提供AI判断指导,帮助决定是否覆盖现有内容

示例坐标

# 表格1的基本信息填充
"张三": [1, 0, 2],           # 姓名字段右侧
"计算机学院": [1, 0, 4],      # 学院字段右侧
"2024001234": [1, 1, 2],     # 学号字段右侧
"腾讯科技有限公司": [1, 1, 4]  # 实习单位字段右侧

🛠️ 开发指南

添加新的填充规则

  1. 修改 core/intelligent_table_analyzer.py 中的 _generate_fill_rules 方法

  2. core/universal_table_filler.py 中添加新的填充逻辑

  3. 更新测试文件验证新功能

扩展MCP工具

  1. final_complete_server.py 中添加新的工具函数

  2. 使用 @mcp.tool() 装饰器注册工具

  3. 更新 available_tools 列表

运行测试

# 运行所有测试
python -m pytest tests/

# 运行特定测试
python tests/test_universal_table_filler.py
python tests/test_intelligent_analyzer.py

# 运行集成测试
python tests/test_integration.py

📚 详细文档

查看以下文档获取更多信息:

🐛 故障排除

常见问题

  1. 文档被锁定

    # 解决方案:关闭文档后重新打开
    close_document()
    open_document("文档.docx")
  2. 填充位置错误

    # 解决方案:检查坐标格式,确保使用 [表格索引, 行索引, 列索引]
  3. MCP工具未注册

    # 解决方案:重启MCP服务器
    python final_complete_server.py

调试模式

# 启用详细日志
export LOG_LEVEL=DEBUG
python final_complete_server.py

🤝 贡献指南

如何贡献

  1. Fork 项目

  2. 创建特性分支 (git checkout -b feature/AmazingFeature)

  3. 提交更改 (git commit -m 'Add some AmazingFeature')

  4. 推送到分支 (git push origin feature/AmazingFeature)

  5. 打开 Pull Request

代码规范

  • 使用 Python 3.8+ 语法

  • 遵循 PEP 8 代码风格

  • 添加适当的类型注解

  • 编写单元测试

  • 更新文档

📄 许可证

本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。

🙏 致谢

📞 支持

如果您遇到问题或有任何建议,请:

  1. 查看 故障排除 部分

  2. 搜索现有的 Issues

  3. 创建新的 Issue 描述您的问题

  4. 联系维护者


注意: 这是一个功能强大的表格填充系统,专为AI和自动化场景设计。请确保在使用前充分了解系统的功能和限制。

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

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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/rockcj/Docx_MCP_cj'

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