二进制文档搜索工具

MCP服务器,用于搜索和读取二进制文档文件(如PDF、DOCX等),支持多种格式的文本提取和搜索功能。

  • by AllenComm
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 AllenComm/mcp-docsearch

使用说明

docsearch

用于搜索和读取二进制文档文件的MCP服务器。

需求

安装

克劳德代码

用户范围(适用于所有项目):

claude mcp add --scope user docsearch -- uvx --from git+https://github.com/AllenComm/mcp-docsearch docsearch

项目范围(仅在当前项目中可用):

claude mcp add docsearch -- uvx --from git+https://github.com/AllenComm/mcp-docsearch docsearch

或者直接添加到MCP配置中(~/.claude/.mcp.json 对于用户范围, .mcp.json 项目范围):

{
  "mcpServers": {
    "docsearch": {
      "command": "uvx",
      "args": ["--from", "git+https://github.com/AllenComm/mcp-docsearch", "docsearch"]
    }
  }
}

开源代码

添加到您的 opencode.json:

{
  "mcp": {
    "docsearch": {
      "type": "local",
      "command": ["uvx", "--from", "git+https://github.com/AllenComm/mcp-docsearch", "docsearch"],
      "enabled": true,
      "timeout": 30000
    }
  }
}

代理说明

添加到您的 AGENTS.md 或 CLAUDE.md 因此,您的代理知道何时使用这些工具:

Use the docgrep and docread MCP tools instead of grep/read for binary documents (PDF, DOCX, PPTX, XLSX, ODT, ODS, ODP, RTF, EPUB).

支持格式

格式 扩展 提取
PDF .pdf 逐页文本
Word .docx 段落+表格
PowerPoint .pptx 幻灯片文本框架+表格
Excel .xlsx 逐页,制表符分隔行
OpenDocument文本 .odt 段落
OpenDocument电子表格 .ods 逐页,制表符分隔行
OpenDocument演示文稿 .odp 逐个幻灯片文本
富文本格式 .rtf 全文
EPUB .epub 逐章文本(书脊顺序)

工具

docgrep

在文档中搜索与正则表达式模式匹配的文本。退货 filepath:section:matching_line.

参数:

  • directory (必填)--递归搜索路径
  • pattern (必需)--要匹配的正则表达式模式
  • case_sensitive --默认值 false
  • file_types --过滤到特定的扩展名,例如。 ["pdf", "docx"]
  • max_results --默认值 100
docgrep(directory="/home/user/reports", pattern="quarterly revenue")
docgrep(directory="/home/user/docs", pattern="TODO|FIXME", file_types=["docx"])

docread

从单个文档中读取全文内容。输出自动截断为40000个字符——使用 range 缩小大型文档的结果范围。

参数:

  • filepath (必填)--文档路径
  • range --按格式过滤到特定部分:
    • PDF: 页码,例如。 "1-5", "3", "1,3,5-7"
    • PPTX/ODP: 幻灯片编号,例如。 "2-3"
    • XLSX/ODS: 工作表名称或基于1的索引,冒号后有可选的行范围,例如。 "1", "Sheet1", "1:1-100", "Revenue:50-200"
    • EPUB: 章节编号,例如。 "1-5"
    • DOCX/ODT/RTF: 行号,例如。 "1-50", "100-200"
docread(filepath="/home/user/reports/q4.pdf", range="1-3")
docread(filepath="/home/user/data/sales.xlsx", range="1:1-100")
docread(filepath="/home/user/data/sales.xlsx", range="Revenue:50-200")