跳到主要内容
翻译页面

本页面由 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 智能体循环集成在一个二进制文件中,在审批门控之下规划、检查成本并预配临时云沙箱。


github.com/stackql/stackql-mcp-go