使用说明
DocTools MCP
Gemini-CLI等AI代理是为了能够自由阅览、检索、加工PDF、PowerPoint、Excel、CSV、HTML等本地文档的MCP(Model Context Protocol)服务器。
概要
该项目提供一个专门用于文档操作的MCP服务器。 考虑到大容量数据的处理,将提取结果作为文件保存,或以紧凑的数据结构返还,从而有效地利用LLM的上下文窗口。
主要机能
DocTools服务器(doctools-mcp)
全文搜索工具
search_documents:使用已创建的索引快速搜索Office文档。- 支持多索引:可通过切换多个索引(例如,每个项目)进行搜索。
- 布尔查询:
AND,OR,NOT,""的检索对应。 - 目录缩小:
directory通过参数,可以只对特定文件夹下属进行缩小(Fasting)(前方一致)。
list_indexes:获取可用索引的列表以及每个索引的说明。
PDF工具
pdf_extract_markdown:从PDF提取文本并将其保存为Markdown文件。pdf_extract_images:将PDF的特定页面保存为图像(PNG/JPG)。最适合使用多模式LLM理解图解和公式。pdf_extract_pages:将PDF的特定页面作为其他文件剪切。pdf_count_pages:获取PDF的总页数。
PowerPoint工具
pptx_extract_markdown:提取幻灯片内容(包括表格)并将其保存为Markdown文件。pptx_extract_images:将幻灯片另存为图像(PNG/JPG)。对系统构成图和图表的理解发挥强大的力量。pptx_count_slides:获取总幻灯片数。pptx_extract_slides:将指定幻灯片另存为文件。pptx_merge:将多个PowerPoint文件合并为一个,同时保留原始布局和主文件(Windows环境)。
Excel工具
xlsx_list_sheets:获取所有工作表名称。xlsx_extract_markdown:以Markdown表格格式提取指定工作表的内容,并将其保存为文件。xlsx_extract_csv:将指定工作表(或所有工作表)导出为单独的CSV文件。xlsx_extract_sheet:创建仅提取指定工作表的新Excel文件。xlsx_extract_images:将指定图纸保存为图像(PNG/JPG)。为了将布局优化为1页横宽并输出,最适合读取Excel中描绘的流程图和设计图。
CSV工具
csv_read_cells:提取指定行列的范围(矩形区域)。csv_search_values:执行字符串搜索并返回已命中单元格的位置和值。csv_get_metadata:获取元信息,如字符代码、总行数和列数。csv_extract_to_file:将指定范围内的数据另存为文件。
文本处理工具
text_read_head:从文本文件的开头读取指定行数。text_read_tail:从文本文件的末尾导入指定行数。text_grep:使用正则表达式在文本文件中搜索。text_get_metadata:获取文本文件的编码(自动确定)、大小和行数。text_convert_encoding:转换文件的字符代码(Shift-JIS->UTF-8等)。text_copy_clipboard:将指定的文本复制到Windows剪贴板。很方便快速利用AI生成的回答和提取的路径。
HTML工具
html_extract_markdown:从HTML中提取文本并将其保存为Markdown文件。
图像操作工具
image_get_metadata:获取图像文件(PNG等)的尺寸(宽度、高度)。image_crop:裁剪图像的指定矩形区域(以像素为单位)并将其另存为文件。image_save_clipboard:将Windows剪贴板上的图像保存为PNG文件。将其他应用程序正在使用的画面快速共享给LLM非常方便。
实用程序
zip_files将指定的文件群压缩到ZIP存档文件中。unzip_file:解压缩ZIP存档文件。
PageIndex工具(逐步搜索)
它是一个专门的工具群,用于逐步搜索大型文档的索引信息,只提取需要的地方。
pageindex_get_summary_tree:获取整个项目的目录结构和一个树(地图),该树俯瞰每个文件的摘要。pageindex_get_tree:获取特定文档(PDF或PPTX)内部的目录或章节树。pageindex_get_node_content:在树搜索中提取特定节点(页面或幻灯片)的完整文本。
安装
在当前目录中作为包安装,可作为CLI命令使用。
pip install .
这将在系统中注册以下命令:
doctools-mcp:启动文档操作和搜索MCP服务器。index_ctl:管理和构建全文搜索索引的工具。
安装,安装
1.环境设定
.env 请创建文件并指定索引的保存位置。
# 複数のインデックスを格納するベースディレクトリ (必須)
WHOOSH_INDEX_BASE_DIR=C:\path\to\your\index_base
2.构建搜索索引
CLI工具 index_ctl 中所述修改相应参数的值。
# 基本: 存在すれば差分更新、なければ新規作成します
index_ctl build <docs_dir> <index_name>
# 説明(Description)付きで構築
index_ctl build <docs_dir> <index_name> --description "Project A Specifications"
# 対象とする拡張子をカスタマイズ(例: PythonとSQLを追加)
index_ctl build <docs_dir> <index_name> --ext .pdf .md .py .sql
# 処理の詳細(タイムアウト設定やDry-run)
index_ctl build <docs_dir> <index_name> --timeout 60 --dry-run
- 自定义扩展名:
--ext可选的扩展名。 - 持久化设置: 一度
--ext如果在中指定扩展名进行构建,则该设置将作为索引的元数据保存。下一次更新(build)有时--ext中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。 - 默认扩展名:如果没有选项,也没有过去的设置
.pdf, .pptx, .xlsx, .docx, .txt, .md中所述修改相应参数的值。
用法
MCP服务器以标准输入输出模式启动。
# MCP サーバーの起動
doctools-mcp
索引维护(index_ctl)
# 利用可能なインデックスの一覧表示
index_ctl list
# 特定のインデックスに登録済みファイルの一覧表示
index_ctl list <index_name>
# インデックスからのパス削除
index_ctl delete <path> <index_name>
各命令操作对象的 index_name 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。list 在没有参数的情况下执行命令时,将显示基目录下的索引名称及其说明的列表。
构建和管理PageIndex(pageindex_ctl)
AI代理构建并管理用于阶段性地探索巨大文档的“地图(PageIndex)”。
# 基本: 指定ファイル/ディレクトリの PageIndex (.pageindex.json) を構築
pageindex_ctl build <target_path> --recursive
# 構築済み PageIndex のサマリーを階層型 JSON 形式で一括エクスポート
pageindex_ctl export <target_dir>
# 作成された PageIndex インデックスの一覧表示
pageindex_ctl list <target_dir> --recursive
# PageIndex インデックスの削除
pageindex_ctl delete <target_path> --recursive
- 聪明的跳过功能(mtime比较):
build运行时,已.pageindex.json如果存在,并且原始文件未更新,则自动跳过构建过程,以节省对LLM的无用API调用(和成本)。 - LLM延迟初始化:在进行跳过判定并实际需要AI生成摘要之前,LLM客户端(Gemini/Vertex AI)的设置将被延迟。这将在所有文件都被跳过的情况下加快处理速度。
- 构建分层JSON树(
export):export命令是保持目录结构的单个pageindex.json中所述修改相应参数的值。AI是pageindex_get_summary_tree使用工具首先从这棵树上俯瞰“哪个文件夹有什么样的文档”,然后pageindex_get_tree中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
