SharePoint文件管理工具

一个通过自然语言与SharePoint交互的工具,支持浏览站点、管理文档和搜索文件等功能。

  • by fidesit
  • Kotlin
  • 本地部署
  • 更新于
在 GitHub 查看 fidesit/mcp-server-sharepoint

使用说明

mcp服务器共享点

与您的SharePoint对话——浏览网站、管理文档、搜索文件,所有这些都可以通过任何兼容MCP的AI助手使用自然语言完成。

使用Kotlin、Microsoft Graph SDK v6和官方MCP SDK构建。

亮点

  • 🛠️ 涵盖整个文档生命周期的10个工具
  • 🔄 指数回退自动重试(429/503)
  • 📄 透明分页(自动跟随@odata.nextLink)
  • 📤 大文件的分块上传(>4MB自动切换为可恢复)
  • 🔍 来自Graph API的结构化错误消息
  • 🤖 适用于Claude Desktop、Cursor和任何MCP客户端
  • 📦 发布到Maven Central

快速开始

先决条件: JDK 21+,一个具有SharePoint权限的Azure AD应用程序注册。

# 1. Clone and build
git clone https://github.com/fidesit/mcp-server-sharepoint.git
cd mcp-server-sharepoint
./gradlew build

# 2. Configure (copy and fill in your Azure AD credentials)
cp .env.example .env

# 3. Run
java -jar build/libs/mcp-server-sharepoint-0.1.0.jar

服务器使用MCP规范定义的JSON-RPC通过stdio(stdin/stdout)进行通信。将其连接到任何兼容MCP的客户端。

与MCP客户端一起使用

克劳德桌面版

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "sharepoint": {
      "command": "java",
      "args": ["-jar", "/absolute/path/to/mcp-server-sharepoint-0.1.0.jar"],
      "env": {
        "SHAREPOINT_TENANT_ID": "your-tenant-id",
        "SHAREPOINT_CLIENT_ID": "your-client-id",
        "SHAREPOINT_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

光标

添加到光标MCP设置(.cursor/mcp.json):

{
  "mcpServers": {
    "sharepoint": {
      "command": "java",
      "args": ["-jar", "/absolute/path/to/mcp-server-sharepoint-0.1.0.jar"],
      "env": {
        "SHAREPOINT_TENANT_ID": "your-tenant-id",
        "SHAREPOINT_CLIENT_ID": "your-client-id",
        "SHAREPOINT_CLIENT_SECRET": "your-client-secret"
      }
    }
  }
}

克劳德代码

claude mcp add sharepoint -- java -jar /path/to/mcp-server-sharepoint-0.1.0.jar

其他客户

任何支持stdio传输的MCP客户端都可以使用此服务器。将其指向带有所需环境变量的JAR。

可用工具

导航

工具 描述 必需参数 可选参数
sharepoint_list_sites 列出或搜索可访问的SharePoint网站 -- search
sharepoint_list_drives 列出网站的文档库 siteId —
sharepoint_list_files 列出驱动器路径中的文件和文件夹 driveId path

阅读和搜索

工具 描述 必需参数 可选参数
sharepoint_get_file_content 将文件内容下载为UTF-8文本 driveId, itemId —
sharepoint_search_files 按文本查询在驱动器中搜索文件 driveId, query —

编写和组织

工具 描述 必需参数 可选参数
sharepoint_upload_file 上传文件(base64编码内容) driveId, parentPath, fileName, content —
sharepoint_create_folder 创建文件夹 driveId, parentPath, folderName —
sharepoint_copy_item 将项目复制到新位置 driveId, itemId, destinationPath —
sharepoint_move_item 将项目移动到新位置 driveId, itemId, destinationPath —
sharepoint_delete_item 删除文件或文件夹(永久) driveId, itemId —

工作流示例

用户: 查找营销团队的SharePoint网站。 助理: 呼叫 sharepoint_list_sites(search="marketing")

用户: 它有哪些文档库? 助理: 呼叫 sharepoint_list_drives(siteId="...")

用户: 显示“报告”文件夹中的文件。 助理: 呼叫 sharepoint_list_files(driveId="...", path="Reports")

用户: 阅读第四季度总结。 助理: 呼叫 sharepoint_get_file_content(driveId="...", itemId="...")

配置

环境变量

变量 必填 默认 描述
SHAREPOINT_TENANT_ID 是 -- Azure AD租户ID
SHAREPOINT_CLIENT_ID 是 -- Azure AD应用程序(客户端)ID
SHAREPOINT_CLIENT_SECRET 是 -- Azure AD客户端机密
SHAREPOINT_SITE_URL 否 -- 将操作限制到特定的SharePoint网站URL
SHAREPOINT_MAX_UPLOAD_BYTES 没有 0 上传文件大小的硬限制(以字节为单位)。0=无限制
SHAREPOINT_MAX_PAGINATION_RESULTS 没有 500 分页列表操作的安全帽

Azure AD安装程序

  1. 首选 Azure门户 > 应用程序注册 > 新注册
  2. 命名它(例如。, mcp-sharepoint-server),选择 单租户,注册
  3. 注意 应用程序(客户端)ID 和 目录(租户)ID
  4. 首选 证书和秘密 > 新客户机密 --复制机密值
  5. 首选 API权限 > 添加权限 > 微软图形 > 应用权限,添加:
    • Sites.Read.All
    • Sites.ReadWrite.All
    • Files.ReadWrite.All
  6. 点击 授予管理员同意 (需要Azure AD管理员)

从源头构建

# Build and run unit tests
./gradlew build

# Run unit tests only
./gradlew test

# Run integration tests (requires SharePoint credentials in environment)
./gradlew integrationTest

# Build fat JAR only (skip tests)
./gradlew shadowJar

胖JAR是在 build/libs/mcp-server-sharepoint-<version>.jar.

项目结构

src/main/kotlin/com/utisha/mcp/sharepoint/
  Main.kt                  # Entry point — stdio transport, env-based config
  SharePointConfig.kt      # Configuration with validation and env var parsing
  SharePointGraphClient.kt # Microsoft Graph API client (all SharePoint operations)
  SharePointMcpServer.kt   # MCP tool definitions and request handling

建筑

服务器分为三层:

  1. SharePointGraphClient --封装Microsoft Graph SDK v6(基于Kiota)。处理身份验证、分页、重试和分块上传。这是一个不依赖MCP的纯SharePoint客户端。

  2. SharePoint McpServer --注册10个MCP工具,并将传入的工具调用映射到 SharePointGraphClient 方法。运输无关(接收 McpServerTransportProvider).

  3. 主 --使用基于环境的配置将stdio传输连接到服务器。

关键行为:

  • 自动重试 具有针对Graph API节流(429)和瞬时误差(503)的指数退避
  • 透明分页 --列表操作如下 @odata.nextLink 自动,上限为 maxPaginationResults
  • 分块上传 --使用Graph的可恢复上传会话上传大于4MB的文件
  • 结构化错误 -图形API ODataError 响应被提取为可读的消息

许可证

Apache许可证2.0