🚀 Office文档引擎(ODE)
用于高级文档自动化的MCP服务器
Developed by Rayss
______________________________________________________________________
📖 目录
- 📊 Excel工具 - excel_describe_sheets - excel_read_sheet - excel_write_to_sheet - excel_copy_sheet - excel_create_table - excel_format_range - excel_extract_images - 📄 PDF工具 - pdf_read_text - pdf_get_metadata - pdf_search_text - pdf_create_dummy - pdf_extract_pages - pdf_merge - pdf_split - pdf_rotate_pages - 📝 DOCX工具 - docx_read_text - docx_get_metadata
______________________________________________________________________
✨ 1.概述
这 Office文档引擎(ODE) 它不仅仅是一个工具;它是您实现更高级别文档自动化的门户。作为一个强大的、自包含的MCP(模型上下文协议)服务器,ODE提供了一套无与伦比的功能,用于与常见的办公文档进行交互和操作。想象一下,让你的人工智能代理能够以编程方式无缝地读取、写入和修改Excel电子表格、PDF文档和DOCX文件。ODE开启了自动化生产力的新领域,将繁琐的手动任务转化为高效、免提的操作。
无论您是想从复杂的报告中提取关键数据,动态生成定制文档,还是通过智能文档处理简化工作流程,ODE都能为您提供所需的强大基础。它专为在项目中要求精度、灵活性和尖端自动化的开发人员和人工智能爱好者而设计。
______________________________________________________________________
🚀 2.释放自动化:关键特征
ODE以其全面而灵活的功能集脱颖而出:
- 跨文档兼容性:管理Excel、PDF和DOCX文件的统一界面,消除了对不同工具的需求。
- 智能数据提取:精确读取Excel表中的数据,从PDF和DOCX文件中提取文本,并检索有价值的元数据。
- 动态文档生成:创建新的Excel文件,将数据写入特定单元格,生成简单的PDF,并动态构建DOCX内容。
- 高级文档操作:合并、拆分、旋转PDF页面、复制Excel工作表、格式化单元格区域以及在工作簿中定义结构化表。
- 图像处理:从Excel文件中提取嵌入式图像以供进一步分析或存档。
- 无缝AI集成:基于模型上下文协议(MCP),ODE从头开始设计,可以轻松地与AI代理集成,实现复杂的自动化工作流程。
- 稳健的错误处理:清晰的错误报告和输入验证确保了复杂任务的可靠执行和更容易的调试。
______________________________________________________________________
🏗️ 3.建筑基础
ODE服务器作为专用的高性能后台进程运行,确保最小的开销和最大的响应能力。通过强大高效的MCP,可以促进与主要AI代理的通信 stdio 传输层。这种架构保证了安全、实时的数据交换和命令执行,使ODE成为人工智能功能的无缝扩展。
graph TD
A[AI Agent] B(MCP Host);
B -- stdio/JSON-RPC --> C(ODE Server);
subgraph C
direction LR
D[Request Handler] --> E{Tool Dispatcher};
E --> F[Excel Tools];
E --> G[PDF Tools];
E --> H[DOCX Tools];
end
C --> I[/Excel Files .xlsx/];
C --> J[/PDF Files .pdf/];
C --> K[/Word Files .docx/];ODE的模块化设计确保了每种文档类型(Excel、PDF、DOCX)都由一组专门的工具处理,从而允许集中开发和轻松扩展功能。中央银行 Request Handler 智能地将传入命令分派到适当的位置 Tool Dispatcher,确保高效处理和稳健执行每个任务。
______________________________________________________________________
🚀 4.入门
只需几个简单的步骤,即可开始ODE的自动化之旅:
先决条件
在开始之前,请确保已安装以下内容:
- Node.js (16.x或更高版本)
- npm (通常包含在Node.js中)
安装
按照以下命令设置ODE服务器:
# 1. Navigate into the server's directory
cd OfficeDocumentEngine-ODE
# 2. Install all dependencies
npm install
# 3. Compile the TypeScript project
npm run buildMCP配置
要使您的AI环境能够与ODE服务器通信,请将以下配置块添加到您的 mcp_settings.json 文件。这告诉MCP主机如何找到ODE并与之交互。
重要提示: 这args路径必须正确 绝对路径 到编译index.js您系统上的文件。
{
"servers": {
"office-document-engine": {
"disabled": false,
"timeout": 60,
"command": "node",
"args": [
"
/mcp-server/build/index.js"
],
"cwd": "
/mcp-server"
}
}
}添加配置后,至关重要的是 重新启动AI环境 以确保新服务器被正确加载和识别。
______________________________________________________________________
💻 5.交互方式
Office文档引擎被设计为功能强大的 模型上下文协议(MCP)服务器这意味着它主要通过 stdio 传输层,而不是作为直接用户执行的独立命令行界面(CLI)工具。
要利用ODE丰富的文档自动化工具集,您通常会将其与支持MCP规范的MCP客户端或AI环境集成。您的MCP主机将处理发送请求和接收来自ODE的响应,使您的AI能够无缝编排复杂的文档工作流。
虽然ODE不提供用于直接用户命令的传统CLI,但如果需要在MCP环境之外进行直接的人机交互,其模块化设计允许未来开发CLI包装器或SDK。
______________________________________________________________________
🛠️ 6.综合工具参考
Office文档引擎提供了一套丰富的工具,每个工具都经过精心设计,可以对Excel、PDF和DOCX文件执行特定操作。下面是每个工具的详细分解、目的、输入参数和典型用例。
📊 Excel工具
这些强大的工具使您能够以编程方式与Microsoft Excel工作簿交互,自动化数据管理、分析和报告。
excel_describe_sheets
- 说明: 立即了解任何Excel工作簿的结构。此工具检查文件并返回其中包含的所有工作表的完整列表,详细说明它们的名称和每个工作表中的活动单元格范围。这是理解复杂电子表格的第一步。 - 输入: - fileAbsolutePath (string):Excel文件的绝对路径(例如。, C:/path/to/financial_report.xlsx). - 退货: 包含文件路径和一系列工作表详细信息的对象(例如。, { file: string, sheets: Array }). - 示例用例: 在处理新供应商的数据之前,使用此工具可以发现确切的图纸名称和数据边界,确保您的自动化目标是正确的信息。
excel_read_sheet
- 说明: 从任何Excel表中精确提取数据。您可以读取工作表的全部内容,也可以指定精确的单元格范围(例如“A1:C10”)以仅获取所需的数据。此工具对于数据摄取和分析工作流程非常宝贵。 - 输入: - fileAbsolutePath (string):Excel文件的绝对路径。 - sheetName (string):要读取的工作表的确切名称(例如,“SalesData”、“Configuration”)。 - range (可选,字符串):限制数据提取的特定单元格范围(例如,“B2:F15”)。如果省略,则读取整个工作表的使用范围。 - showFormula (可选,布尔值):设置为 true 检索单元格公式,而不是其计算值。默认为 false. - showStyle (可选,布尔值):设置为 true 以在输出中包括详细的单元格样式信息。默认为 false. - 退货: 详细描述所提取数据的表、范围和2D阵列的对象(例如。, { sheetName: string, range: string, rows: Array> }). - 示例用例: 自动从“周报”表中提取每周销售数据,仅关注“产品”和“收入”列(例如“a:B”),以输入仪表板。
excel_write_to_sheet
- 说明: 用新数据以编程方式填充或更新Excel表。这个多功能工具接受二维数据数组,并从指定单元格开始写入。它还可以在现有工作簿中创建新的Excel文件或新工作表,使其非常适合动态报告生成。 - 输入: - fileAbsolutePath (string):目标Excel文件的绝对路径(例如。, ./new_data_entry.xlsx). - sheetName (string):将写入数据的工作表的名称。 - newSheet (可选,布尔值):如果 true,一张新纸 sheetName 如果它不存在,将被创建。默认为 false. - range (string):数据写入开始的左上角单元格(例如“A1”)。 - values (数组):表示要写入的数据的2D数组(例如。, [['Product', 'Quantity'], ['Laptop', 50], ['Mouse', 120]]). - 退货: 确认写入操作的对象,包括文件、纸张、范围和写入的行数(例如。, { file: string, sheetName: string, range: string, writtenRows: number }). - 示例用例: 处理一批新订单后,将订单详细信息和库存更新自动写入主库存Excel文件中的“InventoryLog”表中。
excel_copy_sheet
- 说明: 轻松复制Excel工作簿中的任何工作表。这非常适合创建模板、备份关键数据或根据上一个月的报告准备新的月份报告,所有这些都不需要人工干预。 - 输入: - fileAbsolutePath (string):Excel文件的绝对路径。 - srcSheetName (string):要复制的源工作表的名称。 - dstSheetName (string):新创建的重复工作表的所需名称。 - 退货: 确认复制操作的对象(例如。, { file: string, srcSheetName: string, dstSheetName: string }). - 示例用例: 在每个财政季度末,创建一份名为“Q3_2024_REPORT”的“QTRLY_REPORT_TEMPLATE”表的副本,以开始起草新报告。
excel_create_table
- 说明: 将原始数据范围转换为结构化的Excel表格。此工具通过在工作簿中创建命名范围,将指定的单元格范围定义为正式的“表”。Excel表格为数据分析、过滤、排序和公式引用提供了增强的功能,使您的数据更易于管理和动态。 - 输入: - fileAbsolutePath (string):Excel文件的绝对路径。 - sheetName (string):将创建表的工作表的名称。 - tableName (string):分配给新表的唯一名称(例如,“EmployeeDirectory”、“ProjectTracker”)。 - range (可选,字符串):将包含表格的单元格范围(例如,“A1:G50”)。如果省略,该工具将尝试智能推断数据范围。 - 退货: 确认表创建的对象,包括文件、工作表、表名和定义的范围(例如。, { file: string, sheetName: string, tableName: string, range: string, note: string }). - 示例用例: 将客户联系人的原始列表转换为“CRM_Table”,以便使用Excel的内置表格功能按地区或联系人状态轻松筛选。
excel_format_range
- 说明: 以编程方式应用复杂的单元格样式,以增强Excel报告的视觉呈现。此工具允许您在任何指定的单元格范围内加粗字体、更改背景颜色、应用边框等。非常适合自动生成精美、专业外观的文档。 - 输入: - fileAbsolutePath (string):Excel文件的绝对路径。 - sheetName (string):要格式化的工作表的名称。 - range (string):要应用格式的精确单元格范围(例如,“A1:C1”、“E5”)。 - styles (对象数组数组):一个反映 range其中每个对象定义对应单元格的样式(例如。, [[{'font':{'bold':true, 'color':{'rgb':'FF0000'}}}]] 用于粗体红色字体)。 - 退货: 确认格式化操作的对象。 - 示例用例: 通过将红色背景应用于“到期日”列中逾期的单元格,在“应收账款”报告中自动突出显示逾期发票。
excel_extract_images
- 说明: 从Excel文件中查找并提取所有嵌入的图像,并将其保存到指定的输出目录。这对于内容审核、归档可视资产或准备图像以供其他应用程序使用非常有用。 - 输入: - fileAbsolutePath (string):Excel文件的绝对路径。 - outputDirectory (string):保存提取图像的目录的绝对路径。 - 退货: 确认提取并列出保存的图像路径的对象。 - 示例用例: 从“产品目录”Excel文件中提取所有产品图像,以更新电子商务网站的图像库。
📄 PDF工具
这些强大的工具提供了阅读、操作和生成PDF文档的广泛功能,为您的数字文书工作实现了强大的自动化。
### ⚠️ 严重不兼容注释 ODE中的PDF工具使用两个不同的底层库:pdf-parse用于读取操作和pdf-lib用于修改操作。至关重要的是要了解这些库是 不兼容 彼此。因此,你应该使用阅读工具 仅 对于尚未被ODE自己的修改工具修改的外部标准PDF文件。尝试阅读刚刚由创建或更改的PDFpdf-lib工具可能会导致意外的结果或错误。
pdf_read_text
- 说明: 从任何PDF文件中提取完整的文本内容。这是内容分析、数据挖掘、将PDF内容转换为可搜索文本或准备文档供其他AI代理摘要的重要工具。 - 输入: - fileAbsolutePath (string):PDF文件的绝对路径(例如。, C:/path/to/annual_report.pdf). - pageNumbers (可选,数字数组):从1开始的页码数组(例如。, [1, 5, 8])将文本提取限制在特定页面。如果省略,则提取所有页面的文本。 - 退货: 包含文件路径、总页数和提取的文本的对象(例如。, { file: string, totalPages: number, text: string }). - 示例用例: 自动从法律合同PDF中提取所有条款,以执行合规性检查或识别关键条款。
pdf_get_metadata
- 说明: 检索嵌入在任何PDF文件中的重要元数据。这包括作者、创建者应用程序、创建日期、修改日期和关键字等信息。了解此元数据对于文档管理、审计和内容验证至关重要。 - 输入: - fileAbsolutePath (string):PDF文件的绝对路径。 - 退货: 包含文件路径和详细元数据对象的对象(例如。, { file: string, metadata: object }). - 示例用例: 核实提交的提案的作者和创建日期,以确保其符合提交指南并跟踪其来源。
pdf_search_text
- 说明: 在PDF文档中执行强大的文本搜索。此工具允许您查找特定的关键字或短语,并提供区分大小写和不区分大小写的匹配选项。它非常适合在大型PDF档案中快速定位关键信息。 - 输入: - fileAbsolutePath (string):PDF文件的绝对路径。 - searchText (string):要搜索的确切文本字符串或短语。 - caseSensitive (可选,布尔值):如果 true,搜索将区分大写字母和小写字母。默认为 false 不区分大小写 - 退货: 每个对象都指示页码和找到的匹配文本片段的列表(例如。, Array). - 示例用例: 在一系列法律文件中查找所有提及“保密协议”的内容,以审查其使用情况和背景。
pdf_create_dummy
- 说明: 快速生成具有自定义文本内容的新的简单PDF文件。此工具对于测试目的、在开发过程中创建占位符文档或按需以编程方式生成基本的单页PDF(如收据或确认书)非常有用。 - 输入: - fileAbsolutePath (string):保存新PDF的绝对路径(例如。, ./placeholder_document.pdf). - textContent (可选,字符串):要包含在PDF中的文本字符串。如果省略,将创建一个空的PDF文档。 - 退货: 确认创建虚拟PDF的对象(例如。, { fileAbsolutePath: string, message: string }). - 示例用例: 在完整发票生成过程完成时,为客户创建一个临时PDF“发票#12345-待定”。
pdf_extract_pages
- 说明: 通过将特定的页面子集提取到一个新的独立PDF文件中,精确分割大型PDF文档。这非常适合创建重点报告、仅共享文档的相关部分或减小文件大小以便于分发。 - 输入: - fileAbsolutePath (string):源PDF文件的绝对路径。 - pages (数字数组):从1开始的页码数组(例如。, [1, 3, 7-9])指示要提取的页面。支持范围。 - outputFilePath (string):保存包含提取页面的新PDF的绝对路径(例如。, ./summary_section.pdf). - 退货: 确认提取成功的对象。 - 示例用例: 生成一份“执行摘要”PDF,其中仅包含50页季度业务回顾的前5页。
pdf_merge
- 说明: 将多个单独的PDF文件组合成一个连贯的文档。此工具对于将各种报告、附录或章节编译成一个主PDF文件,确保逻辑流程和简化分发是必不可少的。输入数组中文件的顺序决定了它们在合并文档中的顺序。 - 输入: - fileAbsolutePaths (字符串数组):要合并的PDF文件的绝对路径数组(例如。, ['./intro.pdf', './chapter1.pdf', './appendix.pdf']). - outputFilePath (string):保存合并PDF的绝对路径(例如。, ./complete_manual.pdf). - 退货: 确认合并操作成功的对象。 - 示例用例: 将各个部门的报告合并为一份“公司年度报告”PDF。
pdf_split
- 说明: 将一个较大的PDF文档分割成指定页码的两个不同文件。前面的所有页面 pageNumber 将形成第一个输出文件,其余页面将构成第二个。这非常适合将大型文档分解为可管理的部分。 - 输入: - fileAbsolutePath (string):要分割的PDF文件的绝对路径。 - pageNumber (number):文档将被分割的从1开始的页码。 - outputFilePathPart1 (string):分割PDF的第一段的绝对路径。 - outputFilePathPart2 (string):分割PDF第二段的绝对路径。 - 退货: 确认成功拆分的对象。 - 示例用例: 将“项目建议书”PDF分为第10页的“主要建议书”和“附录”。
pdf_rotate_pages
- 说明: 通过顺时针旋转90、180或270度来纠正或调整PDF文档中特定页面的方向。这对于修复扫描不正确的文档、优化显示内容或为特定打印布局准备页面非常宝贵。 - 输入: - fileAbsolutePath (string):PDF文件的绝对路径。 - pages (数字数组):一个从1开始的页码数组,用于应用旋转。 - rotationAngle (数字):以度为单位的旋转角度(必须为0、90、180或270)。 - outputFilePath (string):保存修改后的PDF的绝对路径。 - 退货: 确认旋转成功的物体。 - 示例用例: 将纵向PDF报告中的横向图表页旋转90度,使其可读,而无需更改整个文档的方向。
📝 DOCX工具
这些基本工具提供了与Microsoft Word(.docx)文档交互的强大功能,实现了内容提取和元数据检索的自动化。
docx_read_text
- 说明: 从任何Microsoft Word(.docx)文档中提取完整的文本内容。这是内容分析、文档摘要、法律审查或将Word文档内容转换为纯文本格式以供AI代理进一步处理的基本工具。 - 输入: - fileAbsolutePath (string):DOCX文件的绝对路径(例如。, C:/path/to/contract_draft.docx). - 退货: 包含文件路径和提取的文本的对象(例如。, { file: string, text: string }). - 示例用例: 自动从策略文档中提取完整叙述,以识别和标记特定的合规关键字。
docx_get_metadata
- 说明: 检索.docx文件中嵌入的关键元数据。这包括有价值的信息,如文档的作者、创建日期、上次修改日期、修订计数和其他自定义属性。此元数据对于文档治理、版本控制和理解文档来源至关重要。 - 输入: - fileAbsolutePath (string):DOCX文件的绝对路径。 - 退货: 包含文件路径和详细元数据对象的对象(例如。, { file: string, title: string, subject: string, creator: string, ... }). - 示例用例: 在发布文档之前,自动检查其元数据以确认正确的作者,并确保其已完成所需的修订次数。
______________________________________________________________________
🤝 7.贡献
我们欢迎对Office文档引擎的贡献!如果您对新功能、改进或错误修复有想法,请随时:
- 复刻仓库:首先创建自己的叉子。
- 创建新分支:在专门的分支中进行更改。
- 提交拉取请求:详细说明您的更改及其好处。
请确保您的代码符合现有的样式和约定。对于重大更改,请先打开一个问题来讨论您想要更改的内容。
______________________________________________________________________
⚖️ 8.许可证
该项目根据MIT许可证获得许可。
