使用说明
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列表 |
快速开始
先决条件
-
Python 3.11+ 和 紫外线 包管理器
# Install uv if you don't have it curl -LsSf https://astral.sh/uv/install.sh | sh -
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
首次运行
- 打开Claude Desktop并询问:“列出我的SharePoint网站”
- 浏览器窗口将自动打开
- 使用您的Microsoft帐户登录
- 授予请求的权限
- 回到克劳德身边——你已经通过认证了!
令牌安全地存储在您的操作系统密钥链中,并自动刷新。
配置
环境变量
| 变量 | 必填 | 描述 |
|---|---|---|
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"
助理将:
- 呼叫
list_sites搜索=“营销” - 呼叫
list_libraries对于该网站 - 呼叫
list_files对于文档库 - 显示文件列表
搜索文档
"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'"
助理将:
- 查找网站和库
- 呼叫
upload_file随着内容 - 确认上传
创建共享链接
"Create a view-only link for the budget.xlsx file that expires in 7 days"
助理将:
- 搜索或浏览文件
- 呼叫
create_sharing_linklink_type=“view”,expiration_days=7 - 返回可共享的URL
Azure AD应用程序安装
您需要在Azure AD中注册一个应用程序才能使用此MCP服务器。请参阅详细指南: docs/azure setup.md
快速摘要:
- 首选 Azure门户 → Azure Active Directory→ 应用程序注册
- 创建新注册:
- 名称:“SharePoint MCP服务器”
- 支持的帐户类型:“仅此组织目录中的帐户”
- 重定向URI:Web→
http://localhost:8765/callback
- 添加API权限:
- 微软图形→ 委托权限:
Sites.Read.AllFiles.ReadWrite.AllUser.Readoffline_access
- 授予管理员同意(如果需要)
- 微软图形→ 委托权限:
- 认证→ 启用“允许公共客户端流”
- 复制配置的客户端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命令。
权限错误
问题:“拒绝访问”或“权限不足”
解决方案:
- 验证Azure AD应用程序是否具有所需的权限
- 确保已授予管理员同意(如果您的组织要求)
- 检查您的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
贡献
欢迎投稿!拜托:
- 复刻仓库
- 创建要素分支
- 添加新功能的测试
- 确保所有测试通过,类型检查成功
- 提交拉取请求
许可证
MIT许可证-请参阅 许可证 详情
支持
致谢
内置:
- MCP Python SDK -FastMCP框架
- 铝合金迷你气缸 -Microsoft身份验证库
- httpx -异步HTTP客户端
- 派丹蒂克 -数据验证