S3上传器MCP服务器
一种模型上下文协议(MCP)服务器,通过自动MIME类型检测向AWS S3存储桶提供文件上传功能。
特性
- 将文件上传到S3存储桶
- 基于文件扩展名的自动MIME类型检测
- 支持常见文件类型(图像、文档、音频、视频、档案)
- 可配置的S3对象键
- 全面的错误处理
设置
先决条件
- Node.js(版本14或更高)
- 具有S3访问权限的AWS凭据
- S3铲斗
安装
- 克隆或下载此存储库
- 安装依赖项:
npm install配置
设置以下环境变量:
export AWS_ACCESS_KEY_ID="your-access-key-id"
export AWS_SECRET_ACCESS_KEY="your-secret-access-key"
export AWS_REGION="your-aws-region"
export BUCKET_NAME="your-s3-bucket-name"用法
作为MCP服务器
启动服务器:
node index.js服务器公开了一个工具:
upload_file
将文件上传到配置的S3存储桶。
参数:
filePath(必填):要上传的文件的绝对路径key(可选):S3对象键。如果未提供,则使用文件名
例子:
{
"name": "upload_file",
"arguments": {
"filePath": "/path/to/your/file.jpg",
"key": "uploads/my-image.jpg"
}
}MIME类型
服务器会自动检测以下文件扩展名的MIME类型:
- 图像:jpg、jpeg、png、gif、webp、bmp、ico、svg、tiff
- 文件:pdf、doc、docx、xls、xlsx、ppt、pptx、rtf
- 文本:txt、csv、html、css、js、json、xml、md
- 音频:mp3、wav、ogg、m4a、flac
- 视频:mp4、avi、mov、wmv、flv、webm、mkv
- 档案:zip、rar、tar、gz、7z
- 其他:bin、exe、dmg(作为二进制文件处理)
未知文件类型默认为 application/octet-stream.
与Claude Desktop集成
要将此MCP服务器与Claude Desktop一起使用,请将其添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"s3-uploader": {
"command": "node",
"args": ["/path/to/s3-mcp-server/index.js"],
"env": {
"AWS_ACCESS_KEY_ID": "your-access-key-id",
"AWS_SECRET_ACCESS_KEY": "your-secret-access-key",
"AWS_REGION": "your-aws-region",
"BUCKET_NAME": "your-s3-bucket-name"
}
}
}
}错误处理
服务器为常见问题提供详细的错误消息:
- 缺少环境变量
- 文件未找到
- 文件路径无效
- AWS/S3错误
- 网络连接问题
安全考虑
- 安全地存储AWS凭据(使用环境变量,而不是硬编码值)
- 确保S3存储桶具有适当的权限
- 考虑在生产中使用IAM角色而不是访问密钥
- 如果需要,在上传之前验证文件类型和大小
发展
要在本地测试服务器,请执行以下操作:
# Test tools listing
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}' | node index.js
# Test file upload (replace with actual file path)
echo '{"jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": {"name": "upload_file", "arguments": {"filePath": "/path/to/test/file.txt"}}}' | node index.js