翻译页面
本页面由 AI 辅助从英文翻译而来。如两者存在差异,以英文版本为准。
Go
将 StackQL MCP 服务器嵌入已编译的 Go 应用,可作为下载的 sidecar 运行,或通过 go:embed 以 vendoring 方式打包进你的二进制文件。客户端是官方的 Go MCP SDK。
信息
嵌入的二进制文件在首次运行时下载并经 sha256 校验,或以 vendoring 方式打包进你的应用。参阅通用契约。
安装
go get github.com/stackql/stackql-mcp-go
快速入门
import (
"context"
"github.com/modelcontextprotocol/go-sdk/mcp"
stackqlmcp "github.com/stackql/stackql-mcp-go/embed"
)
func main() {
ctx := context.Background()
client, err := stackqlmcp.StartServer(ctx, stackqlmcp.Options{
Binary: StackqlMCPBinary(),
})
if err != nil {
// handle error
}
defer client.Close()
res, err := client.Session.CallTool(ctx, &mcp.CallToolParams{
Name: "run_select_query",
Arguments: map[string]any{"sql": "SELECT name FROM google.compute.regions WHERE project = 'my-project'"},
})
_ = res
}
API 为 StartServer(ctx, Options{Binary, Mode});返回的客户端来自官方的 Go MCP SDK。
模式
服务器默认以 read_only 模式启动。设置 Options.Mode 可提升到 safe、delete_safe 或 full_access。权限提升必须显式进行:除非你明确选择启用,否则服务器不会启用变更或生命周期工具。
Vendoring / 嵌入
通过 go:generate 获取步骤,使用 go:embed 以 vendoring 方式打包二进制文件,生成单个自包含的可执行文件:
//go:generate go run github.com/stackql/stackql-mcp-go/cmd/stackql-mcp-fetch -platform auto -package main
获取步骤会下载目标平台的已签名二进制文件并进行 sha256 校验,然后将其写入 go:embed 能够纳入你的构建的位置。运行时 StackqlMCPBinary() 返回嵌入的二进制文件,因此无需在首次运行时下载。
演示应用
sandboxctl 是一个基础设施管家:将嵌入式服务器和 Claude 智能体循环集成在一个二进制文件中,在审批门控之下规划、检查成本并预配临时云沙箱。