本项目是一个模型上下文协议 (MCP) 服务器实现,可在 Microsoft 365 环境中进行高级文件搜索。它能高效实现文件发现、元数据分析,还可与业务流程集成,为用户提供来自 SharePoint/OneDrive 的内容。
若要将服务器与 Claude Desktop 集成,请更新 claude_desktop_config.json
:
"mcpServers": {
"M365 File Search (SharePoint/OneDrive)": {
"command": "uv",
"args": [
"--directory",
"full_path_to_parent_directory",
"run",
".\\src\\mcp_m365_filesearch\\server.py"
],
"env": {
"CLIENT_ID": "MSGraph 客户端 ID",
"CLIENT_SECRET": "MS Graph 客户端密钥",
"TENANT_ID": "租户 ID",
"REGION": "搜索区域"
}
}
}
要使用此服务器,您需要在 Azure 门户 中注册一个应用程序:
Sites.Read.All
Files.Read.All
确保这些值在 MCP 服务器的环境配置中正确设置。
该服务器提供两个核心工具,以下是它们的使用示例:
search_m365_files
# 在 Microsoft 365 环境中执行文件搜索
# 输入:query (字符串):搜索词或条件
# 返回:文件元数据对象数组。元数据包括文件内容摘要、*驱动器 ID* 和 *文件 ID* 等详细信息
result = search_m365_files(query="example_query")
get_file_content
# 检索特定文件的内容
# 输入:
# - driveid (字符串):父驱动器的唯一标识符。
# - fileid (字符串):文件的唯一标识符。
# 返回:作为二进制流的文件内容
# 注意:使用本地缓存来加速重复访问
content = get_file_content(driveid="example_driveid", fileid="example_fileid")
# 结合两个工具,先搜索文件,再获取文件内容
search_result = search_m365_files(query="example_query")
for file in search_result:
driveid = file["driveid"]
fileid = file["fileid"]
content = get_file_content(driveid=driveid, fileid=fileid)
# 对文件内容进行进一步处理
该服务器提供两个核心工具:
为了提高性能并减少冗余 API 调用,服务器在本地缓存下载的文件。缓存文件存储在项目根目录下的 ./src/mcp_m365_filesearch/.local/downloads
目录中(相对路径)。当通过 get_file_content
请求文件时,服务器首先检查缓存,如果文件已缓存,则直接从磁盘返回而无需新的 API 调用。
要将服务器与 Claude Desktop 集成,请更新 claude_desktop_config.json
,配置相关的命令、参数和环境变量。
此项目根据 MIT License 发布。您可以在自由地使用、修改和分发该项目,只需添加适当的引用即可。