SQLite数据库插件

一个通过WebAssembly提供SQLite数据库交互功能的插件,支持多数据库连接和SQL操作。

  • by hyper-mcp-rs
  • Rust
  • 本地部署
  • 更新于
在 GitHub 查看 hyper-mcp-rs/sqlite-plugin

使用说明

SQLite插件

A. hyper-mcp WebAssembly插件(v2) 用于通过模型上下文与一个或多个SQLite数据库进行交互 协议。它捆绑了SQLite(通过 rusqlite 编译为 wasm32-wasip1),因此不需要安装外部SQLite。

连接由键控 别名 在工具调用期间保持开放,直到你 明确地 close 他们。

工具

工具 说明
connect 打开一个数据库并在别名下注册。拿 alias, path,可选 mode (read
attach 将另一个数据库附加到现有连接。拿 alias, db_name (SQL AS 名称), path,可选 mode (默认值 read).如果别名不存在,则失败。
close 通过以下方式关闭连接 alias.Idenpotent--关闭未知别名成功并报告 closed: false.
connections 列出所有打开的连接别名及其路径和模式。
tables 列出的所有表和视图 alias,跨主数据库和任何附加数据库。
describe_table 返回表的架构:列(类型、可空性、默认值、主键位置)、外键、索引和原始值 CREATE 声明。拿 alias, table,可选 db_name (默认值 main).
execute_sql 在以下对象上运行单个SQL语句 alias。插件检查准备好的语句的列数,以决定是否 查询 (返回 columns + rows)或 执行 (返回 rows_affected).

打开模式

  • read --以只读方式打开;数据库文件必须已经存在。
  • write --以读写方式打开,如果文件不存在,则创建该文件。

attach 通过SQLite URI将相同的语义应用于附加的数据库 文件名(mode=ro / mode=rwc).

设置 create: true 上 connect 忽略 mode 并且总是以写方式打开 模式。它会创建任何缺失的父目录,并拒绝覆盖 现有文件,因此这是提供新数据库的安全方法。

execute_sql 结果形状

execute_sql 始终返回带有 result_type 鉴别器:

  • result_type: "query" → columns (名称数组)和 rows (行阵列, 每个值都是一个与以下值对齐的数组 columns). rows_affected 是 0.
  • result_type: "execute" → rows_affected (整数)。 columns/rows 是空的。

SQLite值映射到JSON如下: NULL → null, INTEGER → 号码, REAL → 号码, TEXT → 字符串,以及 BLOB → { "$base64": "<data>" }.

execute_sql 跑a 单个 声明。要运行多个语句,请调用 每个语句使用一次工具。

配置

因为该插件在WASM沙箱中运行,所以它只能访问以下数据库文件 通过以下方式明确安装 allowed_paths。映射包含以下内容的主机目录 将您的数据库放入插件中,并在中使用沙盒中的路径 connect/attach.

{
  "plugins": {
    "sqlite": {
      "url": "oci://ghcr.io/hyper-mcp-rs/sqlite-plugin:latest",
      "runtime_config": {
        "allowed_paths": ["/host/path/to/data:/data"]
      }
    }
  }
}

使用上面的映射,打开一个数据库:

{ "alias": "app", "path": "/data/app.db", "mode": "write" }

对于本地开发,将插件指向新构建的 .wasm:

{
  "plugins": {
    "sqlite": {
      "url": "file:///path/to/target/wasm32-wasip1/release/plugin.wasm",
      "runtime_config": {
        "allowed_paths": ["/host/path/to/data:/data"]
      }
    }
  }
}

建筑

插件目标 wasm32-wasip1。因为捆绑的SQLite是从 C、 需要一个可以针对WebAssembly的C工具链—— WASI SDK.

# One-time setup
rustup target add wasm32-wasip1

# Install the WASI SDK and point the C cross-compiler at it
export WASI_SDK_PATH=/opt/wasi-sdk
export CC_wasm32_wasip1="$WASI_SDK_PATH/bin/clang"
export AR_wasm32_wasip1="$WASI_SDK_PATH/bin/llvm-ar"

# Build
cargo build --release --target wasm32-wasip1
# Result: target/wasm32-wasip1/release/plugin.wasm

CI(.github/workflows/ci.yml)发布工作流安装WASI SDK 并自动设置这些变量。

许可证

阿帕奇-2.0。看 许可证.