Развертывайте, управляйте и опрашивайте облачные ресурсы и взаимодействуйте с API через SQL
Универсальный интерфейс для эпохи агентной эры. Конфигурация как данные. Инфраструктура как контекст.
Содержание
О проекте
StackQL — открытый проект на Golang, который позволяет создавать, изменять и запрашивать состояние сервисов и ресурсов через различные локальные и удалённые интерфейсы, используя семантику SQL. Такие интерфейсы канонически включают, но не ограничиваются провайдерами облачных услуг и SaaS (Google, AWS, Azure, Okta, GitHub и т.д.).
Как это работает
StackQL — автономное приложение, которое может работать в клиентском режиме (через exec или shell) или быть доступно через клиент Postgres wire протокола (psycopg2 и т. п.) в режиме сервера (srv).
StackQL парсит SQL-запросы и транспилирует их в API-запросы к провайдеру облачных ресурсов. Вызовы API выполняются, результаты возвращаются пользователю.
Интерфейсы провайдеров StackQL канонически определяются как расширения OpenAPI к спецификациям провайдеров. Эти определения затем используются для генерации SQL-схемы и API-клиента. Источник определений провайдеров хранится в StackQL Registry. Семантика взаимодействий с провайдерами описана в нашей библиотеке any-sdk. Подробнее о нюансах — смотрите локальный AGENTS.md и AGENTS.md у any-sdk.
Диаграмма контекста 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
Более детальная документация по дизайну доступна здесь: here.
MCP сервер
StackQL является MCP сервером — SQL поверх 40+ облачных и SaaS-провайдеров для агентов ИИ. Направляйте любой клиент с поддержкой MCP (Claude, VS Code, Cursor и пр.) к StackQL, и он сможет выполнять запросы к ресурсам облака и создавать их через SQL.
Запуск через stdio:
stackql mcp --mcp.server.type=stdio
MCP StackQL публикуется в Official 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.mcpb -
stackql-mcp-linux-arm64.mcpb -
stackql-mcp-windows-x64.mcpb -
stackql-mcp-darwin-universal.mcpb
GitHub Actions
Подключайте StackQL MCP к агентским CI-воркфлоу. По умолчанию режим
read_only— безопасный выбор для CI.
- uses: stackql/setup-stackql-mcp@v1
with:
mode: read_only
Для клиентской настройки, аутентификации и режимов сервера смотрите полную документацию по MCP: docs.
Установка
StackQL доступен для Windows, MacOS, Linux, Docker, GitHub Actions и прочего. Ниже приведены инструкции по установке для вашей платформы.
Установка на MacOS
- Homebrew (
amd64иarm64)
brew install stackql или brew tap stackql/tap && brew install stackql/tap/stackql
- Установщик PKG для MacOS (
amd64иarm64)
скачайте последний MacOS PKG installer for StackQL
- запустите установщик и следуйте инструкциям
Установка на Windows
- MSI Installer
скачайте последний MSI installer for StackQL
- установщик Chocolatey
установите Chocolatey
-
запустите
choco install stackql -
ZIP-архив
скачайте последний Windows ZIP archive for StackQL
-
распакуйте архив (подпись кода
stackql.exe) в выбранную вами директорию -
добавьте директорию в переменную окружения PATH (необязательно)
Установка на Linux
- ZIP-архив
скачайте последний Linux ZIP archive for StackQL
или через curl -L https://bit.ly/stackql-zip -O && unzip stackql-zip
-
распакуйте архив (файл
stackql) в нужную директорию -
добавьте директорию в PATH (необязательно)
Получение StackQL из DockerHub
Посмотрите все доступные образы StackQL на DockerHub. Доступны образы, включая stackql, stackql-jupyter-demo и другие. Скачайте последнюю базовую версию StackQL командой:
docker pull stackql/stackql
Нужны выводы, а не инфраструктура? Выполните чистый аудит кросс-облаков для безопасности и FinOps одним образом — см. быструю настройку аудита в разделе Docker audit quickstart.
Использование StackQL с GitHub Actions
Используйте StackQL в ваших workflow GitHub Actions для автоматизации развёртывания облачной инфраструктуры, обеспечения IaC или соблюдения требований по соответствию/безопасности. Доступны следующие GitHub Actions: setup-stackql, stackql-exec и другие
Использование
StackQL можно использовать через интерактивную REPL-оболочку, через команду exec или как сервер через протокол Postgres wire.
ℹ️ StackQL не требует и не устанавливает базу данных.
- Интерактивная оболочка
# запуск интерактивных запросов stackql
stackql shell --auth="${AUTH}"
- Выполнение оператора или файла
stackql exec --auth="${AUTH}" -i myscript.iql --iqldata vars.jsonnet --output json
# или
stackql exec --auth="${AUTH}" "SELECT id, status FROM aws.ec2.instances WHERE region = 'us-east-1'"
ℹ️ Опции вывода
json,csv,tableиtextдоступны для командыexecчерез флаг--output
ℹ️ StackQL поддерживает передачу параметров с использованием
jsonnetилиjson, см. [Using Variables]
- Сервер
# обслуживаем запросы клиентов через Postgres wire protocol (psycopg2 и т. п.)
stackql srv --auth="${AUTH}"
Больше примеров — смотрите в нашем Blog
Участие
Вклад приветствуется. Для получения дополнительной информации о том, как внести вклад, смотрите наше руководство по участию.
Лицензия
Распространяется под MIT License. Подробнее об этом на LICENSE. Лицензии на стороннее ПО, которое мы используем, приведены в директории /docs/licenses.
Контакты
Свяжитесь с нами в Twitter: @stackql, напишите на info@stackql.io или начните общение через discussions.
Благодарности
Forks следующих проектов поддерживают нашу работу:
- vitess
- kin-openapi
- gorilla/mux
- readline
- psql-wire
- mcp-postgres
- the golang MCP SDK
- ...и многие другие. Пожалуйста, простите нас за возможные упущения.
Мы искренне благодарны за вклад этих проектов.