使用说明
VS Code 的 PDF 阅读器 MCP 服务器
一个MCP服务器,它使VS Code能够使用模型上下文协议(MCP)查看和分析PDF文档。
这个项目是使用……创建的 模型上下文协议Python SDK 基于FastMCP。
特性/功能
- 打开并阅读PDF文档
- 从PDF中提取文本(整个文档或特定页面)
- 查看PDF元数据
- 生成PDF内容的摘要
- 从特定页面或页面范围中提取文本
- 分析PDF内容并回答相关问题
安装
- 确保已安装 Python 3.13 或更高版本
- 克隆此仓库
- 创建一个虚拟环境:
uv venv .venv
source .venv/bin/activate
- 安装依赖项:
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 扩展:
- 打开 VS 代码(或:打开 Visual Studio Code)
- 前往扩展(Ctrl+Shift+X 或 Cmd+Shift+X)
- 搜索“模型上下文协议”
- 从微软安装扩展程序
一旦安装了该扩展,VS Code 将能够根据您在(配置中)的设置与这个 MCP 服务器进行通信 .vscode/mcp.json 文件。您可以通过VS Code的Copilot或VS Code内置的任何其他MCP客户端使用MCP服务器。
发展
要对这个项目进行更改:
- 修改代码中的
src/pdf_reader_mcp目录 - 以开发模式安装:
uv pip install -e . - 在 VS Code 中测试你的更改
要求
- Python 3.13及以上版本
- PyPDF2 3.0.0及以上版本
- MCP SDK 1.9.0+(来自 github.com/modelcontextprotocol/python-sdk 翻译为中文是:“github.com上的modelcontextprotocol项目Python SDK”)
- 带有MCP扩展的VS Code
工具和提示
工具
服务器实现了以下工具:
-
打开PDF打开一个PDF文件
- “Takes”可以翻译成“采取”或“接受”,具体取决于上下文。例如,在“takes a decision”中,可以翻译为“做出决定”;在“takes the medicine”中,可以翻译为“服用药物”
path作为必需的字符串参数 - 返回一个唯一的PDF ID,用于在其他操作中引用
- “Takes”可以翻译成“采取”或“接受”,具体取决于上下文。例如,在“takes a decision”中,可以翻译为“做出决定”;在“takes the medicine”中,可以翻译为“服用药物”
-
关闭PDF关闭一个已打开的PDF文件
- (根据上下文,“Takes”可能有多种翻译,以下是其中一种)获取
pdf_id作为必需的字符串参数
- (根据上下文,“Takes”可能有多种翻译,以下是其中一种)获取
-
列出PDF元数据查看打开的PDF文件的元数据
- “Takes”翻译成中文是“拿取”或“接受”,具体含义需根据上下文确定
pdf_id作为必需的字符串参数
- “Takes”翻译成中文是“拿取”或“接受”,具体含义需根据上下文确定
-
获取PDF页数获取PDF文件的总页数
- “Takes”翻译成中文是“拿取”或“接受”,具体含义取决于上下文
pdf_id作为必需的字符串参数
- “Takes”翻译成中文是“拿取”或“接受”,具体含义取决于上下文
-
获取PDF页面文本获取PDF中特定页面的文本内容
- “Takes”翻译成中文是“接受”或“拿取”,具体含义取决于上下文
pdf_id作为必需的字符串参数 - 接受
page_number作为必需的整数参数(基于0的索引)
- “Takes”翻译成中文是“接受”或“拿取”,具体含义取决于上下文
-
将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"
]
}
}
}
发展
构建与发布
准备分发的软件包:
- 同步依赖项并更新锁定文件:
uv sync
- 构建软件包分发版:
uv build
这将在(指定目录/位置)生成源代码分发包和轮子(wheel)分发包 dist/ 目录。
- 发布到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以开始调试。
贡献;助力
- 为该仓库创建分支(或:对该仓库进行分叉)
- 创建一个新分支 (
feature-branch) - 提交您的更改
- 将更改推送到你的分支并提交一个拉取请求(PR)!
许可证
这个项目遵循以下许可协议: 麻省理工学院许可证(MIT License)。
联系
如有问题或需要支持,请通过以下方式联系我们 GitHub Issues(在GitHub上用于讨论和报告问题的板块)。
