使用说明
🗂️ sharepoint mcp
MCP服务器为您的AI代理提供了Microsoft SharePoint的大脑
A生产级 模型上下文协议(MCP)服务器 为了 微软SharePoint.
连接 克劳德桌面版, VS代码副本, 光标, 继续,或任何与MCP兼容的AI代理
访问您的SharePoint——读取文件、管理文件夹,并对组织的知识进行推理。
📑 目录
- 为什么选择sharepoint mcp?
- 你的代理人能做什么
- 特性
- 快速入门
- 码头工人
- 运输方式
- 集成 --克劳德桌面·VS代码复制品·光标
- 全部14个工具
- 配置参考
- 局限性
- 故障排除
- 发展
- 文档
- 贡献
- 安全
🧠 为什么选择sharepoint mcp?
大多数AI代理只知道他们的训练数据中有什么。
sharepoint mcp 给你的代理人 实时访问 根据您组织的实际情况。
| 没有sharepoint mcp | 有sharepoint mcp |
|---|---|
| 🤷 特工猜测或产生幻觉 | 特工读取实际文件 |
| 📋 您手动复制粘贴内容 | 代理自动获取文件 |
| 🔒 知识锁定在SharePoint中 | 知识流入您的AI工作流程 |
| 🐌 静态、一次性回答 | 代理原因、重写并保存 |
🚀 你的代理人能做什么
📖 理解任何文档
You: "Summarise the Q3 report in the Finance folder"
Agent: → Get_Document_Content("Finance", "Q3_Report.pdf")
→ Reads full extracted text
→ Returns a sharp, accurate summary
✏️ Read → 理由→ Write
You: "Translate the proposal to French and save it"
Agent: → Get_Document_Content → translate → Upload_Document
🗂️ 浏览您的库
You: "What files are in the Legal/Contracts folder?"
Agent: → List_SharePoint_Documents("Legal/Contracts")
📊 支持的文件格式
| 📄 格式 | 🤖 代理人得到什么 |
|---|---|
| 每页的全文 | |
字 .docx .doc |
完整的文档内容 |
Excel .xlsx .xls |
所有工作表均为结构化文本 |
| 文本、JSON、Markdown、HTML、YAML、Python | 原始内容原样 |
| 图像、ZIP、二进制文件 | 文件类型+Base64 |
✨ 特性
| 功能 | 描述 | |
|---|---|---|
| 🔀 | 双重API支持 | 选择Office365 REST或Microsoft Graph API |
| 📁 | 文件夹管理 | 列出、创建、删除、获取完整的递归树 |
| 📄 | 文档管理 | 上传、下载、更新、删除、搜索、阅读内容 |
| 🏷️ | 元数据管理 | 读取并更新SharePoint列表项字段 |
| 🔍 | 智能解析 | 自动检测PDF/Word/Excel/文本 |
| 🔎 | KQL搜索 | 语义文件查找的本地SharePoint KQL搜索 |
| 📂 | 灵活的库范围 | 作用域到子文件夹或访问整个库根目录 |
| 🔁 | 自动重试 | SharePoint 429/503节流的指数回退 |
| 🚀 | 双重运输 | stdio 用于桌面· http 适用于Docker/remote |
| 🪵 | 结构化日志记录 | JSON在生产中·彩色控制台在开发中 |
| 🐳 | Docker就绪 | 单一命令: docker compose up -d |
| 🛡️ | 非根容器 | 在Docker中以无特权用户身份运行 |
| 🩺 | 健康检查 | 现场直播 /health 具有真实SharePoint检查的端点 |
| 🤖 | CI/CD | 在Python 3.10·3.11·3.12·3.13上测试 |
⚡ 快速入门
1.️⃣ 安装
pip install sharepoint-mcp
或来源:
git clone https://github.com/ravikant1918/sharepoint-mcp.git
cd sharepoint-mcp && pip install -e .
2.️⃣ 配置
cp .env.example .env
# Open .env and fill in your Azure AD credentials
SHP_ID_APP=your-azure-app-client-id
SHP_ID_APP_SECRET=your-azure-app-secret
SHP_TENANT_ID=your-tenant-id
SHP_SITE_URL=https://your-tenant.sharepoint.com/sites/your-site
SHP_API_TYPE=office365 # or "graph" / "graphql" for Microsoft Graph API
🔑 Azure AD新手? 跟随 分步指南→
🔀 选择您的API:SharePoint MCP同时支持这两种功能 Office365 REST API (默认)和 Microsoft Graph API。参见 API配置指南→
可选:范围到子文件夹
默认情况下,服务器访问您的 整个文档库根。要将操作限制到特定子文件夹,请执行以下操作:
# Only operate within this subfolder (omit for full library access)
SHP_DOC_LIBRARY=mcp_server
# Library name (only needed if your org renamed "Shared Documents")
# Graph API auto-detects the default drive — this is only for Office365 REST API
# SHP_LIBRARY_NAME=Shared Documents
3.️⃣ 跑
# 🔍 Interactive testing with MCP Inspector
npx @modelcontextprotocol/inspector -- sharepoint-mcp
# ▶️ Run directly
sharepoint-mcp
🐳 码头工人
部署远程或云使用的最快方法。
📋 使用场景
场景A:从DockerHub中提取最新版本(推荐)
将此用于最新稳定版本的生产部署:
# Step 1: Clone repository
git clone https://github.com/ravikant1918/sharepoint-mcp.git
cd sharepoint-mcp
# Step 2: Create .env file with your SharePoint credentials
cp .env.example .env
# Edit .env and fill in:
# SHP_ID_APP=your-app-id
# SHP_ID_APP_SECRET=your-secret
# SHP_TENANT_ID=your-tenant-id
# SHP_SITE_URL=https://yourcompany.sharepoint.com/sites/yoursite
# Step 3: Start container (pulls from DockerHub automatically)
docker compose up -d
# Step 4: Verify it's running
docker compose ps
curl http://localhost:8000/health
# View logs
docker compose logs -f
# Stop container
docker compose down
发生了什么: 拉 ravikant1918/sharepoint-mcp:latest 来自DockerHub的自动架构检测(Intel/ARM)。
场景B:使用特定版本
锁定到特定版本以进行稳定性或测试:
# Step 1: Set version via environment variable
SHAREPOINT_MCP_VERSION=v1.0.1 docker compose up -d
# Or add to .env file
echo "SHAREPOINT_MCP_VERSION=v1.0.1" >> .env
docker compose up -d
发生了什么: 拉 ravikant1918/sharepoint-mcp:v1.0.1 而不是 latest.
场景C:从源代码本地构建
将其用于开发或进行本地代码更改时:
# Step 1: Clone and setup
git clone https://github.com/ravikant1918/sharepoint-mcp.git
cd sharepoint-mcp
cp .env.example .env
# Edit .env with your credentials
# Step 2: Build from local Dockerfile and start
docker compose up -d --build
# Step 3: Rebuild after code changes
docker compose down
docker compose up -d --build
发生了什么: 从本地构建图像 Dockerfile,标签为 ravikant1918/sharepoint-mcp:latest,并启动容器。
场景D:使用自定义图像/分叉
如果你已经分叉了仓库并发布到你自己的DockerHub:
# Use your custom image
SHAREPOINT_MCP_IMAGE=myusername/sharepoint-mcp \
SHAREPOINT_MCP_VERSION=dev \
docker compose up -d
# Or add to .env
echo "SHAREPOINT_MCP_IMAGE=myusername/sharepoint-mcp" >> .env
echo "SHAREPOINT_MCP_VERSION=dev" >> .env
docker compose up -d
发生了什么: 从您的自定义注册表/存储库中提取。
🔧 常用命令
# Start in detached mode
docker compose up -d
# Start with live logs
docker compose up
# View logs
docker compose logs -f
# Stop container
docker compose down
# Restart container
docker compose restart
# Pull latest image
docker compose pull
# Rebuild and restart
docker compose up -d --build
# Remove everything (including volumes)
docker compose down -v
使用Podman? 只需更换
docker随着podman--完全兼容。
Docker环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
TRANSPORT |
http |
stdio 或 http |
HTTP_HOST |
0.0.0.0 |
绑定地址 |
HTTP_PORT |
8000 |
港口 |
LOG_FORMAT |
json |
json 或 console |
🔌 运输方式
| 模式 | 最适合 | 设置 |
|---|---|---|
stdio |
Claude桌面、光标、MCP检查器 | TRANSPORT=stdio (默认) |
http |
Docker、远程代理、VS代码副本、REST客户端 | TRANSPORT=http |
🔗 集成
🤖 克劳德桌面版
添加 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"sharepoint": {
"command": "sharepoint-mcp",
"env": {
"SHP_ID_APP": "your-app-id",
"SHP_ID_APP_SECRET": "your-app-secret",
"SHP_SITE_URL": "https://your-tenant.sharepoint.com/sites/your-site",
"SHP_TENANT_ID": "your-tenant-id",
"SHP_DOC_LIBRARY": "my-subfolder"
}
}
}
}
💡 省略
SHP_DOC_LIBRARY访问完整的库根目录。如果您的组织使用Office365 REST API并重命名了默认库,请同时设置SHP_LIBRARY_NAME.
💻 VS代码副本(代理模式)
- 通过Docker启动服务器或
TRANSPORT=http sharepoint-mcp - 创建
.vscode/mcp.json在您的工作空间中:
{
"servers": {
"sharepoint": {
"url": "http://localhost:8000/mcp/",
"type": "http"
}
}
}
- 打开Copilot聊天→ 切换到 代理模式 → 您的14个SharePoint工具可用。
⚠️ 尾随斜线很重要 --URL必须以结尾
/mcp/(不是/mcp).
⌨️ 光标/继续
添加到MCP配置中(使用stdio传输):
{
"mcpServers": {
"sharepoint": {
"command": "sharepoint-mcp",
"env": {
"SHP_ID_APP": "your-app-id",
"SHP_ID_APP_SECRET": "your-app-secret",
"SHP_SITE_URL": "https://your-tenant.sharepoint.com/sites/your-site",
"SHP_TENANT_ID": "your-tenant-id"
}
}
}
}
🛠️ 全部14个工具
📁 文件夹管理
| 工具 | 它做什么 |
|---|---|
List_SharePoint_Folders |
📋 列出目录中的所有子文件夹 |
Get_SharePoint_Tree |
🌳 获取完整的递归文件夹+文件树 |
Create_Folder |
➕ 创建新文件夹 |
Delete_Folder |
🗑️ 删除空文件夹 |
📄 文档管理
| 工具 | 它做什么 |
|---|---|
List_SharePoint_Documents |
📋 列出所有包含元数据的文件 |
Search_SharePoint |
🔎 使用KQL查询搜索文档 |
Get_Document_Content |
📖 读取并解析文件内容(PDF/Word/Excel/text) |
Upload_Document |
⬆️ 以字符串或Base64格式上传文件 |
Upload_Document_From_Path |
📂 直接上传本地文件 |
Update_Document |
✏️ 覆盖现有文件内容 |
Delete_Document |
🗑️ 永久删除文件 |
Download_Document |
⬇️ 将文件下载到本地文件系统 |
🏷️ 元数据管理
| 工具 | 它做什么 |
|---|---|
Get_File_Metadata |
🔍 获取所有SharePoint列表项字段 |
Update_File_Metadata |
✏️ 更新元数据字段 |
⚙️ 完整配置参考
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
SHP_ID_APP |
✅ | Azure AD应用程序客户端ID | |
SHP_ID_APP_SECRET |
✅ | Azure AD客户端机密 | |
SHP_TENANT_ID |
✅ | Microsoft租户ID | |
SHP_SITE_URL |
✅ | SharePoint网站URL | |
SHP_API_TYPE |
office365 |
office365, graph,或 graphql |
|
SHP_LIBRARY_NAME |
Shared Documents |
库名称(仅限Office365 REST;图形自动检测) | |
SHP_DOC_LIBRARY |
(空=库满) | 子文件夹范围(例如。 mcp_server).空=整个库 |
|
SHP_MAX_DEPTH |
15 |
最大树深 | |
SHP_MAX_FOLDERS_PER_LEVEL |
100 |
每批文件夹 | |
SHP_LEVEL_DELAY |
0.5 |
树级别之间的延迟 | |
TRANSPORT |
stdio |
stdio 或 http |
|
HTTP_HOST |
0.0.0.0 |
HTTP绑定主机 | |
HTTP_PORT |
8000 |
HTTP端口 | |
LOG_LEVEL |
INFO |
DEBUG INFO WARNING ERROR |
|
LOG_FORMAT |
console |
console 或 json |
⚠️ 局限性
| 限制 | 详细信息 |
|---|---|
| 单点 | 每个服务器实例连接到一个SharePoint站点(计划在v2.0中连接多个站点) |
| 同步客户端 | 使用同步SharePoint REST API调用(计划用于v1.3的异步客户端) |
| 不共享 | 尚无法创建共享链接(计划用于v1.1) |
| 大文件 | 在内容提取过程中,非常大的文件可能会达到内存限制 |
| 费率限制 | SharePoint限制(429/503)通过自动重试处理,但持续的批量操作可能很慢 |
🔧 故障排除
身份验证错误
问题: Missing or invalid SharePoint credentials
解决方案: 验证是否设置了所有4个必需的环境变量:
echo $SHP_ID_APP $SHP_ID_APP_SECRET $SHP_TENANT_ID $SHP_SITE_URL
连接问题(HTTP传输)
问题: 代理无法连接到MCP服务器
解决方案:
- 确保服务器正在运行:
curl http://localhost:8000/mcp/ - 检查URL是否以结尾
/mcp/(需要尾部斜线) - 验证端口是否未被防火墙阻止
Docker容器不健康
问题: podman ps / docker ps 显示 (unhealthy)
解决方案: 检查容器日志是否有错误:
docker logs sharepoint-mcp
调试日志
通过设置启用详细输出 LOG_LEVEL=DEBUG:
LOG_LEVEL=DEBUG sharepoint-mcp
对于Docker,添加到您的 .env 文件或 docker-compose.yml:
LOG_LEVEL=DEBUG
LOG_FORMAT=console
权限错误
问题: Access denied 来自SharePoint
解决方案:
- 验证Azure AD应用程序是否具有所需的API权限
- 确保已获得管理员同意(如果您的组织要求)
- 确认
SHP_SITE_URL指向您的应用程序可以访问的网站
🧪 发展
git clone https://github.com/ravikant1918/sharepoint-mcp.git
cd sharepoint-mcp
pip install -e ".[dev]"
make test # run all tests
make inspect # 🔍 launch MCP Inspector
make check # quick import sanity check
make clean # 🧹 remove caches
📚 文档
| 📄 文件 | 📝 说明 |
|---|---|
| ⚡ 入门指南 | 完整设置指南 |
| ⚙️ 配置 | 所有环境变量 |
| 🛠️ 工具参考 | 详细的工具参数 |
| 🏛️ 建筑 | 设计和层次图 |
| 🔑 Azure安装程序 | Azure AD应用程序注册指南 |
| 🗺️ 路线图 | 计划功能 |
| 📅 更新日志 | 版本历史 |
🤝 贡献
欢迎投稿!请阅读 docs/contributing.md 和我们的 行为准则.
- 🍴 分叉回购
- 🌿 创建分支:
git checkout -b feat/my-tool - ✅ 添加测试:
make test - 📬 打开拉取请求
🔒 安全
发现漏洞?请 不要 公开问题。
通过以下方式私下报告 GitHub安全公告 或查看 安全.md.
麻省理工学院许可证©2026 拉维·康特
⭐ 如果这个项目对你有帮助,请在GitHub上加星!