S3 MCP 服务器
提供与 S3 存储桶和对象交互的工具的 Amazon S3 模型上下文协议 (MCP) 服务器。
https://github.com/user-attachments/assets/d05ff0f1-e2bf-43b9-8d0c-82605abfb666
概述
此 MCP 服务器允许 Claude 等大型语言模型 (LLM) 与 AWS S3 存储进行交互。它提供以下工具:
- 列出可用的 S3 存储桶
- 列出存储桶内的对象
- 检索对象内容
该服务器使用 TypeScript 和 MCP SDK 构建,为 LLM 与 S3 接口提供了一种安全且标准化的方式。
安装
先决条件
- Node.js 18 或更高版本
- npm 或 yarn
- 配置 AWS 凭证(通过环境变量或 AWS 凭证文件)
- Docker(可选,用于容器化设置)
设置
- 通过 npm 安装:
- 如果从源代码构建:
- 配置 AWS 凭证和 S3 访问:
使用您的 AWS 配置创建一个.env
文件:
或者将这些设置为环境变量。
配置
可以使用以下环境变量配置服务器:
多变的 | 描述 | 默认 |
---|---|---|
AWS_REGION | 您的 S3 存储桶所在的 AWS 区域 | us-east-1 |
S3_BUCKETS | 允许的 S3 存储桶名称的逗号分隔列表 | (空的) |
S3_MAX_BUCKETS | 列表中返回的最大存储桶数量 | 5 |
AWS_ACCESS_KEY_ID | AWS 访问密钥(如果不使用默认凭证) | (来自 AWS 配置) |
AWS_SECRET_ACCESS_KEY | AWS 密钥(如果不使用默认凭证) | (来自 AWS 配置) |
运行服务器
直接执行 Node.js
您可以直接使用 Node.js 运行服务器:
Docker 设置🐳
您可以使用 Docker CLI 或 Docker Compose 将 S3 MCP 服务器作为 Docker 容器运行。
使用 Docker CLI
- 构建 Docker 镜像:
- 使用环境变量运行容器:
- 检查容器日志:
- 停止并删除容器:
请注意,该容器不会公开任何端口,因为它设计为通过 Docker exec 而不是直接 HTTP 连接与 Claude Desktop 一起使用。
使用 Docker Compose
- 构建并启动 Docker 容器:
- 要停止容器:
使用 Docker 和 MinIO 进行测试
Docker Compose 设置包含用于本地测试的 MinIO 服务:
MinIO 服务会自动创建两个测试 bucket( test-bucket-1
和test-bucket-2
)并上传测试用的示例文件。
在 MCP Inspector 上调试
要使用 MCP Inspector 调试服务器:
当使用--docker-compose
选项时,脚本将:
- 如果 MinIO 和 S3 MCP 服务器容器未运行,请启动它们
- 启动连接到 S3 MCP 服务器的 MCP 检查器
- 然后,您可以针对本地 MinIO 实例测试 S3 工具
连接到 Claude Desktop
要将此服务器与 Claude Desktop 一起使用:
- 编辑您的 Claude Desktop 配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
- 将 S3 MCP 服务器添加到配置中:
Claude Desktop 的 Docker 选项🐳
您还可以配置 Claude Desktop 以使用正在运行的 Docker 容器作为 MCP 服务器:
⚠️ 重要先决条件:要使此 Docker 配置正常工作,您必须在启动 Claude Desktop之前先构建并运行 Docker 容器:
如果没有正在运行的容器,Claude Desktop 在尝试使用 S3 工具时将显示错误。
上述 Docker 配置使用
exec
将 MCP 请求直接发送到正在运行的容器。由于 Claude 直接与容器通信,而不是通过网络端口,因此无需进行端口映射。
注意:确保配置中的容器名称(
aws-s3-mcp-server
)与正在运行的容器的名称匹配。
重要提示:使用上述配置时请注意以下事项
- 将
AWS_ACCESS_KEY_ID
和AWS_SECRET_ACCESS_KEY
替换为您的实际凭证S3_BUCKETS
应包含您想要允许访问的存储桶的逗号分隔列表AWS_REGION
应设置为您的存储桶所在的区域
💣 如果 Claude Desktop 出现错误
如果在 Claude Desktop 中遇到上述配置错误,请尝试使用绝对路径,如下所示:
可用工具
列表桶
列出服务器有权访问的可用 S3 存储桶。此工具遵循S3_BUCKETS
配置,该配置限制显示哪些存储桶。
**参数:**无
示例输出:
列表对象
列出指定 S3 存储桶中的对象。
参数:
bucket
(必填):列出对象的 S3 bucket 的名称prefix
(可选):过滤对象的前缀(如文件夹路径)maxKeys
(可选):要返回的最大对象数
示例输出:
获取对象
从指定的 S3 存储桶中检索对象。文本文件将以纯文本形式返回,而二进制文件将返回包含有限详细信息的信息。
参数:
bucket
(必填):S3 bucket 的名称key
(必需):要检索的对象的键(路径)
文本输出示例:
二进制输出示例:
安全注意事项
- 服务器将仅访问
S3_BUCKETS
环境变量中指定的存储桶 - AWS 凭证必须具有对存储桶的适当权限
- 配置 AWS 权限时使用最小特权原则
- 对于生产用途,请考虑使用具有特定 S3 权限的 IAM 角色
与 Claude 一起使用
在桌面应用程序中与 Claude 交互时,您可以要求它执行以下 S3 操作:
- “列出我的所有 S3 存储桶”
- “汇总我的文档存储桶中的 PDF 文件”
- “从 my-documents-bucket 获取 README.txt 文件”
Claude 将使用适当的 MCP 工具来执行请求并向您展示结果。
执照
麻省理工学院
You must be authenticated.
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Amazon S3 模型上下文协议服务器允许 Claude 等大型语言模型与 AWS S3 存储交互,提供列出存储桶、列出对象和检索对象内容的工具。
Related MCP Servers
- -securityAlicense-qualityA Model Context Protocol server that enables Claude to execute Python code using boto3 to query and manage AWS resources directly from conversations.Last updated -6PythonMIT License
- AsecurityAlicenseAqualityA Model Context Protocol server implementation that enables Claude to perform AWS operations on S3 and DynamoDB services through natural language commands.Last updated -2392PythonMIT License
- -securityFlicense-qualityA Model Context Protocol server allowing Claude AI to interact with AWS resources through natural language, enabling users to query and manage AWS services without using the traditional AWS Console or CLI.Last updated -TypeScript
- -securityAlicense-qualityA Model Context Protocol server that enables Large Language Models like Claude to manage Linode cloud resources, including listing regions, creating, viewing, deleting, and rebooting Linode instances.Last updated -PythonMIT License