Z

Zerg00s

content-management-systemssearchcloud-platforms

294 查看 · 2026-07-07 更新

SharePoint Online MCP 服务器

这是一个用于 Claude Desktop 的 MCP 服务器,它允许您通过 SharePoint REST API 与 SharePoint Online 进行交互。它设计为与 Claude Desktop 应用程序一起使用,但也可以被其他 MCP 客户端使用。

实现

组件操作是否可用
用户
按角色列出站点用户
列出站点组
获取组成员
添加组成员
移除组成员
站点
获取站点详情
更新站点属性
获取全局导航链接
获取快速导航链接
添加导航链接
更新导航链接
删除导航链接
获取子站点
创建子站点
删除子站点
列表
获取所有列表
创建列表
更新列表
获取列表字段
创建列表字段
更新列表字段
删除列表字段
设置列表字段格式
设置列表视图格式
删除列表
列表视图
获取列表视图
删除列表视图
创建列表视图
更新列表视图
获取视图字段
添加视图字段
移除视图字段
移除所有视图字段
移动视图字段
列表项
获取所有列表项
创建列表项
更新列表项
删除列表项
列表内容类型
获取所有列表内容类型
创建列表内容类型
更新列表内容类型
删除列表内容类型
页面
创建现代页面
文档
创建文档
上传文档
复制文档
获取分类组
创建分类标签
更新分类标签
删除分类标签

身份验证选项

服务器支持两种身份验证方法:

  1. 客户端密钥身份验证 - 传统的客户端ID和密钥。这是仅应用程序的身份验证,已被弃用,并将在2026年4月后不再工作。
  2. 证书身份验证 - 使用Azure AD应用注册与证书的更现代的方法。

选项1:客户端密钥身份验证(将在2026年4月后不再工作)

此选项需要SharePoint管理员角色。

配置步骤

⚠️ 您需要是SharePoint租户管理员或全局管理员才能创建SharePoint应用。

允许仅SharePoint的应用

  • 这里下载并安装SharePoint Online Management Shell。
  • 打开PowerShell并运行以下命令以确保已启用仅SharePoint的应用:

powershell Connect-SPOService -Url https://-admin.sharepoint.com/ Set-SPOTenant -DisableCustomAppAuthentication $false

创建带有客户端密钥的仅SharePoint应用

  • 打开 https://<your-tenant>.sharepoint.com/_layouts/15/appregnew.aspx
  • 点击生成以创建新的客户端ID和密钥。
  • 填写以下字段:
    • 应用域: www.example.com(或您拥有的任何域名)
    • 重定向URL: http://example.com 应用注册
  • 点击创建以创建应用。
  • 客户端ID客户端密钥值复制到安全的地方。稍后会用到它们。

授予应用权限

  • 打开 https://<your-tenant>.sharepoint.com/_layouts/15/appinv.aspx
  • 应用ID字段中粘贴客户端ID值,然后点击查找查找
  • 应用权限请求XML字段中粘贴以下XML:

xml

  • 点击创建,然后点击信任它以授予应用权限。 信任它

选项2:证书身份验证

基于证书的身份验证比客户端密钥提供了更好的安全性。它使用证书来证明应用程序的身份,而不是共享密钥。

⚠️ 此选项需要全局管理员角色来为应用提供必要的权限。

克隆仓库

bash git clone https://github.com/Zerg00s/server-sharepoint.git

使用证书创建Azure AD应用

导航到克隆的仓库,并使用提供的PowerShell脚本来创建带有证书的Azure AD应用:

powershell .Create-SPAppCertificate.ps1 -AppName "SharePoint-Server-MCP" -CertName "SharePoint-Server-MCP-Cert" -CertPassword "YourSecureP@ssw0rd!"

该脚本将执行以下操作:

  1. 在您的证书存储中创建自签名证书
  2. 注册一个Azure AD应用程序
  3. 将证书添加到应用程序
  4. 配置所需的SharePoint权限
  5. 生成包含必要设置的配置文件
  6. 输出与Claude Desktop兼容的claude_desktop_config.json

授予管理员同意

运行脚本后,您将获得一个管理员同意URL。在浏览器中打开它,并以全局管理员身份登录以授予权限。

安装Node.js

安装Node.js版本:22.14.0或更高版本

安装和配置Claude Desktop

  • 下载Claude Desktop并安装。
  • 在Claude Desktop中,转到文件 > 设置 > 开发者文件 > 设置
  • 点击编辑配置 配置- 打开编辑器中的 claude_desktop_config.json 配置文件。您也可以使用之前由 PowerShell 脚本生成的 claude_desktop_config.json 文件。
  • 将以下内容粘贴到配置文件中,并根据您的实际值更新 mcpServers 部分:

对于证书身份验证

json { "mcpServers": { "server-sharepoint": { "command": "npx", "args": [ "-y", "server-sharepoint" ], "env": { "AZURE_APPLICATION_ID": "", "AZURE_APPLICATION_CERTIFICATE_THUMBPRINT": "", "AZURE_APPLICATION_CERTIFICATE_PASSWORD": "", "M365_TENANT_ID": "" } } } }

