OneDrive MCP服务器
模型上下文协议(MCP)服务器实现,使AI代理能够搜索和导航Microsoft OneDrive中的文件和文件夹。内置Spring Boot和Spring AI。
特性
- 🔍 使用可选文件夹筛选在OneDrive中搜索文件
- 📁 搜索和导航文件夹结构
- 🔗 获取指向文件和文件夹的直接web URL
- 🤖 用于AI代理集成的MCP兼容接口
- 🔒 使用Microsoft Graph API进行安全访问
先决条件
- Java 21或更高版本
- Maven 3.6+
- Docker(可选,用于容器化部署)
- Microsoft OneDrive帐户和访问令牌
获取Microsoft OneDrive访问令牌
您可以通过两种方式获得访问令牌:
选项1:使用Microsoft图形资源管理器(快速方法)
- 访问 Microsoft图形资源管理器
- 使用您的Microsoft帐户登录
- 转到“访问令牌”选项卡
- 确保您启用了以下权限:
- 文件夹。阅读 - 文件夹。读。全部
- 从令牌字段复制访问令牌
注意:此令牌是临时的,将在几个小时后过期。它适合测试,但不建议用于生产。
选项2:注册自己的应用程序(建议用于生产)
- 在 微软Azure门户:
- 点击“新注册” - 为您的应用程序命名 - 对于“支持的帐户类型”,选择“任何组织目录中的帐户和个人Microsoft帐户” - 对于“重定向URI”,选择“公共客户端/本地(移动和桌面)”,然后输入“https://login.microsoftonline.com/common/oauth2/nativeclient" - 点击“注册”
- 从您注册的应用程序中记下这些值:
- 应用程序(客户端)ID - 重定向URI
- 配置API权限:
- 转到“API权限” - 点击“添加权限” - 选择“Microsoft Graph” - 选择“委派权限” - 添加以下权限: - 文件夹。阅读 - 文件夹。读。全部
- 获取您的访问令牌:
- 在浏览器中访问此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代码MCP配置:
您可以使用本地JAR文件或Docker在VS Code中配置MCP服务器。创建或更新 .vscode/mcp.json 在VS Code工作区中:
选项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": ""
}
}
}
}选项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": ""
}
}
}
}替换 `` 使用您的Microsoft OneDrive访问令牌。对于本地JAR选项,请确保更新JAR路径以匹配您的本地设置。
建立和运行
地方发展
- 构建项目:
mvn clean package- 运行服务器:
java -jar target/onedrive-mcp-server-0.0.1.jarDocker部署
- 构建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代码中安装GitHub Copilot
- 配置您的AI设置以使用MCP服务器:
{
"mcp.server.url": "http://localhost:8080"
}克劳德桌面
- 打开克劳德桌面设置
- 使用URL添加新的MCP服务器:
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)返回文件和文件夹信息的JSON数组,包括名称、web URL和路径。文件夹路径可以像“文档/账单”一样嵌套。
测试
运行测试套件:
mvn test构建于
- 弹簧靴3.4.4
- 春季AI 1.0.0-M7
- Microsoft Graph API
- JUnit5和Mockito
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。
