跳到主要内容
翻译页面

本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。

Gleam

在 Erlang/BEAM 目标上将 StackQL MCP 服务器嵌入 Gleam 应用。该库与 OTP 监督机制集成,下载并校验已签名的二进制文件,并通过 stdio 启动它。

信息

嵌入的二进制文件在首次运行时下载并经 sha256 校验,或以 vendoring 方式打包进你的应用。参阅通用契约。


安装​

gleam add stackql_mcp

仅支持 Erlang/BEAM 目标(不支持 JavaScript 目标)。服务器通过 child_spec() 以 OTP 子进程的形式提供,因此可以放入你自己的监督树中。


快速入门​

import gleam/io
import gleam/int
import gleam/list
import envoy
import stackql_mcp

pub fn main() {
let config =
stackql_mcp.Config(
..stackql_mcp.default_config(),
auth: [stackql_mcp.auth_for("github", "null_auth")],
)

let assert Ok(server) =
stackql_mcp.start(
config: config,
home: "/home/u",
os: "linux",
arch: "x86_64",
getenv: envoy.get,
)

let assert Ok(tools) = stackql_mcp.list_tools(server)
io.println(int.to_string(list.length(tools)) <> " tools available")

stackql_mcp.stop(server)
}

API 为:用于生命周期的 stackql_mcp.start()、stop() 和 child_spec();用于操作的 list_tools() 和 call_tool()(另有在监督者下使用的 supervised_list_tools() 和 supervised_call_tool() 变体);以及用于配置的 Config、default_config() 和 auth_for()。


模式​

模式通过 Config.mode 设置,默认为 read_only。将其设置为 safe、delete_safe 或 full_access 即可提升权限:

stackql_mcp.Config(..stackql_mcp.default_config(), mode: stackql_mcp.safe)

权限提升必须显式进行:除非你明确选择启用,否则服务器不会启用变更或生命周期工具。


Vendoring / 嵌入​

启动时,该库会下载对应平台的 StackQL bundle,对照内置的 sha256 固定哈希值进行校验,并将其缓存到该库系列共享的缓存中。解析优先级:

  1. 显式指定的 Config.binary。
  2. STACKQL_MCP_BIN 环境变量。
  3. 位于 ~/.stackql/mcp-server-bin/<version>/<platform-key>/ 的共享缓存。

对于离线或物理隔离的部署,将 STACKQL_MCP_BUNDLE 指向本地 bundle。


演示应用​

pipewatch 是为该库计划的演示应用。它已列入路线图,尚未实现。


github.com/stackql/stackql-mcp-gleam