Office文件操作服务器

MCP服务器用于操作Excel、Word、PowerPoint、Outlook和PDF等Office文件,需安装Office 2016及以上版本。

  • by ecator
  • C#
  • 本地部署
  • 7 星标
  • 更新于
在 GitHub 查看 ecator/cs-office-mcp-server

使用说明

🇨🇳中文 🇯🇵日本语 🇰🇷韩语 🇩🇪德语 🇪🇸西班牙语 🇫🇷法语 🇵🇹葡萄牙语 🇷🇺俄语

概述

用于操作Excel、Word、PowerPoint、Outlook和PDF等Office文件的MCP服务器。

您必须安装Office 2016和更高版本才能使用此MCP服务器。

使用

下载最新版本 并将其提取到任何位置。

然后将以下配置添加到MCP服务器配置中。

{
  "mcpServers": {
    "office": {
      "command": "DRIVER:\\PATH\\TO\\cs-office-mcp-server.exe",
      "args": [],
      "env": {}
    }
  }
}

如果您正在使用,请参阅以下内容 法典.

%USERPROFILE%\.codex\config.toml

[mcp_servers.office]
command = 'cmd'
args = [
    "/c",
    'DRIVER:\PATH\TO\cs-office-mcp-server.exe',
]
env = { SystemRoot = 'C:\Windows' }
startup_timeout_sec = 300
tool_timeout_sec = 300
enabled = true

请注意,这仅在安装了Office 2016(64位版本)或更高版本的Windows上受支持!

工具

Excel

excel_run_macro

运行指定Excel文件的宏。

参数

  • fullName*:Excel文件的完整路径。
  • macroName*:宏的名称。
  • macroParameters:宏的参数。最大数量为30。
  • save:执行宏后保存文件。
  • password:Excel文件的密码(如果有的话)。

excel_read_used_range

从指定工作表中读取已使用单元格范围的值。如果单元格为空,则不会包含在返回的结果集中。

参数

  • fullName*:Excel文件的完整路径。
  • sheetName*:Excel文件的工作表名称。
  • password:Excel文件的密码(如果有的话)。

excel_get_sheets

获取指定Excel文件的所有工作表名称。

参数

  • fullName*:Excel文件的完整路径。
  • password:Excel文件的密码(如果有的话)。

excel_write

将数据写入Excel文件中指定工作表的单元格或单元格区域。

参数

  • fullName*:Excel文件的完整路径。如果不存在,它将被创建。
  • sheetName:Excel文件的工作表名称。如果不存在,它将被创建。
  • data:需要写入的数据。
  • startColumn:第一列为字母,用于写入数据。(如A)
  • startRow:写入数据的第一个行号。
  • password:Excel文件的密码(如果有的话)。
  • forceOverwriteFile:当文件存在时,强制覆盖以创建新文件。
  • forceOverwriteSheet:当工作表存在时,强制覆盖以创建新的工作表。

excel_rename_sheet

更改指定Excel文件的工作表名称。

参数

  • fullName*:Excel文件的完整路径。
  • oldSheetName*:Excel文件的旧工作表名称。
  • newSheetName*:Excel文件的新工作表名称。
  • password:Excel文件的密码(如果有的话)。

excel_copy_sheet

复制指定Excel文件的工作表。

参数

  • fullName*:Excel文件的完整路径。
  • sourceSheetName*:Excel文件的源工作表名称。
  • targetSheetName*:Excel文件的目标工作表名称。
  • deleteTargetIfExists:如果目标工作表存在,请先删除它。
  • beforeSourceSheet:复制后,将目标工作表移动到源工作表的左侧,否则移动到源表的右侧。
  • password:Excel文件的密码(如果有的话)。

excel_get_tables

获取指定Excel文件的所有表名。

参数

  • fullName*:Excel文件的完整路径。
  • password:Excel文件的密码(如果有的话)。

excel_delete_sheet

删除指定Excel文件的工作表。

参数

  • fullName*:Excel文件的完整路径。
  • sheetName*:Excel文件的工作表名称。
  • password:Excel文件的密码(如果有的话)。

excel_get_table_content

获取指定Excel文件的表格内容。

参数

  • fullName*:Excel文件的完整路径。
  • tableName*:Excel文件的表名。
  • password:Excel文件的密码(如果有的话)。

excel_find

从Excel文件中查找值。

