项目简介
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定义数据结构和验证规则,确保存储数据的质量和一致性。
安装步骤
- 安装Node.js: 确保您的系统已安装Node.js(推荐v18或更高版本)。
- 安装s3db.js包: 在您的项目中通过npm或pnpm安装s3db.js:
npm install s3db.js # 或者 pnpm add s3db.js - 安装可选依赖 (如果使用HTTP传输): 如果您计划通过HTTP(SSE)传输运行MCP服务器,需要安装'express':
其他增强HTTP日志的插件(如'pino-http')可根据需求自行安装。npm install express
服务器配置 (用于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数据库进行交互。
-
启动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客户端的连接请求。
-
通过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提供的所有数据库操作工具。
-
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数据库的全面、智能操作,无需人工介入。
信息
分类
数据库与文件