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

来源