参数

  • fullNameList*:需要搜索的Excel文件的完整路径列表。
  • searchValue*:要搜索的值可以使用通配符,如 ?(任何单个字符), *(任意数量的字符), ~ 紧随其后 ?, *,或 ~(问号、星号或波浪号)。
  • matchPart:如果为真,则与搜索文本的任何部分匹配。当为false时,匹配整个搜索文本。
  • ignoreCase:为真时忽略小写和大写差异。false时不区分大小写
  • password:Excel文件的密码(如果有),并且所有密码都相同。

excel_read

从指定工作表中读取单元格或单元格区域的值。如果单元格为空,则不会包含在返回的结果集中。

参数

  • fullName*:Excel文件的完整路径。
  • sheetName*:Excel文件的工作表名称。
  • startColumn:第一列为字母。(如A)
  • startRow:第一行编号。
  • endColumn:最后一列为字母。(如Z)如果为空,则相对于startColumn使用xlToRight
  • endRow:最后一行编号。如果为空,则相对于startRow使用xlDown
  • password:Excel文件的密码(如果有的话)。

excel_clear

从指定工作表中清除单元格或单元格区域的值。 如果startColumn或startRow为空,则清除整个工作表。

参数

  • fullName*:Excel文件的完整路径。
  • sheetName*:Excel文件的工作表名称。
  • startColumn:第一列为字母。(如A)
  • startRow:第一行编号。
  • endColumn:最后一列为字母。(如Z)如果为空,则相对于startColumn使用xlToRight
  • endRow:最后一行编号。如果为空,则相对于startRow使用xlDown
  • password:Excel文件的密码(如果有的话)。

字

word_run_macro

运行指定Word文件的宏。

参数

  • fullName*:Word文件的完整路径。
  • macroName*:宏的名称。
  • macroParameters:宏的参数。最大数量为30。
  • save:执行宏后保存文件。
  • password:Word文件的密码(如果有的话)。

word_clear

清除指定Word文件的全部内容。

参数

  • fullName*:Word文件的完整路径。
  • password:Word文件的密码(如果有的话)。

word_read

获取指定Word文件的文本内容。

参数

  • fullName*:Word文件的完整路径。
  • fromPage:要阅读的起始页码。
  • toPage:要读取的结束页码。如果它是空的,那么读到最后一页。
  • password:Word文件的密码(如果有的话)。

word_write

将数据写入Word文件。

参数

  • fullName*:Word文件的完整路径。如果不存在,它将被创建。
  • data:需要写入的数据。
  • insertAfter:如果为true,则添加到文档末尾。如果为false,请附加到文档的开头。
  • insertNewline:在写入现有文件时附加换行符,换行符选项为true。当数据附加到文档末尾时,会在数据之前添加一个换行符。当数据被添加到文档的开头时,数据后面会添加一个换行符。
  • password:Word文件的密码(如果有的话)。
  • forceOverwriteFile:当文件存在时,强制覆盖以创建新文件。

word_find

从Word文件中查找值。

参数

  • fullNameList*:需要搜索的Word文件的完整路径列表。
  • searchValue*:要搜索的值可以使用通配符,如 ?(任何单个字符), *(任意数量的字符), \ 紧随其后 ?, *,或 \(问号、星号或反斜杠)。
  • matchPart:当为真时,与较大单词的任何部分匹配。如果为false,则与搜索文本的整个单词进行匹配。
  • ignoreCase:为真时忽略小写和大写差异。false时不区分大小写。
  • password:Word文件的密码(如果有),并且所有文件都是相同的。

word_get_page_count

获取指定Word文件的所有页数。

参数

  • fullName*:Word文件的完整路径。
  • password:Word文件的密码(如果有的话)。

word_replace

替换Word文件中的值。

参数

  • fullNameList*:需要搜索的Word文件的完整路径列表。
  • oldValue*:要搜索的值可以使用通配符,如 ?(任何单个字符), *(任意数量的字符), \ 紧随其后 ?, *,或 \(问号、星号或反斜杠)。
  • newValue*:新的重置值。
  • matchPart:当为真时,与较大单词的任何部分匹配。如果为false,则与搜索文本的整个单词进行匹配。
  • ignoreCase:为真时忽略小写和大写差异。false时不区分大小写。
  • replaceAll:为true时替换所有匹配项。如果为false,则仅替换第一个匹配项。
  • password:Word文件的密码(如果有),并且所有文件都是相同的。

幻灯片

powerpoint_run_macro

运行指定PowerPoint文件的宏。

参数

  • fullName*:PowerPoint文件的完整路径。
  • macroName*:宏的名称。
  • macroParameters:宏的参数。最大数量为30。
  • save:执行宏后保存文件。
  • password:PowerPoint文件的密码(如果有的话)。

powerpoint_read

获取指定PowerPoint文件的文本内容。

