关于 Stackql
StackQL 是开源的 SQL 查询与资源管理引擎,可用 SQL 语义查询和变更云及 SaaS 服务的状态。它以单个签名二进制文件分发,面向需要统一管理多云基础设施的开发者与 DevOps 团队。
主要功能
- 01使用 SQL 查询和配置云及 SaaS 资源
- 02单个签名二进制文件,支持 Windows、macOS、Linux
- 03提供 Provider 发现、Schema 探索等 MCP 工具
- 04支持 exec、shell 和 Postgres 协议的 srv 模式
适用场景
- 01通过 SQL 查询多个云平台的资源状态
- 02让 AI Agent 在 CI 流程中以只读模式审计基础设施
- 03在 MCP 客户端中执行资源生命周期操作
MCP 相关
StackQL 本身是 MCP 服务,通过 stdio 运行 stackql mcp 命令,向 Claude、VS Code、Cursor 等 MCP 客户端暴露查询与配置云资源的工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
16收录的工具列表 · 更新于 3 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| format | string | 否 | 文本内容的渲染格式:markdown(默认)或 json |
| method | string | 否 | |
| provider | string | 否 | |
| resource | string | 否 | |
| row_limit | integer | 否 | |
| service | string | 否 |
详细介绍
关于项目
StackQL 是一个使用 Golang 构建的开源项目,支持你通过 SQL 语义,跨不同的本地和远程接口创建、修改和查询服务与资源的状态。这类接口通常包括但不限于云服务和 SaaS 提供商(Google、AWS、Azure、Okta、GitHub 等)。

