Skip to main content
Glama
cleanup.py6.93 kB
"""Word 文档清理工具.""" from typing import Any from fastmcp import FastMCP from loguru import logger from office_mcp_server.handlers.word_handler import WordHandler def register_cleanup_tools(mcp: FastMCP, word_handler: WordHandler) -> None: """注册 Word 文档清理工具.""" @mcp.tool() def delete_empty_paragraphs_in_word( filename: str, ) -> dict[str, Any]: """删除 Word 文档中的所有空段落. 自动识别并删除文档中的所有空段落(不包含任何文本的段落), 可以有效减少文档页数,提升文档紧凑度。 Args: filename: 文件名 Returns: dict: 操作结果,包含: - deleted_count: 删除的空段落数量 - total_before: 删除前的总段落数 - total_after: 删除后的总段落数 - deleted_indices: 被删除的段落索引列表 注意: - 从后向前遍历删除,确保索引不会错位 - 只删除完全为空的段落(去除空白字符后无内容) - 删除操作不可逆,建议先备份文档 """ logger.info(f"MCP工具调用: delete_empty_paragraphs_in_word(filename={filename})") return word_handler.delete_empty_paragraphs(filename) @mcp.tool() def delete_paragraphs_by_indices_in_word( filename: str, paragraph_indices: list[int], ) -> dict[str, Any]: """按索引批量删除 Word 文档中的段落. 根据提供的段落索引列表批量删除段落,适用于需要精确控制删除内容的场景。 Args: filename: 文件名 paragraph_indices: 要删除的段落索引列表(从0开始) Returns: dict: 操作结果,包含: - deleted_count: 成功删除的段落数量 - total_requested: 请求删除的段落数量 - total_before: 删除前的总段落数 - total_after: 删除后的总段落数 - failed_indices: 删除失败的索引列表 注意: - 索引从0开始计数 - 自动去重并从大到小排序,避免索引错位 - 超出范围的索引会被跳过并记录在 failed_indices 中 - 删除操作不可逆,建议先备份文档 """ logger.info(f"MCP工具调用: delete_paragraphs_by_indices_in_word(filename={filename}, indices={len(paragraph_indices)})") return word_handler.delete_paragraphs_by_indices(filename, paragraph_indices) @mcp.tool() def analyze_word_page_waste( filename: str, ) -> dict[str, Any]: """分析 Word 文档的页面浪费情况并给出优化建议. 智能分析文档中浪费空间的问题,包括: - 空段落数量 - 过大的段前段后间距(>18pt) - 过大的字号(>18pt) - 过大的行距(>1.5倍) 并估算优化后可节省的页数,给出具体的优化建议。 Args: filename: 文件名 Returns: dict: 分析结果,包含: - analysis: 详细分析数据 * empty_paragraphs: 空段落数量 * empty_paragraph_indices: 空段落索引列表 * large_spacing: 过大间距的段落列表 * large_font_size: 过大字号的段落列表 * large_line_spacing: 过大行距的段落列表 * optimization_potential_pages: 预计可节省的页数 - suggestions: 优化建议列表 使用场景: - 在优化文档前先分析问题所在 - 评估优化潜力 - 获取针对性的优化建议 - 验证优化效果 建议: 分析后可使用 auto_format_word_document 工具的 'compact' 预设进行一键优化 """ logger.info(f"MCP工具调用: analyze_word_page_waste(filename={filename})") return word_handler.analyze_page_waste(filename) @mcp.tool() def suggest_word_compression_strategy( filename: str, ) -> dict[str, Any]: """智能推荐 Word 文档压缩策略(AI辅助优化). 基于文档内容智能分析文档类型,并推荐最佳的压缩方案。 功能特性: - 自动检测文档类型(商务报告、学术论文、技术文档、法律文书等) - 根据文档类型推荐最适合的格式预设 - 评估压缩潜力(high/medium/low) - 提供针对性的优化建议 - 对特殊文档类型给出警告(如法律文书不建议压缩) 文档类型识别: - 商务报告:包含"报告"、"方案"、"计划"等关键词 → 推荐 compact 预设 - 学术论文:包含"研究"、"分析"、"论文"等关键词 → 推荐 academic 预设(不建议过度压缩) - 技术文档:包含"开发"、"API"、"技术"等关键词 → 推荐 compact 预设 - 法律文书:包含"合同"、"协议"、"条款"等关键词 → 不建议压缩 - 医疗报告:包含"诊断"、"治疗"、"病历"等关键词 → 推荐 professional 预设 - 教育文档:包含"教学"、"课程"、"学习"等关键词 → 推荐 simple 预设 - 政府公文:包含"通知"、"公告"、"决定"等关键词 → 不建议压缩 Args: filename: 文件名 Returns: dict: 压缩策略建议,包含: - detected_type: 检测到的文档类型 - recommended_preset: 推荐的预设方案(可能为None) - compression_potential: 压缩潜力("high"/"medium"/"low") - reason: 推荐理由 - specific_suggestions: 具体优化建议列表 - warnings: 警告信息列表 - optimization_potential_pages: 预计可节省的页数 使用场景: - 不确定应该使用哪个格式预设时 - 需要评估文档压缩潜力时 - 希望获得针对性优化建议时 - 避免对特殊文档类型进行不当压缩 工作流程: 1. 调用此工具获取压缩策略建议 2. 根据建议决定是否进行压缩 3. 如果建议压缩,使用推荐的预设调用 auto_format_word_document 4. 如果有空段落,先调用 delete_empty_paragraphs_in_word 示例: 建议 → compact预设 → 使用 auto_format_word_document(filename, "compact") """ logger.info(f"MCP工具调用: suggest_word_compression_strategy(filename={filename})") return word_handler.suggest_compression_strategy(filename)

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/walkingzzzy/office-mcp'

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