关于 SharePoint MCP: The .NET MCP Server with Graph API & Semantic Kernel
该项目介绍以 .NET、Microsoft Graph API 和 Semantic Kernel 构建 SharePoint Online 搜索服务的模块化方案,面向需要在对话界面中检索企业文档的开发者。它将 MCP 服务、SharePoint 连接器库和 Gemini AI 客户端分开设计。
主要功能
- 01通过 Microsoft Graph 搜索 SharePoint
- 02使用应用专用身份验证
- 03以模块化方式分离服务、连接器和客户端
- 04在 Gemini 对话界面展示搜索结果
适用场景
- 01在聊天中查找 SharePoint 文档
- 02将企业文档搜索接入 AI 对话流程
MCP 相关
方案中的 .NET MCP 服务通过 API 接收搜索请求,并调用连接器库查询 SharePoint。文档描述的是借助 HTTP API 交互的架构,没有说明 MCP 协议具体传输或工具定义。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
SharePoint MCP:结合 Graph API 和 Semantic Kernel 的 .NET MCP 服务
在现代企业中,安全、高效地访问特定数据至关重要,尤其是在与 AI 功能集成时。设想一个聊天机器人,它不仅能智能对话,还能直接从组织的 SharePoint 网站中获取相关文档或信息。本文介绍一种模块化架构,使用 .NET、Microsoft Graph API、Semantic Kernel 和 Gemini AI 实现这一目标。
本项目由三个不同的模块组成:
- MCP 服务(Semantic Kernel):负责处理 SharePoint 交互的核心。
- SharePoint Connector Library:连接 SharePoint Online 的桥梁。
- MCP 客户端(Gemini AI):面向用户的聊天界面。
下面逐一介绍各个模块:
模块 1:.NET MCP 服务(借助 Semantic Kernel)
这个核心组件充当中心枢纽和 API 端点。我们使用 .NET 构建,并在其中集成 Semantic Kernel。虽然也可以使用标准的 ASP.NET Core Web API,但借助 Semantic Kernel,我们可以将 SharePoint 交互定义为原生“技能”或“插件”。
通过 API 端点(例如 SharePoint 搜索)公开功能,供客户端调用。使用 .NET(例如 ASP.NET Core Web API)和 Semantic Kernel SDK 编排对 Connector Library 的调用。
核心功能:定义一个 API 路由(例如 /api/sharepoint/search),用于接收搜索查询。该路由将调用 Connector Library 中的函数。借助 Semantic Kernel,如果之后有需要,就可以轻松将此函数集成到更复杂的 AI 推理流程中。
模块 2:SharePoint Connector Library(Graph API)
这个 .NET 库专门负责与 SharePoint Online 通信的具体细节。
用途:通过 Microsoft Graph 进行身份验证并执行特定的 SharePoint 操作,首先实现搜索。
技术:.NET Standard 或 .NET Core Library、Microsoft.Graph SDK。
身份验证:使用 Client ID 和 Client Secret(仅应用身份验证)。
设置:需要在 Azure Active Directory(Azure AD)中注册应用,为其授予所需的 Graph API 权限(例如 Sites.Read.All,或根据需求授予更细粒度的权限),并获得管理员同意。重要的是,要安全地存储 Client Secret(例如,使用 Azure Key Vault、.NET User Secrets),切勿将其硬编码!
核心功能:一个异步函数(例如 SearchSharePointAsync(string query)),用于:
使用 Client ID 和 Secret 获取 Microsoft Graph 的访问令牌。
构造发送到 SharePoint 搜索端点(/search/query)的 Graph API 请求。
使用 Microsoft.Graph SDK 发送请求。
解析响应并返回相关搜索结果(例如文档名称、链接和摘要)。
模块 3:MCP 客户端(Gemini AI)
这是用户与之交互的应用。它提供由 Gemini AI 驱动的聊天界面。
目的:提供 AI 驱动的对话体验。检测与 SharePoint 相关的用户意图,并将这些任务委派给 MCP 服务。 技术:任意客户端平台(.NET MAUI、Blazor、Console App 等)、Google AI Gemini SDK。 功能: 用户通过 Gemini 驱动的界面聊天。 客户端应用(也可能是 Gemini 本身,具体取决于实现方式)会分析对话。 检测到与“SharePoint”(或特定文档类型、站点等)相关的关键词或意图时,客户端会向 MCP 服务的 API 端点(例如 /api/sharepoint/search)发送 HTTP 请求,并附上相关查询。 客户端接收服务返回的搜索结果,并在聊天上下文中呈现给用户。 工作流示例:
用户:“嘿,Gemini,你能帮我在 SharePoint 上找到第一季度营销报告吗?” MCP 客户端:检测到“SharePoint”和“第一季度营销报告”。 MCP 客户端:向 MCP 服务发送 POST /api/sharepoint/search 请求,查询内容为“第一季度营销报告”。 MCP 服务:收到请求后,在连接器库中调用 SearchSharePointAsync("第一季度营销报告")。 连接器库:使用 Client ID/Secret 通过 Graph API 进行身份验证,并执行 /search/query 搜索。 SharePoint Online:返回搜索结果。 连接器库:将格式化后的结果返回给 MCP 服务。 MCP 服务:在 API 响应中将结果返回给 MCP 客户端。 MCP 客户端:在 Gemini 聊天界面中显示结果(例如:“我找到了这些文档:[链接 1]、[链接 2]”)。 优势:
模块化设计:职责划分清晰,使开发和维护更轻松。 安全访问:仅应用身份验证可确保对 SharePoint 数据进行受控访问,且无需在后端模拟用户身份。 AI 集成:将对话式 AI 与企业数据检索无缝结合。 可扩展:可轻松在连接器库中添加更多 SharePoint 功能(上传、列出文件等),并通过 MCP 服务对外提供。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。