SharePoint集成服务器

一个用于Microsoft SharePoint集成的生产级模型上下文协议(MCP)服务器,支持通过Microsoft Graph API与SharePoint站点、文档库和文件交互。

  • by ezemriv
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 ezemriv/sharepoint-mcp

使用说明

SharePoint MCP服务器

用于Microsoft SharePoint集成的生产就绪模型上下文协议(MCP)服务器。使Claude Desktop和Claude Code能够通过Microsoft Graph API与SharePoint网站、文档库和文件进行交互。

特性

  • 站点管理:列出和浏览SharePoint网站
  • 文件操作:浏览、搜索、上传和下载文件
  • 文档库:访问和管理文档库
  • 共享:为文件创建共享链接
  • 搜索:跨SharePoint的全文搜索
  • 列表:读取和创建SharePoint列表项
  • OAuth身份验证:基于浏览器的安全登录,具有自动令牌刷新功能
  • 结构化输出:所有响应都使用Pydantic模型进行类型安全

可用工具

工具 说明
list_sites 列出您有权访问的SharePoint网站
list_libraries 获取网站的文档库
list_files 浏览库/文件夹中的文件(带分页)
search_files 跨SharePoint搜索文件
get_file_content 下载并读取文件内容
upload_file 将文件上传到库
get_file_metadata 获取详细的文件元数据
create_sharing_link 为文件生成共享链接
list_items 从SharePoint列表中获取项目
create_list_item 将项目添加到SharePoint列表

快速开始

先决条件

  1. Python 3.11+ 和 紫外线 包管理器

    # Install uv if you don't have it
    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  2. Azure AD应用程序注册 (参见 Azure安装指南)

    • 客户端ID
    • 租户ID
    • 所需权限:网站。读。全部,文件。读写。全部,用户。读取,离线访问
    • 重定向URI: http://localhost:8765/callback

安装

选项A:使用uvx(推荐给最终用户)

添加到您的Claude桌面配置 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "sharepoint": {
      "command": "uvx",
      "args": ["sharepoint-mcp"],
      "env": {
        "AZURE_CLIENT_ID": "your-azure-app-client-id",
        "AZURE_TENANT_ID": "your-azure-tenant-id"
      }
    }
  }
}

重新启动克劳德桌面。首次使用SharePoint命令时,将打开一个浏览器窗口进行身份验证。

选项B:使用uv--目录(用于开发)

克隆此存储库并添加到您的Claude Desktop配置中:

{
  "mcpServers": {
    "sharepoint": {
      "command": "uv",
      "args": ["--directory", "/path/to/sharepoint-mcp", "run", "sharepoint-mcp"],
      "env": {
        "AZURE_CLIENT_ID": "your-azure-app-client-id",
        "AZURE_TENANT_ID": "your-azure-tenant-id"
      }
    }
  }
}

选项C:使用Claude代码

# Add to Claude Code's MCP configuration
claude mcp add sharepoint -- uvx sharepoint-mcp

# Or manually edit ~/.claude/claude_code_config.json

首次运行

  1. 打开Claude Desktop并询问:“列出我的SharePoint网站”
  2. 浏览器窗口将自动打开
  3. 使用您的Microsoft帐户登录
  4. 授予请求的权限
  5. 回到克劳德身边——你已经通过认证了!

令牌安全地存储在您的操作系统密钥链中,并自动刷新。

配置

环境变量

