返回市场
办公协作MCP服务器

办公协作MCP服务器

作者:ecator2 星标更新:2025-10-30

项目介绍

技术文档摘要

许可证:MIT 工作流状态

🇨🇳中文 🇯🇵日本語 🇰🇷한국어 🇩🇪Deutsch 🇪🇸Español 🇫🇷français 🇵🇹Português 🇷🇺Русский

概述

MCP服务器用于操作Office文件,如Excel、Word、PowerPoint和Outlook。

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

使用方法

下载最新版本并将其解压到任何位置。

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

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

如果您正在使用Codex,请参考以下内容。

%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

将数据写入指定工作表中的单元格或单元格范围。

参数

  • 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: 当为真时,匹配搜索文本的任何部分;当为假时,匹配整个搜索文本。
  • ignoreCase: 当为真时,忽略大小写差异;当为假时,不区分大小写。
  • password: 如果所有文件都有相同的密码,则为Excel文件的密码。

excel_read

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

参数

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

excel_clear

清除指定工作表中的单元格或单元格范围的值。 如果 startColumnstartRow 为空,则清除整个工作表。

参数

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

Word

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: 当为真时,在文档末尾追加数据;当为假时,在文档开头追加数据。
  • insertNewline: 在写入现有文件且 newline 选项为真时追加换行符。当数据追加到文档末尾时,在数据前添加换行符;当数据追加到文档开头时,在数据后添加换行符。
  • password: 如果存在,则为Word文件的密码。
  • forceOverwriteFile: 当文件存在时强制覆盖以创建新的文件。

word_find

从Word文件中查找值。

参数

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

word_get_page_count

获取指定Word文件的页数。

参数

  • fullName*: Word文件的完整路径。
  • password: 如果存在,则为Word文件的密码。

word_replace

替换Word文件中的值。

参数

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

PowerPoint

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: 当为真时,匹配较大单词的一部分;当为假时,匹配整个单词。
  • ignoreCase: 当为真时,忽略大小写差异;当为假时,不区分大小写。
  • password: 如果所有文件都有相同的密码,则为PowerPoint文件的密码。

powerpoint_get_slide_count

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

参数

  • fullName*: PowerPoint文件的完整路径。
  • password: 如果存在,则为PowerPoint文件的密码。

Outlook

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*: 邮件正文内容。根据 useHtml 可以是纯文本或HTML。
  • useHtml: 布尔值,指示邮件正文是否应格式化为HTML。
  • sendCc: 邮件的抄送收件人。
  • sendBcc: 邮件的密送收件人。
  • displayBeforeSend: 发送前显示邮件,并在手动确认后发送,否则直接发送。

outlook_find_inbox_mails

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

参数

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