项目简介

S3DB是一个创新的文档数据库,它利用AWS S3等对象存储的强大功能,将其转化为一个具有ORM(对象关系映射)接口、模式验证、数据加密和高效流API的成熟数据库。在此基础上,S3DB进一步提供了一个符合Model Context Protocol (MCP) 标准的服务器,允许大型语言模型(LLM)通过标准化的JSON-RPC协议,以工具调用的方式直接与数据库进行交互,实现智能化的数据管理和查询。

主要功能点

  • S3驱动的文档数据库: 将AWS S3、MinIO、DigitalOcean Spaces等对象存储转化为全功能的文档数据库,提供高效、低成本的数据存储和管理,无需传统数据库服务器。
  • 丰富的数据库操作工具: 提供创建、读取、更新、删除(CRUD)、批量操作、高效分区查询、流式数据处理等功能。通过28种专门的MCP工具,LLM可以像操作传统数据库一样智能地进行数据交互。
  • LLM原生集成: 通过Model Context Protocol (MCP) 标准,LLM可以直接调用S3DB的数据库工具,执行数据查询、更新记录、分析报告等操作,实现数据驱动的智能应用。
  • 性能优化与成本控制: 内置智能缓存(支持内存或文件系统),显著提升数据访问速度;同时具备AWS成本追踪功能,帮助用户监控和优化云支出。
  • 灵活的部署选项: MCP服务器支持标准输入输出(Stdio)和HTTP流(SSE)两种传输协议,方便在命令行工具或Web应用等不同环境中部署和集成。
  • 强大的数据建模与验证: 支持通过详细的Schema定义数据结构和验证规则,确保存储数据的质量和一致性。

安装步骤

  1. 安装Node.js: 确保您的系统已安装Node.js(推荐v18或更高版本)。
  2. 安装s3db.js包: 在您的项目中通过npm或pnpm安装s3db.js:
    npm install s3db.js
    # 或者
    pnpm add s3db.js
  3. 安装可选依赖 (如果使用HTTP传输): 如果您计划通过HTTP(SSE)传输运行MCP服务器,需要安装'express':
    npm install express
    其他增强HTTP日志的插件(如'pino-http')可根据需求自行安装。

服务器配置 (用于MCP客户端连接)

MCP客户端需要S3DB MCP服务器的启动命令和参数才能建立连接。S3DB MCP服务器支持两种主要传输方式:'stdio' (命令行) 和 'sse' (HTTP流)。

您可以通过以下JSON配置信息,在MCP客户端中指定如何连接到S3DB MCP服务器:

1. Stdio (标准输入输出) 传输配置示例:

{
  "name": "s3db-local-mcp",
  "command": "npx",
  "args": [
    "s3db.js",
    "s3db-mcp",
    "--transport",
    "stdio"
  ],
  "description": "连接到S3DB的Model Context Protocol服务器,通过标准输入输出(stdio)进行通信,适用于命令行或本地集成。请确保您的AWS凭证已在环境变量中配置,或在S3DB连接字符串中提供。",
  "tools": []
}

2. HTTP (SSE) 传输配置示例:

{
  "name": "s3db-http-mcp",
  "command": "npx",
  "args": [
    "s3db.js",
    "s3db-mcp",
    "--transport",
    "sse",
    "--port",
    "17500",
    "--host",
    "0.0.0.0"
  ],
  "description": "连接到S3DB的Model Context Protocol服务器,通过HTTP流(SSE)进行通信。服务器将在指定端口和主机上运行。LLM客户端将通过HTTP请求与此端点交互。",
  "tools": [],
  "url": "http://0.0.0.0:17500/mcp"
}

参数注释:

  • 's3db.js s3db-mcp': 这是启动S3DB MCP服务器的核心命令。
  • '--transport stdio': 指定服务器使用标准输入输出作为通信协议。通常用于本地开发或命令行工具集成。
  • '--transport sse': 指定服务器使用HTTP流(Server-Sent Events)作为通信协议。适用于需要通过HTTP请求进行通信的LLM客户端。
  • '--port <端口号>': (仅限'sse'传输) 指定HTTP服务器监听的端口号,例如'17500'。
  • '--host <主机地址>': (仅限'sse'传输) 指定HTTP服务器监听的主机地址,例如'0.0.0.0'表示监听所有可用网络接口。
  • 环境变量: S3DB数据库本身的连接字符串('S3DB_CONNECTION_STRING')或其他配置(如AWS凭证、缓存启用状态、成本追踪启用状态)通常通过环境变量在MCP服务器端设置。MCP客户端无需直接配置这些敏感信息。

基本使用方法

一旦MCP服务器配置并启动,LLM客户端就可以通过调用其暴露的工具来与S3DB数据库进行交互。

  1. 启动MCP服务器: 在终端中运行MCP服务器的启动命令。例如,如果您选择使用stdio传输:

    # 在您的项目根目录或全局安装s3db.js后运行
    npx s3db.js s3db-mcp --transport=stdio

    或者使用HTTP (SSE) 传输:

    npx s3db.js s3db-mcp --transport=sse --port=17500 --host=0.0.0.0

    服务器启动后,会等待MCP客户端的连接请求。

  2. 通过MCP客户端连接: 您的LLM客户端(例如,支持MCP协议的LLM助手或CLI工具)将使用上面提供的配置信息连接到S3DB MCP服务器。例如,使用Claude CLI添加一个本地S3DB工具集:

    # 使用Claude CLI配置s3db-mcp工具集
    claude mcp add s3db-local --transport stdio -- npx s3db.js s3db-mcp --transport=stdio

    这将允许LLM客户端发现并调用S3DB提供的所有数据库操作工具。

  3. LLM调用工具示例 (概念性): LLM客户端现在可以像调用其他功能一样,通过JSON-RPC请求调用S3DB MCP服务器提供的工具。以下是一个简化的LLM调用工具的交互流程示例:

    • LLM内部思考: "我需要连接到S3DB数据库。我应该调用'dbConnect'工具。"
    • LLM发送的工具调用请求 (JSON-RPC):
      {
        "jsonrpc": "2.0",
        "method": "tool_code",
        "params": {
          "name": "dbConnect",
          "arguments": {
            "connectionString": "s3://YOUR_ACCESS_KEY:YOUR_SECRET_KEY@your-bucket/my-app",
            "enableCache": true
          }
        },
        "id": 1
      }
    • LLM内部思考: "数据库已连接。现在我需要创建一个名为'users'的资源(数据表)。我应该调用'dbCreateResource'工具。"
    • LLM发送的工具调用请求:
      {
        "jsonrpc": "2.0",
        "method": "tool_code",
        "params": {
          "name": "dbCreateResource",
          "arguments": {
            "name": "users",
            "attributes": {
              "name": "string|required",
              "email": "email|unique",
              "age": "number|integer|positive"
            },
            "timestamps": true
          }
        },
        "id": 2
      }
    • LLM内部思考: "资源'users'已成功创建。现在我可以插入用户数据了。我应该调用'resourceInsert'工具。"
    • LLM发送的工具调用请求:
      {
        "jsonrpc": "2.0",
        "method": "tool_code",
        "params": {
          "name": "resourceInsert",
          "arguments": {
            "resourceName": "users",
            "data": {
              "name": "Alice",
              "email": "[email protected]",
              "age": 30
            }
          }
        },
        "id": 3
      }

    通过这种方式,LLM客户端可以利用S3DB MCP服务器提供的28种工具,实现对S3DB数据库的全面、智能操作,无需人工介入。

信息

分类

数据库与文件