对于客户端密钥身份验证(不推荐)

json { "mcpServers": { "server-sharepoint": { "command": "npx", "args": [ "-y", "server-sharepoint" ], "env": { "SHAREPOINT_CLIENT_ID": "", "SHAREPOINT_CLIENT_SECRET": "", "M365_TENANT_ID": "" } } } }

💡了解如何从 Entra ID 获取租户 ID

  • 保存配置文件并重新启动 Claude Desktop。确保通过任务栏图标完全退出应用程序: Quick Claude App

如何与 MCP 服务器“对话”

  • 打开 Claude Desktop 并提出类似的问题:Get me the list of lists from https://<your-tenant>.sharepoint.com/sites/Dashboard-Communication. Present the results in a table form. don t use code

示例结果

可用工具

站点管理

  • getSite - 获取 SharePoint 站点的详细信息
  • updateSite - 更新站点属性,包括标题、描述和徽标 URL
  • getSubsites - 从站点获取所有子站点
  • deleteSubsite - 删除一个子站点(需要确认)
  • getGlobalNavigationLinks - 获取全局(顶部)导航链接
  • getQuickNavigationLinks - 获取快速(左侧)导航链接
  • addNavigationLink - 向全局或快速导航添加导航链接
  • updateNavigationLink - 更新现有导航链接
  • deleteNavigationLink - 删除导航链接
  • getSiteUsers - 获取站点用户,可按角色(所有者、成员、访客)筛选
  • getSiteGroups - 获取站点的所有 SharePoint 组

列表管理

  • getLists - 获取 SharePoint 站点上的所有可用列表
  • createList - 使用自定义设置创建新的列表或文档库,并可选自定义 URL
  • deleteList - 删除列表或文档库(需要确认)
  • getListFields - 获取列表中字段/列的详细信息
  • createListField - 创建新字段/列,分为两步:首先使用干净的名称以生成正确的内部名称,然后更新为所需的显示名称(包含空格)
  • updateListField - 更新字段,包括显示名称、选项和其他属性
  • deleteListField - 从列表中删除字段/列(需要确认)
  • getListViews - 获取列表的所有视图,可选字段详细信息
  • createListView - 创建带有选定字段和筛选器的自定义视图
  • updateListView - 更新现有视图的设置和字段
  • deleteListView - 从列表中删除视图(不能删除默认视图)

列表视图字段管理

  • getViewFields - 获取特定列表视图中的所有字段
  • addViewField - 向列表视图添加字段
  • removeViewField - 从列表视图中移除字段
  • removeAllViewFields - 从列表视图中移除所有字段
  • moveViewFieldTo - 将字段移动到列表视图中的特定位置

列表项管理

  • getListItems - 从特定列表中获取所有项
  • createListItem - 使用自定义字段值创建新项
  • updateListItem - 更新现有项的字段值- deleteListItem - 从列表中移除一个项目

用户管理

  • getGroupMembers - 获取特定 SharePoint 组的所有成员
  • addGroupMember - 将用户添加到 SharePoint 组
  • removeGroupMember - 从 SharePoint 组中移除用户

对于贡献者

  • 构建一个新的 npm 包

bash npm run build npm publish npx clear-npx-cache npm cache clean --force

本地运行 MCP Inspector

bash npx @modelcontextprotocol/inspector node build/src/index.js

MCP Server Context 7 文档(针对 LLMs)

[https://context7.com/modelcontextprotocol/servers](MCP Server Context 7 Documentation for LLMs)

本地开发

  • 克隆仓库
  • nvm use 22.14.0
  • npm install
  • 更新 claude_desktop_config.json 文件中的 MCP 配置。示例:

对于客户端密钥认证(将在 2026 年 4 月后失效)

json { "mcpServers": { "sharepoint": { "command": "node", "args": [ "C:\trash\server-sharepoint\build\index.js" ], "env": { "SHAREPOINT_CLIENT_ID": "aaa2ce0f-7c97-4e51-acd9-4ac99e6831d0", "SHAREPOINT_CLIENT_SECRET": "bbb0OFF+aWkua2NJRERUMGduMmhsWDhGUTVPUHJZLXd5dldSemNPUw==", "M365_TENANT_ID": "22bcd981-eaa6-475f-aac3-3afca0c35261" } } } }

对于证书认证(推荐)

json { "mcpServers": { "sharepoint": { "command": "node", "args": [ "C:\trash\server-sharepoint\build\index.js" ], "env": { "AZURE_APPLICATION_ID": "5bc793c7-3eb0-4b86-88bf-b464b2459c4c", "AZURE_APPLICATION_CERTIFICATE_THUMBPRINT": "3D38D1D8AC3228CAD35E527D1105101B0B90CE86", "AZURE_APPLICATION_CERTIFICATE_PASSWORD": "TemporaryP@ssw0rd", "M365_TENANT_ID": "11bcd981-eaa6-475f-aac3-3afca0c35261" } } } }

  • 修改代码
  • 构建代码 npm run build
  • 使用 MCP Inspector 测试:npx @modelcontextprotocol/inspector node build/src/index.js -y

来源