关于 OneDrive MCP Server
OneDrive MCP Server 是面向 AI Agent 的 Microsoft OneDrive 文件访问 MCP 服务,可搜索文件、浏览文件夹并获取文件和文件夹的网页链接。它通过 Microsoft Graph API 访问 OneDrive。
主要功能
- 01按名称搜索文件并筛选文件夹
- 02搜索和浏览文件夹结构
- 03列出指定文件夹内容
- 04获取文件和文件夹网页链接
适用场景
- 01在 OneDrive 中查找指定文件
- 02查看文件夹中的文件与子文件夹
- 03为文件或文件夹获取网页链接
MCP 相关
该服务向 MCP 客户端提供 OneDrive 文件搜索、文件夹搜索与内容列表等工具,并通过 Microsoft Graph API 访问账户数据。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
OneDrive MCP 服务
一个 Model Context Protocol(MCP)服务实现,可让 AI Agent 搜索和浏览 Microsoft OneDrive 中的文件和文件夹。基于 Spring Boot 和 Spring AI 构建。
功能
- 🔍 搜索 OneDrive 中的文件,并可按文件夹筛选
- 📁 搜索和浏览文件夹结构
- 🔗 获取文件和文件夹的直接网页 URL
- 🤖 与 MCP 兼容的接口,可集成 AI Agent
- 🔒 使用 Microsoft Graph API 安全访问
前置条件
- Java 21 或更高版本
- Maven 3.6+
- Docker(可选,用于容器化部署)
- Microsoft OneDrive 账户和访问令牌
获取 Microsoft OneDrive 访问令牌
可通过以下两种方式获取访问令牌:
选项 1:使用 Microsoft Graph Explorer(快速方法)
- 访问 Microsoft Graph Explorer
- 使用 Microsoft 账户登录
- 转到“Access token”标签页
- 确保已启用以下权限:
- Files.Read
- Files.Read.All
- 从令牌字段复制访问令牌
注意:此令牌是临时的,几小时后便会过期。它适合测试,但不建议用于生产环境。
选项 2:注册自己的应用程序(推荐用于生产环境)
-
在 Microsoft Azure 门户中注册应用程序:
- 点击“New Registration”
- 为应用程序命名
- 在“Supported account types”中,选择“Accounts in any organizational directory and personal Microsoft accounts”
- 在“Redirect URI”中,选择“Public client/native (mobile & desktop)”,并输入“https://login.microsoftonline.com/common/oauth2/nativeclient”
- 点击“Register”
-
记下已注册应用程序中的以下值:
- Application (client) ID
- Redirect URI
-
配置 API 权限:
- 转到“API Permissions”
- 点击“Add a permission”
- 选择“Microsoft Graph”
- 选择“Delegated permissions”
- 添加以下权限:
- Files.Read
- Files.Read.All
-
获取访问令牌:
- 在浏览器中访问此 URL(替换 YOUR_CLIENT_ID):
https://login.microsoftonline.com/common/oauth2/v2.0/authorize?client_id=YOUR_CLIENT_ID&scope=files.read&response_type=token&redirect_uri=https://login.microsoftonline.com/common/oauth2/nativeclient- 使用 Microsoft 账户登录
- 完成身份验证后,系统会将你重定向到包含访问令牌的 URL
- 从 URL 参数
access_token=中复制访问令牌值
此令牌有效期为数小时,需要定期刷新。用于生产环境时,请实现适当的 OAuth2 令牌刷新流程。
配置
- 设置 OneDrive 访问令牌:
应用程序需要通过 MICROSOFT_ONEDRIVE_ACCESS_TOKEN 环境变量提供访问令牌,该变量在 application.yaml 中引用:
onedrive:
access-token: ${MICROSOFT_ONEDRIVE_ACCESS_TOKEN}
- VS Code MCP 配置:
你可以在 VS Code 中使用本地 JAR 文件或 Docker 配置 MCP 服务。在 VS Code 工作区中创建或更新 .vscode/mcp.json:
选项 1:使用本地 JAR
{
"servers": {
"onedrive-mcpserver": {
"type": "stdio",
"command": "java",
"args": [
"-jar",
"~/onedrive-mcp-server/target/onedrive-mcp-server-0.0.1.jar"
],
"env": {
"MICROSOFT_ONEDRIVE_ACCESS_TOKEN": "<INSERT TOKEN HERE>"
}
}
}
}
选项 2:使用 Docker
{
"servers": {
"onedrive-mcpserver-docker": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"MICROSOFT_ONEDRIVE_ACCESS_TOKEN",
"karthik20/onedrive-mcp-server:0.0.1"
],
"env": {
"MICROSOFT_ONEDRIVE_ACCESS_TOKEN": "<INSERT TOKEN HERE>"
}
}
}
}
将 <INSERT TOKEN HERE> 替换为 Microsoft OneDrive 访问令牌。对于本地 JAR 选项,请确保更新 JAR 路径,使其与你的本地设置相符。
构建和运行
本地开发
- 构建项目:
mvn clean package
- 运行服务:
java -jar target/onedrive-mcp-server-0.0.1.jar
Docker 部署
- 构建 Docker 镜像:
mvn spring-boot:build-image
这会创建一个名为 karthik20/onedrive-mcp-server:0.0.1 的镜像。
- 运行容器:
docker run -p 8080:8080 -e ONEDRIVE_ACCESS_TOKEN=your-token karthik20/onedrive-mcp-server:0.0.1
使用 MCP 客户端进行测试
GitHub Copilot
- 在 VS Code 中安装 GitHub Copilot
- 配置 AI 设置以使用 MCP 服务:
{
"mcp.server.url": "http://localhost:8080"
}
Claude Desktop
- 打开 Claude Desktop 设置
- 添加 MCP 服务,URL 为:
http://localhost:8080 - 使用内置文件浏览器访问 OneDrive 文件
可用的 MCP 工具
1. 搜索文件
搜索 OneDrive 中的文件,并可按文件夹筛选:
public String searchFiles(String fileName, String folder)
2. 搜索文件夹
浏览和搜索文件夹结构:
public String searchFolderPath(String folderName)
3. 列出文件夹内容
列出指定文件夹路径下的所有文件和文件夹:
public String listFolderContents(String folderPath)
返回包含名称、网页 URL 和路径的文件及文件夹信息 JSON 数组。文件夹路径可以是嵌套路径,例如 Documents/Bills。
测试
运行测试套件:
mvn test
构建技术
- Spring Boot 3.4.4
- Spring AI 1.0.0-M7
- Microsoft Graph API
- JUnit 5 和 Mockito
许可证
本项目采用 MIT 许可证授权,详情请参阅 LICENSE 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。