PDF阅读器MCP服务

一个基于Model Context Protocol (MCP)的PDF文档阅读和分析服务,支持在VS Code中查看、提取文本、生成摘要和分析PDF内容。

  • by yshan2028
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 yshan2028/mcp-pdf-reader

使用说明

VS Code 的 PDF 阅读器 MCP 服务器

英语 | 中文文档

一个MCP服务器,它使VS Code能够使用模型上下文协议(MCP)查看和分析PDF文档。

这个项目是使用……创建的 模型上下文协议Python SDK 基于FastMCP。

特性/功能

  • 打开并阅读PDF文档
  • 从PDF中提取文本(整个文档或特定页面)
  • 查看PDF元数据
  • 生成PDF内容的摘要
  • 从特定页面或页面范围中提取文本
  • 分析PDF内容并回答相关问题

安装

  1. 确保已安装 Python 3.13 或更高版本
  2. 克隆此仓库
  3. 创建一个虚拟环境:
uv venv .venv
source .venv/bin/activate
  1. 安装依赖项:
uv pip install -e .

Docker

你也可以使用 Docker 来运行这个 MCP 服务器:

构建Docker镜像

docker build -t pdf-reader-mcp .

运行容器

docker run --name pdf-reader-mcp -it pdf-reader-mcp

与 VS Code 或 Claude 桌面版一起使用

在使用 Docker 时,请更新您的 MCP 配置以使用 Docker 容器:

VS Code 配置(Docker)

{
  "servers": {
    "pdf-reader": {
      "type": "stdio",
      "command": "docker",
      "args": [
        "run",
        "--rm", 
        "-i",
        "pdf-reader-mcp"
      ]
    }
  }
}

Claude 桌面配置(Docker)

{
  "mcpServers": {
    "pdf-reader-mcp": {
      "command": "docker",
      "args": [
        "run",
        "--rm", 
        "-i",
        "pdf-reader-mcp"
      ]
    }
  }
}

用法

此MCP服务器与VS Code的MCP客户端集成,提供PDF阅读功能。有关可用功能的详细信息,请参阅下面的“工具和提示”部分。

示例

在VS Code Copilot中的MCP工具

此图展示了通过MCP协议在VS Code中可用的PDF阅读器工具:

示例用法

以下是一个使用PDF阅读器分析文档的示例:

VS Code 配置

服务器已配置为通过VS Code运行 .vscode/mcp.json 文件。要使用此服务器,VS Code 必须安装 MCP 扩展。

要安装 VS Code MCP 扩展:

  1. 打开 VS 代码(或:打开 Visual Studio Code)
  2. 前往扩展(Ctrl+Shift+X 或 Cmd+Shift+X)
  3. 搜索“模型上下文协议”
  4. 从微软安装扩展程序

一旦安装了该扩展,VS Code 将能够根据您在(配置中)的设置与这个 MCP 服务器进行通信 .vscode/mcp.json 文件。您可以通过VS Code的Copilot或VS Code内置的任何其他MCP客户端使用MCP服务器。

发展

要对这个项目进行更改:

  1. 修改代码中的 src/pdf_reader_mcp 目录
  2. 以开发模式安装: uv pip install -e .
  3. 在 VS Code 中测试你的更改

要求

工具和提示

工具

服务器实现了以下工具:

  • 打开PDF打开一个PDF文件

    • “Takes”可以翻译成“采取”或“接受”,具体取决于上下文。例如,在“takes a decision”中,可以翻译为“做出决定”;在“takes the medicine”中,可以翻译为“服用药物” path 作为必需的字符串参数
    • 返回一个唯一的PDF ID,用于在其他操作中引用
  • 关闭PDF关闭一个已打开的PDF文件

    • (根据上下文,“Takes”可能有多种翻译,以下是其中一种)获取 pdf_id 作为必需的字符串参数
  • 列出PDF元数据查看打开的PDF文件的元数据

    • “Takes”翻译成中文是“拿取”或“接受”,具体含义需根据上下文确定 pdf_id 作为必需的字符串参数
  • 获取PDF页数获取PDF文件的总页数

    • “Takes”翻译成中文是“拿取”或“接受”,具体含义取决于上下文 pdf_id 作为必需的字符串参数
  • 获取PDF页面文本获取PDF中特定页面的文本内容

    • “Takes”翻译成中文是“接受”或“拿取”,具体含义取决于上下文 pdf_id 作为必需的字符串参数
    • 接受 page_number 作为必需的整数参数(基于0的索引)
  • 将PDF转换为文本从PDF文档中提取所有文本

    • (动词)采取;接受;获取 pdf_id 作为必需的字符串参数
    • 可选 include_page_numbers 作为布尔值(默认:true)
    • 可选 start_page 和 end_page 作为整数来提取特定范围

