SharePoint文档管理服务器

一个基于TypeScript的MCP服务器,通过Microsoft Graph API提供全面的SharePoint集成,支持搜索文件、列出站点、浏览文档库和检索文件内容等功能。

  • by sekops-ch
  • JavaScript
  • 本地部署
  • 11 星标
  • 更新于
在 GitHub 查看 sekops-ch/sharepoint-mcp-server

使用说明

SharePoint MCP服务器

用于浏览和与Microsoft SharePoint网站和文档交互的模型上下文协议服务器。

此基于TypeScript的MCP服务器通过Microsoft Graph API提供全面的SharePoint集成,实现:

  • 资源:使用结构化元数据作为MCP资源访问SharePoint网站
  • 工具:搜索文件、列出网站、浏览文档库和检索文件内容
  • 认证:通过自动令牌管理保护OAuth2客户端凭据流

特性

资源

  • 列出应用程序可访问的SharePoint网站
  • 通过以下方式访问单个站点信息 sharepoint://site/{siteId} URI
  • JSON格式的站点元数据,包含显示名称和web URL

工具

search_files

使用Microsoft Graph Search API在SharePoint中搜索文件和文档

  • 参数:
    • query (必填):搜索查询字符串
    • limit (可选):返回的最大结果数(默认值:10)

list_sites

列出应用程序可访问的SharePoint网站

  • 参数:
    • search (可选):按显示名称筛选网站

get_site_info

获取特定SharePoint网站的详细信息

  • 参数:
    • siteUrl (必填):SharePoint网站URL(例如。,https://tenant.sharepoint.com/sites/sitename)

list_site_drives

列出SharePoint网站中的文档库(驱动器)

  • 参数:
    • siteUrl (必需):SharePoint网站URL

list_drive_items

列出SharePoint文档库中的文件和文件夹

  • 参数:
    • siteUrl (必需):SharePoint网站URL
    • driveId (可选):特定驱动器ID(如果未指定,则使用默认驱动器)
    • folderPath (可选):列出项目的文件夹路径(默认:root)

get_file_content

从SharePoint获取特定文件的内容(仅限文本文件)

  • 参数:
    • siteUrl (必需):SharePoint网站URL
    • filePath (必填):文件路径
    • driveId (可选):特定驱动器ID(如果未指定,则使用默认驱动器)

先决条件

Azure应用程序注册

  1. 在Azure Active Directory中注册应用程序
  2. 配置API权限:
    • 微软图形: Sites.Read.All (应用程序权限)
    • 微软图形: Files.Read.All (应用程序权限)
  3. 授予管理员权限同意
  4. 创建客户端密钥

环境变量

设置以下环境变量:

SHAREPOINT_URL=https://yourtenant.sharepoint.com
TENANT_ID=your-azure-tenant-id
CLIENT_ID=your-azure-app-client-id
CLIENT_SECRET=your-azure-app-client-secret

发展

安装依赖项:

npm install

构建服务器:

npm run build

对于自动重建的开发:

npm run watch

测试

使用MCP检查器测试服务器:

npm run inspector

检查器提供了一个web界面来测试所有可用的工具和资源。

安装

Claude桌面配置

将服务器添加到您的Claude Desktop配置中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "sharepoint-mcp-server": {
      "command": "node",
      "args": ["/path/to/sharepoint-mcp-server/build/index.js"],
      "env": {
        "SHAREPOINT_URL": "https://yourtenant.sharepoint.com",
        "TENANT_ID": "your-azure-tenant-id",
        "CLIENT_ID": "your-azure-app-client-id",
        "CLIENT_SECRET": "your-azure-app-client-secret"
      }
    }
  }
}

全球安装

您还可以全局安装服务器:

npm install -g .

然后直接使用它:

sharepoint-mcp-server

建筑

服务器实现了一个面向服务的架构,并明确分离了关注点:

  • 认证层:处理OAuth2令牌获取和刷新
  • Graph API客户端:管理对Microsoft Graph API的HTTP请求
  • 工具操作员:处理MCP工具请求并格式化响应
  • 资源处理程序:管理SharePoint网站资源和元数据
  • 错误处理:使用适当的MCP错误代码进行全面的错误管理

安全考虑

  • 使用OAuth2客户端凭据流进行安全身份验证
  • 令牌在到期前会自动刷新
  • 所有API请求都使用HTTPS
  • 客户端机密应安全存储,不得提交版本控制
  • 应用程序权限需要Azure AD中的管理员同意

故障排除

常见问题

  1. 身份验证错误:验证Azure应用程序注册和权限
  2. 现场访问:确保应用程序具有适当的SharePoint权限
  3. 网络问题:检查Microsoft Graph API访问的防火墙设置

调试模式

设置详细日志记录的环境变量:

DEBUG=sharepoint-mcp-server

贡献

  1. 遵循TypeScript的最佳实践
  2. 保持全面的错误处理
  3. 添加新功能的测试
  4. 更新API变更文档

许可证

此项目根据Mozilla公共许可证2.0获得许可。请参阅 许可证 文件以获取详细信息。

贡献

我们欢迎捐款!请遵循以下指南:

入门指南

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 进行更改
  4. 添加新功能的测试
  5. 确保所有测试通过(npm test)
  6. 提交您的更改(git commit -m 'Add amazing feature')
  7. 推到分支(git push origin feature/amazing-feature)
  8. 打开拉取请求

开发指南

  • 遵循TypeScript最佳实践并维护类型安全
  • 使用适当的MCP错误代码实施全面的错误处理
  • 为所有公共方法和类添加JSDoc注释
  • 通过明确的关注点分离来维护面向服务的架构
  • 遵循SOLID原则,保持函数的重点和可测试性
  • 针对任何API更改更新文档

代码的风格

  • 使用TypeScript严格模式
  • 遵循现有的代码格式和命名约定
  • 删除未使用的导入和变量
  • 使用描述性变量和函数名称
  • 比继承更喜欢组合

测试

  • 为新功能添加单元测试
  • 测试误差条件和边缘情况
  • 确保基本测试套件通过
  • 尽可能使用真实的SharePoint环境进行测试

文档

  • 更新README.md以获取新功能或配置更改
  • 为新的公共API添加JSDoc注释
  • 包括复杂功能的示例
  • 更新变更日志以了解重大变更

更新日志

[0.1.0]-初始版本

  • 通过Microsoft Graph API实现基本SharePoint集成
  • 支持跨SharePoint搜索文件
  • 网站列表和浏览功能
  • 文档库访问和文件内容检索
  • OAuth2客户端凭据身份验证
  • SharePoint网站的MCP资源支持
  • 全面的错误处理和记录

支持

如果您遇到问题或有疑问:

  1. 检查 故障排除部分 在这个README中
  2. 搜索现有 GitHub问题
  3. 使用有关您问题的详细信息创建新问题
  4. 包括相关日志和配置(不含敏感信息)

致谢