mcp-s3
使用说明
- 项目简介
- mcp-s3 是一个完整的 MCP 服务器实现,旨在把 S3 兼容对象存储暴露给基于 MCP 协议的 AI 助手/LLM 客户端。它实现了对存储资源(桶、对象)的数据访问能力,以及对 S3 相关工具(列桶、列对象、获取对象、上传/删除/复制对象、生成预签URL 等)的注册和执行能力。服务器通过 MCP 的 JSON-RPC 机制与客户端通信,封装了会话管理、连接配置、拦截与中间件机制,便于在企业场景中以安全、可扩展的方式提供上下文服务。
- 主要功能点
- MCP 服务器核心:创建并运行 MCP 服务器,支持将工具注册到服务器并通过 MCP 客户端进行调用。
- 资源与工具托管:实现对 S3 资源(桶、对象)的读取、列举、获取元数据、上传、删除、复制、生成预签 URL 等功能。
- 多连接/多账户支持:通过多连接管理器(multiserver)实现对多账户/区域的统一访问。
- 安全与扩展性:自带只读模式、大小限制、前缀 ACL、审计与日志中间件等扩展能力,支持中间件、拦截器、变换器等插件式扩展。
- 支持 MCP 传输协议:内置 stdio 传输,便于融入现有开发环境,也可通过其他传输实现与客户端通信。
- 安装步骤
- 获取源码并编译
- 直接从仓库克隆并构建即可(参考仓库提供的 Makefile 与 Go 模块管理)。亦可通过 go install 安装可执行二进制。
- 运行方式
- 直接运行 mcp-s3 的可执行文件:通过环境变量配置 S3 连接参数(如 AWS 区域、访问密钥、端点等),或使用多连接配置进行初始化。
- 支持通过 StdioTransport、WebSocket、Server-Sent Events 等传输方式,与 MCP 客户端进行通信。
- 获取源码并编译
- 服务器配置(JSON 配置示例,含 server name、command、args 等注释)
- serverName: 指定 MCP 服务器在客户端中的名称(如 s3)。
- command: 启动服务器的命令名,示例中为 mcp-s3。
- args: 启动命令的参数列表,按实际需求填写。若无额外参数,可留空。
- 备注:客户端连接 MCP 服务器时,通常只需要在客户端配置中指定服务器的启动命令及参数,服务器端的配置会在运行时生效,MCP 客户端本身不需要了解服务器内部实现细节。 JSON 参考格式(纯文本描述,不包含代码块): { "serverName": "s3", "command": "mcp-s3", "args": [] } 说明:
- serverName 指定对外唯一标识的服务器名称,便于客户端在多服务器场景中进行区分和路由。
- command 为服务器的启动命令名,通常与仓库中的可执行文件名称保持一致。
- args 为启动参数数组,若无特定参数可为空,若有环境变量覆盖或调试参数,请按实际需要填写。
- 基本使用方法
- 启动服务器:以运行环境为准,执行服务器二进制,确保环境变量(如 AWS 认证、S3 端点、区域等)正确配置。
- 客户端接入:将服务器启动命令及配置提供给 MCP 客户端。客户端通过 MCP 协议的 JSON-RPC 请求读取资源、调用工具、获取 Prompts 等,以统一的接口进行交互。
- 常用扩展:可通过中间件、拦截器、分析/变换器等插件对工具执行过程进行自定义处理(如日志、审计、前后置处理等)。