mcpField
S
Sharepoint Mcp

Sharepoint Mcp

本地服务
github.com文件与存储1232 周前更新

关于 Sharepoint Mcp

Sharepoint Mcp 是连接 AI Agent 与 Microsoft SharePoint 的 MCP 服务,支持文件夹和文档操作、内容提取、搜索及元数据管理,并可使用 Office365 REST 或 Microsoft Graph。

主要功能

  1. 01读取并解析 PDF、Word、Excel 和文本文件
  2. 02列出、创建和删除文件夹
  3. 03上传、下载、更新和删除文档
  4. 04使用 SharePoint KQL 搜索
  5. 05读取和更新文件元数据
  6. 06支持 stdio 和 HTTP 传输

适用场景

  1. 01总结 SharePoint 中的文档
  2. 02翻译提案并保存结果
  3. 03查找 SharePoint 文件夹中的文件
  4. 04通过 AI Agent 管理 SharePoint 文档

MCP 相关

向 MCP 客户端提供 SharePoint 文件夹、文档、搜索和元数据工具,支持 stdio 与 HTTP 传输。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"sharepoint": {
"command": "uvx",
"args": [
"sharepoint-mcp"
],
"env": {
"SHP_ID_APP": "<SHP_ID_APP>",
"SHP_ID_APP_SECRET": "<SHP_ID_APP_SECRET>",
"SHP_TENANT_ID": "<SHP_TENANT_ID>",
"SHP_SITE_URL": "<SHP_SITE_URL>",
"SHP_DOC_LIBRARY": "<SHP_DOC_LIBRARY>"
}
}
}
}
启动命令uvx sharepoint-mcp
需要配置的环境变量
SHP_ID_APPAzure AD application (client) ID
SHP_ID_APP_SECRET密钥Azure AD client secret
SHP_TENANT_IDMicrosoft Entra (Azure AD) tenant ID
SHP_SITE_URLSharePoint site URL (e.g. https://tenant.sharepoint.com/sites/MySite)
SHP_DOC_LIBRARYSharePoint document library path

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypisharepoint-mcp1.1.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

🗂️ sharepoint-mcp

为你的 AI Agent 提供 Microsoft SharePoint 知识能力的 MCP 服务

CI PyPI version Python License: MIT Docker MCP

一款适用于生产环境的 Microsoft SharePoint 模型上下文协议(MCP)服务。
将 Claude Desktop、VS Code Copilot、Cursor、Continue 或任何兼容 MCP 的 AI Agent
连接到你的 SharePoint,读取文件、管理文件夹,并基于组织知识进行推理。

📚 文档 · 🗺️ 路线图 · 🐛 问题反馈 · 💡 功能建议


📑 目录


🧠 为什么选择 sharepoint-mcp?

大多数 AI Agent 只了解训练数据中的内容。
sharepoint-mcp 让你的 Agent 实时访问 组织中的真实知识。

没有 sharepoint-mcp使用 sharepoint-mcp
🤷 Agent 猜测或产生幻觉Agent 读取实际文档
📋 你手动复制粘贴内容Agent 自动获取文件
🔒 知识被锁在 SharePoint 中知识融入你的 AI 工作流
🐌 回答静态且只能生成一次Agent 进行推理、改写并保存结果

🚀 你的 Agent 能做什么

📖 理解任何文档
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
✏️ 读取 → 推理 → 写入
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")
📊 支持的文件格式
📄 格式🤖 Agent 获取的内容
PDF每一页的完整文本
Word .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/远程端
🪵结构化日志生产环境使用 JSON · 开发环境使用彩色控制台输出
🐳支持 Docker一条命令即可运行:docker compose up -d
🛡️非 Root 容器在 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

🐳 Docker

远程或云端部署最快捷的方式。

📋 使用场景
场景 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

执行效果: 从 DockerHub 拉取 ravikant1918/sharepoint-mcp:latest,并自动检测架构(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 环境变量
变量默认值描述
TRANSPORThttpstdio 或 http
HTTP_HOST0.0.0.0绑定地址
HTTP_PORT8000端口
LOG_FORMATjsonjson 或 console

🔌 传输模式

模式适用场景设置方式
stdioClaude Desktop、Cursor、MCP InspectorTRANSPORT=stdio (默认)
httpDocker、远程 Agent、VS Code Copilot、REST 客户端TRANSPORT=http

🔗 集成

🤖 Claude Desktop

添加到 ~/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 Code Copilot(Agent 模式)
  1. 通过 Docker 或 TRANSPORT=http sharepoint-mcp 启动服务
  2. 在工作区中创建 .vscode/mcp.json:
{
  "servers": {
    "sharepoint": {
      "url": "http://localhost:8000/mcp/",
      "type": "http"
    }
  }
}
  1. 打开 Copilot Chat → 切换到 Agent 模式 → 即可使用 14 个 SharePoint 工具。

⚠️ 末尾的斜杠很重要——URL 必须以 /mcp/ 结尾(不能是 /mcp)。

⌨️ Cursor / Continue

添加到 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/文本)
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_TYPEoffice365office365、graph 或 graphql
SHP_LIBRARY_NAMEShared Documents库名称(仅限 Office365 REST;Graph 会自动检测)
SHP_DOC_LIBRARY(empty = full library)子文件夹范围(例如 mcp_server)。留空表示整个库
SHP_MAX_DEPTH15最大树深度
SHP_MAX_FOLDERS_PER_LEVEL100每批文件夹数
SHP_LEVEL_DELAY0.5树层级之间的延迟(秒)
TRANSPORTstdiostdio 或 http
HTTP_HOST0.0.0.0HTTP 绑定主机
HTTP_PORT8000HTTP 端口
LOG_LEVELINFODEBUG INFO WARNING ERROR
LOG_FORMATconsoleconsole 或 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 传输)

问题: Agent 无法连接到 MCP 服务
解决方案:

  1. 确保服务正在运行:curl http://localhost:8000/mcp/
  2. 检查 URL 是否以 /mcp/ 结尾(必须带末尾斜杠)
  3. 确认端口未被防火墙阻止
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
权限错误

问题: SharePoint 返回 Access denied
解决方案:

  1. 验证 Azure AD 应用具有所需的 API 权限
  2. 确保已授予管理员同意(如果组织要求)
  3. 确认 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 和我们的行为准则。

  1. 🍴 Fork 此仓库
  2. 🌿 创建分支:git checkout -b feat/my-tool
  3. ✅ 添加测试:make test
  4. 📬 发起拉取请求

🔒 安全

发现漏洞?请不要公开提交 issue。
请通过 GitHub Security Advisories 私下报告,或参阅 SECURITY.md。


MIT 许可证 © 2026 Ravi Kant

⭐ 如果此项目对你有帮助,请在 GitHub 上为它点星!

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。