这是一个基于模型上下文协议(MCP)的服务器实现,使AI代理能够在Microsoft OneDrive中搜索和导航文件及文件夹。该服务器使用Spring Boot和Spring AI构建。
您可以通过两种方式获取访问令牌:
注意:此令牌是临时的,将在几小时后过期。适合测试但不推荐用于生产环境。
在Microsoft Azure门户中注册您的应用:
记下您注册的应用程序中的这些值:
配置API权限:
获取您的访问令牌:
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
access_token=中复制访问令牌值此令牌有效期为数小时,需要定期刷新。对于生产用途,请实现适当的OAuth2令牌刷新流程。
应用程序期望通过环境变量MICROSOFT_ONEDRIVE_ACCESS_TOKEN提供访问令牌,该变量在application.yaml中引用:
onedrive:
access-token: ${MICROSOFT_ONEDRIVE_ACCESS_TOKEN}
您可以在VS Code中使用本地JAR文件或Docker来配置MCP服务器。创建或更新您的VS Code工作区中的.vscode/mcp.json:
{
"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>"
}
}
}
}
{
"servers": {
"onedrive-mcpserver-docker": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e",
"MICROSOFT_ONEDRIVE_ACCESS_TOKEN",
"karthik2_20/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
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.server.url": "http://localhost:8080"
}
http://localhost:8080在OneDrive中搜索文件,可选文件夹过滤:
public String searchFiles(String fileName, String folder)
导航和搜索文件夹结构:
public String searchFolderPath(String folderName)
列出特定文件夹路径下的所有文件和文件夹:
public String listFolderContents(String folderPath)
返回一个包含文件和文件夹信息的JSON数组,包括名称、Web URL和路径。文件夹路径可以嵌套如'Documents/Bills'。
运行测试套件:
mvn test
本项目采用MIT许可证 - 查看LICENSE文件了解详情。