翻译页面
本页面由 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 固定哈希值进行校验,并将其缓存到该库系列共享的缓存中。解析优先级:
- 显式指定的
Config.binary。 STACKQL_MCP_BIN环境变量。- 位于
~/.stackql/mcp-server-bin/<version>/<platform-key>/的共享缓存。
对于离线或物理隔离的部署,将 STACKQL_MCP_BUNDLE 指向本地 bundle。
演示应用
pipewatch 是为该库计划的演示应用。它已列入路线图,尚未实现。