翻译页面
本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。
如何在 Gleam 应用中嵌入 StackQL MCP 服务器
StackQL 的 MCP 服务器可以在 Erlang/BEAM 目标上的 Gleam 应用内运行,无需单独安装,也没有运行时依赖。stackql_mcp 库通过 stdio 启动已签名的 StackQL 二进制文件,并与 OTP 监督机制集成,因此 BEAM 服务可以获得一个受治理、自描述的 SQL 接口,用于访问 StackQL 注册表中的每个云和 SaaS Provider。服务器通过 child_spec() 以 OTP 子进程的形式提供,因此可以放入你自己的监督树中。
步骤
- 添加库:
gleam add stackql_mcp
仅支持 Erlang/BEAM 目标(不支持 JavaScript 目标)。
- 启动服务器并列出工具。
Config.mode默认为read_only:
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)
}
使用 child_spec() 将服务器置于监督者之下,并使用 supervised_list_tools() 和 supervised_call_tool() 进行受监督的调用。
- 选择模式。
Config.mode默认为read_only。构建stackql_mcp.Config(..stackql_mcp.default_config(), mode: stackql_mcp.safe)即可提升到safe、delete_safe或full_access。权限提升必须显式进行。
二进制文件的获取
启动时,该库会下载对应平台的 StackQL bundle,对照内置的 sha256 固定哈希值进行校验,并将其缓存到该库系列共享的缓存中。解析优先级:显式指定的 Config.binary,然后是 STACKQL_MCP_BIN,最后是位于 ~/.stackql/mcp-server-bin/ 的共享缓存。对于离线或物理隔离的部署,将 STACKQL_MCP_BUNDLE 指向本地 bundle。
演示应用
pipewatch 是为该库计划的演示应用。它已列入路线图,尚未实现。
相关概念
- 嵌入式 MCP:Gleam 参考:安装、API 和二进制文件的获取
- 如何将 StackQL 与 AI 智能体配合使用:MCP 模型和安全模式
- StackQL MCP 架构:传输方式、模式和审计的内部机制
- 什么是智能体基础设施?:由此实现的模式