提示

服务器提供以下提示:

  • 总结PDF生成PDF文档的摘要

    • 必需的 pdf_id 用于识别PDF的参数
    • 可选 style 用于控制详细程度的参数(简要/详细)
  • 从PDF中提取文本从特定页面或页面范围中提取文本

    • 必需的 pdf_id 论点;争论;理由
    • 可选的页面或页面范围参数(page, start_page, end_page)
  • 分析PDF分析PDF文件并回答有关其内容的问题

    • 必需的 pdf_id 论点;争论;争吵
    • 必需的 question 指定分析内容的参数
    • 可选 page_range 参数用于聚焦特定页面

快速入门

安装

VS Code(Visual Studio Code,简称VS Code)

通过编辑配置,将 VS Code 设置为使用 MCP 服务器 .vscode/mcp.json 在你的项目中:

Development Configuration
{
  "servers": {
    "pdf-reader": {
      "type": "stdio",
      "command": "uv",
      "args": [
        "--directory",
        "${workspaceFolder}",
        "run",
        "python",
        "-c",
        "from pdf_reader_mcp import main; main()"
      ]
    }
  }
}
Published Package Configuration
{
  "servers": {
    "pdf-reader": {
      "type": "stdio",
      "command": "pdf-reader-mcp"
    }
  }
}

Claude Desktop(克劳德桌面版)

在MacOS上: ~/Library/Application\ Support/Claude/claude_desktop_config.json 在Windows上: %APPDATA%/Claude/claude_desktop_config.json

Development/Unpublished Servers Configuration
{
  "mcpServers": {
    "pdf-reader-mcp": {
      "command": "uv",
      "args": [
        "--directory",
        "${workspaceFolder}",
        "run",
        "pdf-reader-mcp"
      ]
    }
  }
}
Published Servers Configuration
{
  "mcpServers": {
    "pdf-reader-mcp": {
      "command": "uvx",
      "args": [
        "pdf-reader-mcp"
      ]
    }
  }
}

发展

构建与发布

准备分发的软件包:

  1. 同步依赖项并更新锁定文件:
uv sync
  1. 构建软件包分发版:
uv build

这将在(指定目录/位置)生成源代码分发包和轮子(wheel)分发包 dist/ 目录。

  1. 发布到PyPI:
uv publish

注:您需要通过环境变量或命令行标志设置 PyPI 凭据:

  • 代币: --token 或者 UV_PUBLISH_TOKEN
  • 或者用户名/密码: --username/UV_PUBLISH_USERNAME 并且 --password/UV_PUBLISH_PASSWORD

调试

由于MCP服务器通过标准I/O运行,调试可能会颇具挑战性。为了实现最佳调试效果 根据经验,我们强烈建议使用 MCP 检查员。

你可以通过以下方式启动MCP Inspector npm 使用这个命令:

npx @modelcontextprotocol/inspector uv --directory "${workspaceFolder}" run pdf-reader-mcp

启动后,检查器将显示一个URL,您可以在浏览器中访问该URL以开始调试。

贡献;助力

  1. 为该仓库创建分支(或:对该仓库进行分叉)
  2. 创建一个新分支 (feature-branch)
  3. 提交您的更改
  4. 将更改推送到你的分支并提交一个拉取请求(PR)!

许可证

这个项目遵循以下许可协议: 麻省理工学院许可证(MIT License)。

联系

如有问题或需要支持,请通过以下方式联系我们 GitHub Issues(在GitHub上用于讨论和报告问题的板块)。