项目简介
'mcp-server-opendal' 是一个 Model Context Protocol (MCP) 服务器,它利用 Apache OpenDAL™ 库,为大型语言模型 (LLM) 客户端提供统一的方式来访问和管理多种存储服务中的文件资源。通过简单的配置,即可连接到包括 S3、Azure Blob Storage、Google Cloud Storage 等在内的多种云存储服务,以及本地文件系统。
主要功能点
- 统一存储访问: 通过 MCP 协议,LLM 客户端可以使用标准化的 URI 格式 ('scheme://path/to/resource') 访问不同存储服务中的文件,无需关心底层存储服务的具体实现细节。
- 多种存储服务支持: 基于 Apache OpenDAL™,支持广泛的存储服务,包括但不限于:
- 本地文件系统 (fs)
- Amazon S3 (s3)
- Azure Blob Storage (azblob)
- Google Cloud Storage (gcs)
- 以及更多 OpenDAL 支持的服务。
- 文件操作: 提供以下核心文件操作功能:
- 文件列表 (list): 列出指定目录下的文件和子目录。
- 文件读取 (read): 读取文件内容,支持自动检测文本和二进制文件,并返回 Base64 编码的二进制内容。
- 文件信息 (get_info): 获取文件的元数据信息,如大小和类型。
- 环境配置: 通过环境变量灵活配置各种存储服务,方便快捷。
- 多种传输协议支持: 支持 Stdio 和 SSE 两种传输协议,可以根据客户端需求选择合适的协议。
安装步骤
-
确保已安装 Python 3.8 或更高版本。
-
使用 pip 安装 'mcp-server-opendal':
pip install mcp-server-opendal
服务器配置
MCP 服务器需要配置启动命令 (command) 及其参数 (args) 才能被 MCP 客户端连接。以下是 'mcp-server-opendal' 服务器的配置信息,请根据您的需求进行选择:
{ "server_name": "opendal-mcp-server", "command": "mcp-server-opendal", "args": [ "--transport", "stdio" ], "注释": "使用 stdio 传输协议启动 MCP 服务器。stdio 适用于本地或命令行环境。", "server_name": "opendal-mcp-server", "command": "mcp-server-opendal", "args": [ "--transport", "sse" ], "注释": "使用 SSE (Server-Sent Events) 传输协议启动 MCP 服务器。SSE 适用于 Web 应用或需要服务器推送的场景。" }
环境变量配置 (存储服务):
'mcp-server-opendal' 通过环境变量来配置存储服务连接。每个存储服务需要一个前缀和特定的配置选项。
例如,要配置一个别名为 "mys3" 的 S3 服务,您需要设置以下环境变量:
OPENDAL_MYS3_TYPE=s3 # 存储服务类型为 S3 OPENDAL_MYS3_BUCKET=your-bucket-name # S3 存储桶名称 OPENDAL_MYS3_REGION=your-region # S3 区域 # 以下为可选配置,根据您的 S3 服务配置可能需要设置 # OPENDAL_MYS3_ENDPOINT=your-s3-endpoint # S3 端点 (例如,使用 MinIO 时) # OPENDAL_MYS3_ACCESS_KEY_ID=your-access-key # S3 访问密钥 ID # OPENDAL_MYS3_SECRET_ACCESS_KEY=your-secret-key # S3 秘密访问密钥
您可以配置多个存储服务,只需使用不同的前缀,例如 "myfs" 代表本地文件系统,"myazblob" 代表 Azure Blob Storage 等。
支持的存储服务类型 (OPENDAL_TYPE):
请参考 Apache OpenDAL™ 文档 查看支持的存储服务类型和对应的配置选项。常用的类型包括:
- 'fs' (本地文件系统)
- 's3' (Amazon S3)
- 'azblob' (Azure Blob Storage)
- 'gcs' (Google Cloud Storage)
- ...
基本使用方法
-
启动 MCP 服务器: 根据上面提供的配置信息,使用命令行启动 'mcp-server-opendal' 服务器,并确保已设置好相应的存储服务环境变量。例如,使用 stdio 传输协议:
mcp-server-opendal --transport stdio -
在 MCP 客户端中使用: 在您的 MCP 客户端应用中,配置连接到 'mcp-server-opendal' 服务器。您可以使用 'list', 'read', 'get_info' 等工具来访问和操作配置的存储服务中的文件。
例如,使用 'list' 工具列出 "mys3" 存储服务根目录下的文件:
list("mys3://")使用 'read' 工具读取 "myfs" 存储服务中 "/path/to/data.txt" 文件的内容:
read("myfs:///path/to/data.txt")使用 'get_info' 工具获取 "mys3" 存储服务中 "/images/logo.png" 文件的元数据:
get_info("mys3:///images/logo.png")请注意,URI 中的路径部分需要进行 URL 编码,例如空格需要编码为 '%20'。
提示:
- 您可以使用 '.env' 文件来管理环境变量,'mcp-server-opendal' 会自动加载 '.env' 文件中的环境变量。
- 详细的 API 使用方法和更多工具可以参考 Model Context Protocol (MCP) 文档。
信息
分类
数据库与文件