项目简介

'sample-mcp-server-s3' 是一个基于 Model Context Protocol (MCP) 构建的服务器实现,它允许大型语言模型 (LLM) 客户端通过标准的 MCP 协议访问和操作存储在 AWS S3 (Simple Storage Service) 云服务上的数据。该服务器将 S3 存储桶和对象抽象为 资源 (Resources),并提供操作 S3 的 工具 (Tools),使得 LLM 能够利用 S3 中的数据作为上下文信息,或调用 S3 功能完成特定任务。

主要功能点

  • 资源 (Resources):
    • 将 AWS S3 存储桶中的 PDF 文档等文件以资源的形式暴露给 LLM 客户端。
    • 客户端可以像访问 GET 请求端点一样,加载 S3 中的信息到 LLM 的上下文 (Context) 中。
    • 当前版本支持 PDF 文档资源,并限制最多返回 1000 个对象。
  • 工具 (Tools):
    • ListBuckets: 列出认证用户拥有的所有 S3 存储桶。
    • ListObjectsV2: 列出指定存储桶中的对象(最多 1000 个),支持分页和前缀过滤。
    • GetObject: 从 S3 存储桶中检索指定对象的内容。

安装步骤

  1. 安装依赖: 确保你的开发环境已安装 Python 和 uv (一个快速的 Python 包安装和解析器)。然后,在项目根目录下运行以下命令同步依赖并更新 lockfile:

    uv sync
  2. 构建项目: 运行以下命令构建项目分发包:

    uv build

    构建产物会生成在 'dist/' 目录下。

服务器配置

MCP 服务器需要配置在 MCP 客户端中才能使用。以 Claude Desktop 为例,你需要编辑 Claude 的配置文件 'claude_desktop_config.json',添加 's3-mcp-server' 服务器的配置信息。

Development/Unpublished Servers Configuration (开发/未发布服务器配置): 适用于本地开发和调试,服务器程序直接从项目目录启动。

{
  "mcpServers": {
    "s3-mcp-server": {
      "command": "uv",  // 启动服务器的命令,这里使用 uv 运行 Python
      "args": [
        "--directory",  // 指定工作目录
        "/Users/user/generative_ai/model_context_protocol/s3-mcp-server", // 替换为你的项目根目录绝对路径
        "run",          // uv 的 run 命令,用于运行 Python 脚本
        "s3-mcp-server" // 实际要运行的 Python 脚本入口,对应 src/s3_mcp_server/__init__.py 中的 main 函数
      ]
    }
  }
}

Published Servers Configuration (发布服务器配置): 适用于服务器已打包发布的情况,可以直接通过 uvx 运行已发布的包。

{
  "mcpServers": {
    "s3-mcp-server": {
      "command": "uvx", // 启动已发布服务器的命令,使用 uvx 运行
      "args": [
        "s3-mcp-server" //  已发布的服务器包名,uvx 会自动查找和运行
      ]
    }
  }
}

注意:

  • 请根据你的实际项目路径替换 '/Users/user/generative_ai/model_context_protocol/s3-mcp-server' 为正确的项目根目录。
  • 你需要配置 AWS 认证信息,参考 README.md 中的 "Setting up AWS Credentials" 部分,确保 AWS 凭证具有访问 S3 的权限。

基本使用方法

  1. 启动 MCP 服务器: 根据上述配置,启动 's3-mcp-server'。如果是开发配置,在项目根目录下运行 'uv run s3-mcp-server' 即可。
  2. 配置 MCP 客户端: 在支持 MCP 协议的 LLM 客户端 (例如 Claude Desktop) 中,配置 's3-mcp-server' 服务器连接信息。
  3. LLM 客户端使用: 在 LLM 客户端中,你可以指示 LLM 使用 's3-mcp-server' 提供的资源和工具。例如,你可以让 LLM 读取 S3 上的某个 PDF 文档作为上下文,或者调用 'ListBuckets' 工具查看可用的 S3 存储桶。

信息

分类

数据库与文件