PDF实用程序MCP
一个VS Code扩展,通过模型上下文协议(MCP)为GitHub Copilot Chat提供全面的PDF操作工具。
概述
该项目将MCP服务器与VS Code扩展相结合,使GitHub Copilot等AI助手能够通过自然语言命令处理PDF文件。用户可以直接从聊天界面阅读、创建、合并、拆分和编辑PDF。
建筑
pdf-utilities-mcp/
├── src/ # MCP Server implementation
│ ├── index.ts # Server entry point and tool registration
│ └── pdf-tools.ts # PDF manipulation utilities
├── extension/ # VS Code Extension
│ ├── src/
│ │ ├── extension.ts # Extension activation and MCP integration
│ │ └── types.ts # TypeScript type definitions
│ ├── resources/
│ │ └── instructions/ # Copilot Chat instruction files
│ └── mcp-server/ # Built MCP server (copied from ../dist)
└── dist/ # Compiled MCP server output特性
- 📖 阅读PDF:使用可选的页面范围选择提取文本内容
- 📊 显示简介:检索元数据(页面、标题、作者、大小等)
- ✍️ 创建PDF:使用格式选项从文本生成新的PDF
- 🔗 合并:将多个PDF文件合并为一个
- ✂️ 分裂:提取特定页面或范围
- 📝 更新元数据:修改标题、作者、主题、关键字
- 📄 提取页面:将单个页面另存为单独的文件
安装
对于用户
从VS代码市场安装:
- 打开VS代码
- 在扩展中搜索“PDF实用程序”
- 点击安装
对于开发者
# Clone the repository
git clone https://github.com/GleidsonFerSanP/pdf-utilities-mcp.git
cd pdf-utilities-mcp
# Install MCP server dependencies
npm install
# Build MCP server
npm run build
# Install extension dependencies
cd extension
npm install
# Build extension
npm run compile
# Copy MCP server to extension
cd ..
npm run copy-to-extension发展
项目结构
MCP服务器 ( src/ ):
- 使用@modelcontextprotocol/sdk实现标准化工具接口
- 使用PDF库和PDF解析实现7个PDF工具
- 通过stdio传输作为Node.js进程运行
VS代码扩展 ( extension/ ):
- 使用VS Code的lm.registerMcpServerDefinitionProvider注册MCP服务器
- 提供用于配置和服务器管理的命令
- 包括聊天说明,以实现最佳的Copilot集成
建筑
# Build MCP server
npm run build
# Build extension
cd extension
npm run compile
# Copy server to extension folder
cd ..
npm run copy-to-extension测试
# Test MCP server directly
node dist/index.js
# Package extension for testing
cd extension
npm run package # Creates .vsix file
# Install .vsix in VS Code for testing
# Extensions > ... > Install from VSIX开发工作流程
- 在中更改MCP服务器
src/ - 跑
npm run build编译 - 跑
npm run copy-to-extension更新扩展名 - 重新加载VS代码窗口以测试更改
- 在输出面板>“PDF实用程序”中检查日志
出版
先决条件
- 在以下位置创建VS Code Publisher帐户https://marketplace.visualstudio.com/
- 生成个人访问令牌(PAT)
- 更新
extension/.env与您的PAT
发布步骤
# Build everything
npm run build
cd extension
npm run compile
cd ..
npm run copy-to-extension
# Package extension
cd extension
npm run package
# Verify the .vsix file works
# Install it manually in VS Code and test
# Publish to marketplace
npm run publish版本管理
更新两个版本:
package.json(根)extension/package.json
遵循语义版本控制:MAJOR。未成年人。补丁
配置
扩展设置
pdfUtilities.autoStart:自动启动MCP服务器(默认值:true)pdfUtilities.logLevel:记录详细程度(默认值:info)pdfUtilities.maxPdfSize:最大文件大小(MB)(默认值:50)
MCP服务器配置
MCP服务器是通过扩展配置的,不需要单独配置。
API文档
工具:read_pdf
从PDF文件中提取文本。
参数:
filePath(字符串,必填):PDF的绝对路径pageRange(字符串,可选):要提取的页面(例如,“1-5”、“1、3、5-10”)
退货:
{
text: string;
pages: number;
info: PDFInfo;
}工具:get_pdf_info
获取PDF元数据和信息。
参数:
filePath(字符串,必填):PDF的绝对路径
退货:
{
pages: number;
title?: string;
author?: string;
subject?: string;
creator?: string;
producer?: string;
creationDate?: Date;
modificationDate?: Date;
fileSize: number;
filePath: string;
}工具:create_pdf
从文本内容创建新的PDF。
参数:
content(字符串,必填):文本内容outputPath(字符串,必填):保存位置options(对象,可选):格式选项
- title, author, subject (字符串):元数据 - fontSize (数字):文本大小(默认值:12) - pageSize (字符串):页面大小(默认:“A4”)
退货:
{
success: boolean;
path: string;
pages: number;
}工具:merge_pdfs
合并多个PDF。
参数:
filePaths(string\[\],必填):要合并的PDFoutputPath(字符串,必填):输出位置
退货:
{
success: boolean;
path: string;
pages: number;
}工具:split_pdf
将页面提取为新的PDF。
参数:
filePath(字符串,必填):源PDFpageRange(字符串,必填):要提取的页面outputPath(字符串,必填):输出位置
退货:
{
success: boolean;
path: string;
pages: number;
}工具:update_pdf_metadata
修改PDF元数据。
参数:
filePath(字符串,必填):要更新的PDFmetadata(对象,必填):要更新的字段
- title, author, subject, keywords (字符串)
outputPath(字符串,可选):保存位置(默认为覆盖)
退货:
{
success: boolean;
path: string;
}工具:提取_页面
将页面解压缩为单独的文件。
参数:
filePath(字符串,必填):源PDFpages(number\[\],必填):要提取的页码outputDir(字符串,必填):输出目录prefix(字符串,可选):文件名前缀(默认:“page”)
退货:
{
success: boolean;
files: string[];
}故障排除
MCP服务器未启动
检查输出面板:
View > Output > Select "PDF Utilities"查找初始化消息。如果服务器发生故障:
- 验证
mcp-server/index.js存在于扩展文件夹中 - 运行重建:
npm run build && npm run copy-to-extension - 重新加载VS代码
Copilot中没有工具
- 确保扩展已激活(检查扩展面板)
- 验证MCP API可用(需要VS代码1.85+)
- 检查Copilot Chat是否已启用
- 重新启动副本:命令面板>“GitHub副本:重新启动语言服务器”
构建错误
常见问题:
- TypeScript错误:运行
npm install在根文件夹和扩展文件夹中 - 缺少依赖项:
npm install在正确的目录中 - 路径问题:使用
npm run copy-to-extension同步文件
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
请遵循现有的代码样式和约定。
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
积分
- 内置于 模型上下文协议
- 图标设计:自定义SVG
______________________________________________________________________
备注:此项目需要GitHub Copilot Chat和支持MCP的VS Code 1.85+。