参数

  • fullName*:PowerPoint文件的完整路径。
  • fromSlide:要读取的起始幻灯片编号。
  • toSlide:要读取的末尾幻灯片编号。如果它是空的,那么读到最后一张幻灯片。
  • password:PowerPoint文件的密码(如果有的话)。

powerpoint_find

从PowerPoint文件中查找价值。

参数

  • fullNameList*:需要搜索的PowerPoint文件的完整路径列表。
  • searchValue*:要搜索的值。
  • matchPart:当为真时,与较大单词的任何部分匹配。如果为false,则与搜索文本的整个单词进行匹配。
  • ignoreCase:为真时忽略小写和大写差异。false时不区分大小写。
  • password:PowerPoint文件的密码(如果有),并且所有文件都是相同的。

powerpoint_get_slide_count

获取指定PowerPoint文件的所有幻灯片数量。

参数

  • fullName*:PowerPoint文件的完整路径。
  • password:PowerPoint文件的密码(如果有的话)。

展望

outlook_read_appointments

阅读Outlook日历中的约会内容。

参数

  • withinDays:约会的天数范围。如果使用负数,请阅读过去的约会。

outlook_send_appointment

使用Outlook发送约会。

参数

  • subject*:任命的主题。
  • participants*:代表会议参与者的一系列电子邮件地址。
  • startTime*:预约的开始时间。
  • duration*:预约时间(分钟)。必须大于0。
  • location:任命地点。
  • body:任命的正文内容。
  • displayBeforeSend:发送前显示预约,手动确认后发送,否则直接发送。

outlook_get_inbox_mail_count

获取Outlook收件箱中的所有邮件数量。

参数

(无参数)

outlook_read_inbox_mails

阅读Outlook收件箱中的邮件内容。

参数

  • startItem:要读取的项目的起始位置,从1开始。
  • maxItems:要阅读的最大邮件数。
  • newestFirst:退回邮件的排序顺序,特别是对最近收到的邮件进行优先级排序。

outlook_send_mail

使用Outlook发送邮件。

参数

  • subject*:邮件的主题。
  • sendTo*:邮件的主要收件人。
  • body*:邮件正文的内容。可以是纯文本或HTML,具体取决于使用HTML。
  • useHtml:一个布尔值,指示邮件正文是否应格式化为HTML。
  • sendCc:邮件的抄送收件人。
  • sendBcc:邮件的密件抄送收件人。
  • displayBeforeSend:发送前显示邮件,手动确认后发送,否则直接发送。

outlook_find_inbox_mails

在Outlook收件箱中查找邮件内容。

参数

  • searchValue:将在主题和正文中搜索要搜索的值。如果为空,则不进行过滤。
  • senders:需要指定发件人的电子邮件或姓名。如果为空,则不进行过滤。
  • maxItems:要返回的最大邮件数。
  • newestFirst:退回邮件的排序顺序,特别是对最近收到的邮件进行优先级排序。

PDF

pdf_get_page_count

获取指定PDF文件的所有页数。

参数

  • fullName*:PDF文件的完整路径。
  • password:PDF文件的密码(如果有的话)。

pdf_read

获取指定PDF文件的文本内容。

参数

  • fullName*:PDF文件的完整路径。
  • fromPage:要阅读的起始页码。
  • toPage:要读取的结束页码。如果它是空的,那么读到最后一页。
  • password:PDF文件的密码(如果有的话)。

pdf_find

从PDF文件中寻找价值。

参数

  • fullNameList*:需要搜索的PDF文件的完整路径列表。
  • searchValue*:要搜索的值可以使用通配符,如 ?(任何单个字符), *(任意数量的字符), \ 紧随其后 ?, *,或 \(问号、星号或反斜杠)。
  • matchPart:当为真时,与较大单词的任何部分匹配。如果为false,则与搜索文本的整个单词进行匹配。
  • ignoreCase:为真时忽略小写和大写差异。false时不区分大小写。
  • password:PDF文件的密码,如果有,所有密码都是一样的。

pdf_merge

将多个PDF文件合并为一个PDF文件。

参数

  • fullNameList*:要合并的PDF文件的完整路径列表。
  • outputFullName*:合并PDF文件的输出完整路径。

pdf_extract

将PDF文件中的页面提取到新的PDF文件中。

参数

  • fullName*:要从中提取的PDF文件的完整路径。
  • outputFullName*:提取的PDF文件的输出完整路径。
  • fromPage*:要提取的起始页码(从1开始)。
  • toPage*:要提取的结束页码(从1开始)。
  • password:PDF文件的密码(如果有的话)。