# 如何在 Go 应用中嵌入 StackQL MCP 服务器

> 使用 go:embed 或 sidecar 模式将 StackQL MCP 服务器嵌入已编译的 Go 二进制文件，使智能体式 Go 应用无需运行时依赖即可通过 SQL 执行云查询和预配。

Source: https://stackql.io/zh-hans/ai/how-tos/embed-stackql-mcp-server-in-go

StackQL 的 MCP 服务器可以在已编译的 Go 程序内运行，无需 `npx`，无需单独安装，也没有运行时依赖。`stackql-mcp-go` 库在官方 Go MCP SDK 客户端的背后通过 stdio 启动已签名的 StackQL 二进制文件，因此你的 Go 应用可以获得一个受治理、自描述的 SQL 接口，用于访问 StackQL 注册表中的每个云和 SaaS Provider。这就是 **sandboxctl** 所采用的模式，它是一个按需基础设施管家，以单个二进制文件发布。

## 步骤

1. **添加库：**

```
go get github.com/stackql/stackql-mcp-go
```

2. **启动嵌入式服务器并调用工具。** 服务器默认以 `read_only` 模式启动：

```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
}
```

3. **选择模式。** `Options.Mode` 默认为 `read_only`。仅当应用需要预配资源时，才将其设置为 `safe`、`delete_safe` 或 `full_access`。权限提升必须显式进行。

## 使用 go:embed 发布单个二进制文件

要生成自包含的可执行文件，添加一个 `go:generate` 获取步骤，由它下载平台二进制文件并进行 sha256 校验，然后使用 `go:embed` 将其嵌入构建：

```
//go:generate go run github.com/stackql/stackql-mcp-go/cmd/stackql-mcp-fetch -platform auto -package main
```

运行时 `StackqlMCPBinary()` 返回嵌入的二进制文件，因此无需在首次运行时下载。如果不使用 vendoring，二进制文件会在首次运行时下载，经校验后存入位于 `~/.stackql/mcp-server-bin/` 的共享缓存。

## 演示应用

**sandboxctl** 是一个基础设施管家：将嵌入式 StackQL MCP 服务器和 Claude 智能体循环集成在一个 Go 二进制文件中，在审批门控之下规划、检查成本并预配临时云沙箱。

## 相关概念

- [嵌入式 MCP：Go 参考](/mcp/embedded/go)：安装、API 和模式
- [如何将 StackQL 与 AI 智能体配合使用](/ai/how-tos/use-stackql-with-ai-agents)：MCP 模型和安全模式
- [StackQL MCP 架构](/ai/architecture/stackql-mcp-architecture)：传输方式、模式和审计的内部机制
- [什么是智能体基础设施？](/ai/canonical-definitions/what-is-agentic-infrastructure)：由此实现的模式