工作原理
StackQL 是一款独立应用,可在客户端模式下使用(通过 exec 或 shell),也可通过 Postgres wire protocol 客户端(psycopg2 等)以服务模式(srv)访问。
StackQL 会解析 SQL 语句,并将其转换为发送给(云)资源提供商的 API 请求。随后执行 API 调用,并将结果返回给用户。
StackQL 提供商接口通常在提供商规范的 OpenAPI 扩展中定义。这些定义随后用于生成 SQL 架构和 API 客户端。提供商定义的源文件存储在 StackQL Registry 中。提供商交互的语义由我们的 any-sdk 库定义。有关实现细节,请参阅本地 AGENTS.md 文件和 any-sdk 的 AGENTS.md。
StackQL 上下文图
以下上下文图从高层描述了 StackQL 架构:
flowchart LR
subgraph StackQL
direction BT
subgraph ProviderDefs
Registry[Provider Registry Docs]
end
subgraph App
Proc[$ stackql exec\n$ stackql shell\n$ stackql srv]
style Proc fill:#000,stroke:#000,color:#fff,text-align:left;
%% ,font-family:'Courier New', Courier, monospace
end
end
User((User)) <--> StackQL <--> Provider[Cloud Provider API]
ProviderDefs --> App
更多设计文档请见此处。
MCP 服务
StackQL 是一款 MCP 服务——通过 SQL 为 AI Agent 提供 40 多家云服务和 SaaS 提供商的支持。将任何支持 MCP 的客户端(Claude、VS Code、Cursor 等)连接到 StackQL,即可使用 SQL 查询和配置云资源。
通过 stdio 运行:
stackql mcp --mcp.server.type=stdio
StackQL MCP 已发布到官方 MCP Registry,名称为 io.github.stackql/stackql-mcp,并通过 npm、PyPI、Docker、GitHub Action 和 .mcpb 捆绑包分发。选择一种安装方式,并将对应配置块添加到 MCP 客户端配置中:
npm(npx)
{
"mcpServers": {
"stackql": {
"command": "npx",
"args": ["-y", "@stackql/mcp-server"]
}
}
}
PyPI(uvx)
{
"mcpServers": {
"stackql": {
"command": "uvx",
"args": ["stackql-mcp-server"]
}
}
}
Docker
{
"mcpServers": {
"stackql": {
"command": "docker",
"args": ["run", "-i", "--rm", "stackql/stackql-mcp"]
}
}
}
.mcpb 捆绑包
从最新版本下载适用于你平台的捆绑包,并将其安装到 MCP 客户端中(支持
.mcpb的客户端可一键安装)。
stackql-mcp-linux-x64.mcpbstackql-mcp-linux-arm64.mcpbstackql-mcp-windows-x64.mcpbstackql-mcp-darwin-universal.mcpb
GitHub Actions
将 StackQL MCP 接入 Agent 工作流 CI。默认采用
read_only模式,这是 CI 中安全的默认设置。
- uses: stackql/setup-stackql-mcp@v1
with:
mode: read_only
有关特定客户端的设置、身份验证和服务模式,请参阅 MCP 安装与使用完整文档。
安装
StackQL 可用于 Windows、MacOS、Linux、Docker、GitHub Actions 等平台。请参阅下方适用于你平台的安装说明。
在 MacOS 上安装
- Homebrew(
amd64和arm64)brew install stackql或brew tap stackql/tap && brew install stackql/tap/stackql
- MacOS PKG 安装程序(
amd64和arm64)- 下载最新的 StackQL MacOS PKG 安装程序
- 运行安装程序并按照提示操作
在 Windows 上安装
- MSI 安装程序
- 下载最新的 StackQL MSI 安装程序
- 运行安装程序并按照提示操作
- Chocolatey
- 安装 Chocolatey
- 运行
choco install stackql
- ZIP 压缩包
- 下载最新的 StackQL Windows ZIP 压缩包
- 将压缩包(经过代码签名的
stackql.exe文件)解压到你选择的目录 - 将该目录添加到
PATH环境变量中(可选)
在 Linux 上安装
- ZIP 压缩包
- 下载最新的 StackQL Linux ZIP 压缩包
- 或通过
curl -L https://bit.ly/stackql-zip -O && unzip stackql-zip下载
- 或通过
- 将压缩包(
stackql文件)解压到你选择的目录 - 将该目录添加到
PATH环境变量中(可选)
- 下载最新的 StackQL Linux ZIP 压缩包
从 DockerHub 获取 StackQL
在 DockerHub 上查看所有可用的 StackQL 镜像。可用镜像包括
stackql、stackql-jupyter-demo等。使用以下命令拉取最新的 StackQL 基础镜像:
docker pull stackql/stackql
想要发现结果,而非基础设施?使用标准镜像,通过一条命令运行只读的跨云安全与 FinOps 审计 — 请参阅 Docker 审计快速入门。
通过 GitHub Actions 使用 StackQL
在 GitHub Actions 工作流中使用 StackQL,自动执行云基础设施预配、IaC 保障或合规性与安全任务。可用的 GitHub Actions 包括:
setup-stackql、stackql-exec等。
用法
StackQL 可通过交互式 REPL shell、exec 命令使用,也可作为服务运行,并使用 Postgres wire protocol。
ℹ️ StackQL 无需数据库,也不会安装数据库。
-
交互式 Shell
# run interactive stackql queries stackql shell --auth="${AUTH}" -
执行语句或文件
stackql exec --auth="${AUTH}" -i myscript.iql --iqldata vars.jsonnet --output json # or stackql exec --auth="${AUTH}" "SELECT id, status FROM aws.ec2.instances WHERE region = 'us-east-1'"ℹ️
exec命令可通过--output标志使用json、csv、table和text输出选项ℹ️ StackQL 支持使用
jsonnet或json传递参数,请参阅使用变量 -
服务
# serve client requests over the Postgres wire protocol (psycopg2, etc.) # clients are not authenticated unless mTLS is configured via --pgsrv.tls, so keep the listener on loopback otherwise stackql srv --pgsrv.address=127.0.0.1 --auth="${AUTH}"
更多示例请参阅我们的 博客。
贡献
欢迎并鼓励大家贡献。如需了解如何参与贡献,请参阅我们的贡献指南。
许可证
本项目依据 MIT License 分发。有关详细信息,请参阅 LICENSE。我们使用的第三方软件许可证包含在 /docs/licenses 目录中。
联系方式
你可以通过 Twitter 联系我们:@stackql;发送邮件至 [email protected];或通过讨论区发起交流。
致谢
以下项目的分支为我们的工作提供了支持:
- vitess
- kin-openapi
- gorilla/mux
- readline
- psql-wire
- mcp-postgres
- the
golangMCP SDK - ……以及更多项目。如有遗漏,敬请谅解。
我们衷心感谢这些项目的贡献。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