变量 必填 描述
AZURE_CLIENT_ID 是 Azure AD应用程序客户端ID
AZURE_TENANT_ID 是 Azure AD租户ID
REDIRECT_URI no OAuth信用URI(默认值: http://localhost:8765/callback)
LOG_LEVEL 否 日志记录级别(默认值: INFO)

配置文件(备选)

创建 ~/.config/sharepoint-mcp/config.json:

{
  "client_id": "your-azure-app-client-id",
  "tenant_id": "your-azure-tenant-id",
  "redirect_uri": "http://localhost:8765/callback",
  "log_level": "INFO"
}

使用示例

浏览文件

"Show me the files in my Marketing site's Documents library"

助理将:

  1. 呼叫 list_sites 搜索=“营销”
  2. 呼叫 list_libraries 对于该网站
  3. 呼叫 list_files 对于文档库
  4. 显示文件列表

搜索文档

"Find all PDFs related to Q4 reports"

助理会打电话来 search_files with query=“Q4报告文件类型:pdf”

上传文件

"Upload this content to the Projects library in my main SharePoint site as 'proposal.txt'"

助理将:

  1. 查找网站和库
  2. 呼叫 upload_file 随着内容
  3. 确认上传

创建共享链接

"Create a view-only link for the budget.xlsx file that expires in 7 days"

助理将:

  1. 搜索或浏览文件
  2. 呼叫 create_sharing_link link_type=“view”,expiration_days=7
  3. 返回可共享的URL

Azure AD应用程序安装

您需要在Azure AD中注册一个应用程序才能使用此MCP服务器。请参阅详细指南: docs/azure setup.md

快速摘要:

  1. 首选 Azure门户 → Azure Active Directory→ 应用程序注册
  2. 创建新注册:
    • 名称:“SharePoint MCP服务器”
    • 支持的帐户类型:“仅此组织目录中的帐户”
    • 重定向URI:Web→ http://localhost:8765/callback
  3. 添加API权限:
    • 微软图形→ 委托权限:
      • Sites.Read.All
      • Files.ReadWrite.All
      • User.Read
      • offline_access
    • 授予管理员同意(如果需要)
  4. 认证→ 启用“允许公共客户端流”
  5. 复制配置的客户端ID和租户ID

发展

设置

# Clone the repository
git clone https://github.com/yourusername/sharepoint-mcp.git
cd sharepoint-mcp

# Install with dev dependencies
uv sync --dev

# Run tests
uv run pytest

# Type checking
uv run mypy src

# Linting
uv run ruff check src

项目结构

sharepoint-mcp/
├── src/sharepoint_mcp/
│   ├── __init__.py           # Entry point
│   ├── server.py             # FastMCP server with all tools
│   ├── auth.py               # OAuth authentication
│   ├── graph.py              # Microsoft Graph API client
│   ├── config.py             # Configuration management
│   └── models/               # Pydantic models
│       ├── site.py
│       ├── file.py
│       └── list_item.py
├── tests/                    # Test suite
├── docs/                     # Documentation
└── pyproject.toml            # Project configuration

测试

# Run all tests
uv run pytest

# Run with coverage
uv run pytest --cov=sharepoint_mcp --cov-report=html

# Run specific test file
uv run pytest tests/test_server.py

故障排除

身份验证问题

问题:“缺少配置”错误

解决方案:确保您已设置 AZURE_CLIENT_ID 和 AZURE_TENANT_ID MCP配置中的环境变量。


问题:浏览器未打开进行身份验证

解决方案:服务器在端口8765上启动本地web服务器。确保此端口未被防火墙阻止。


问题:“身份验证超时”

解决方案:在2分钟内完成身份验证。如果错过了窗口,请重试该命令。

重认证

要清除存储的令牌并重新进行身份验证,请执行以下操作:

# macOS/Linux
python -c "import keyring; keyring.delete_password('sharepoint-mcp', 'YOUR_CLIENT_ID')"

# Or use the Python keyring CLI
keyring del sharepoint-mcp YOUR_CLIENT_ID

然后重新启动Claude Desktop并重试SharePoint命令。

权限错误

问题:“拒绝访问”或“权限不足”

解决方案:

  1. 验证Azure AD应用程序是否具有所需的权限
  2. 确保已授予管理员同意(如果您的组织要求)
  3. 检查您的Microsoft帐户是否可以访问SharePoint网站/文件

调试日志记录

通过设置启用调试日志记录 LOG_LEVEL=DEBUG 在MCP配置中:

{
  "mcpServers": {
    "sharepoint": {
      "command": "uvx",
      "args": ["sharepoint-mcp"],
      "env": {
        "AZURE_CLIENT_ID": "...",
        "AZURE_TENANT_ID": "...",
        "LOG_LEVEL": "DEBUG"
      }
    }
  }
}

在以下位置查看日志:

  • macOS: ~/Library/Logs/Claude/mcp-server-sharepoint.log
  • 视窗: %APPDATA%\Claude\Logs\mcp-server-sharepoint.log

局限性

  • 文件大小:下载限制为10MB(可在代码中配置)
  • 分页:列表操作每页最多返回200个项目(使用光标查看更多)
  • 搜索:使用Microsoft搜索,结果取决于索引
  • 速率限制:图形API有速率限制;客户端通过回退实现自动重试

安全

  • OAuth令牌 安全地存储在您的操作系统密钥链中(macOS密钥链、Windows凭据管理器、Linux密钥服务)
  • 无密码 仅存储临时OAuth令牌
  • 自动刷新 -访问令牌在过期前会自动刷新
  • 本地回叫服务器 -仅在身份验证期间运行,仅绑定到localhost

贡献

欢迎投稿!拜托:

  1. 复刻仓库
  2. 创建要素分支
  3. 添加新功能的测试
  4. 确保所有测试通过,类型检查成功
  5. 提交拉取请求

许可证

MIT许可证-请参阅 许可证 详情

支持

致谢

内置: