Saltar al contenido principal
Página traducida

Esta página se tradujo del inglés con ayuda de IA. Si hay diferencias entre ambas, la versión en inglés es la referencia.

srv

Comando que se usa para iniciar StackQL como servicio, al que después pueden acceder clientes del protocolo de red de Postgres autenticados mediante mTLS. El comando srv también puede ejecutar un servidor Model Context Protocol (MCP) junto con el servidor del protocolo de red de PostgreSQL, lo que permite el acceso mediante ambos protocolos tanto a clientes de bases de datos tradicionales como a agentes de IA.


Sintaxis​

stackql srv [server_options] [flags]


nota

Aunque el servidor de StackQL usa el protocolo de red de Postgres, no es un servidor Postgres ni lo requiere. El cliente usa el protocolo de red para comunicarse con el servidor, que usa StackQL para realizar consultas u operaciones DML en providers remotos en la nube y de SaaS y devolver los resultados al cliente.

Los parámetros enviados mediante el protocolo de consulta extendido (Parse / Bind / Execute, como lo usan psycopg 3, pgx y JDBC) se vinculan en el servidor como literales de cadena. A partir de v0.12.742, un marcador de posición $n dentro de un literal de cadena, un identificador entre comillas o un comentario se deja intacto, las barras invertidas de los valores de parámetro se escapan y un valor de texto NULL sigue siendo la cadena NULL (el NULL de SQL se transmite por separado).

Opciones del servidor​

OpciónDescripción
--pgsrv.addressDirección en la que escucha el servidor (normalmente 0.0.0.0)
--pgsrv.portPuerto en el que escucha el servidor (p. ej., 5444)
--pgsrv.tlsObjeto de configuración de mTLS, consulte el ejemplo siguiente
--pgsrv.loglevelNivel de log (valor predeterminado WARN)

consulte Opciones globales para ver opciones adicionales

Opciones del servidor MCP​

Cuando se ejecuta el comando srv con compatibilidad con MCP, están disponibles las siguientes opciones adicionales:

OpciónDescripción
--mcp.server.typeTipo de servidor MCP: http (en memoria) o reverse_proxy (basado en TCP)
--mcp.configObjeto de configuración JSON para el servidor MCP (consulte la documentación de MCP)
--mcp.log.formatCodificación del log de auditoría de MCP: jsonl (valor predeterminado) u otel (registros de log OTLP/JSON); tiene prioridad sobre server.audit.format en el objeto de configuración
--mcp.protocol.versionRevisión más reciente del protocolo MCP que se anuncia: auto (valor predeterminado), 2026-07-28 (solo sin sesión) o una revisión anterior como 2025-11-25; tiene prioridad sobre server.protocol_version en el objeto de configuración

Cambio incompatible en v0.12.742

A partir de v0.12.742, el transporte HTTP de MCP (--mcp.server.type=http o reverse_proxy) se niega a iniciar a menos que el objeto de configuración indique un token bearer con server.auth_token_env_var o renuncie explícitamente a la autenticación con "allow_unauthenticated": true. Consulte Autenticación de clientes HTTP.

consejo

Consulte la documentación del comando MCP para obtener información detallada sobre la configuración y el uso del servidor MCP, incluidos los modos de despliegue, las opciones de configuración y la integración con asistentes de IA.

información

Debe establecer las variables de entorno necesarias para la autenticación de los providers antes de iniciar el servidor; para obtener más información, consulte Usar un provider.

Para los servidores de larga duración, la opción --env.file le permite colocar o rotar las credenciales en un archivo de estilo dotenv en disco antes del inicio, en lugar de exportar variables en el shell:

stackql srv --pgsrv.port 5444 --env.file /etc/stackql/credentials.env

Para stackql srv, el archivo se lee una sola vez al iniciar; la vía para volver a cargarlo en mitad de la sesión es la herramienta MCP reload_credentials.

Opciones​

OpciónDescripción
-H,--helpMuestra la información de ayuda
-v,--verboseEjecuta las consultas en modo detallado con salida adicional enviada a stdout; si se selecciona la opción -f,
esta información de log adicional se escribe en el archivo de salida junto con los resultados de la consulta

consulte Opciones globales para ver opciones adicionales


Ejemplos​

Iniciar un proceso de servidor de StackQL y conectarse a él con un cliente de línea de comandos psql.

Primero, descargue el archivo de configuración openssl.cnf de stackql/stackql.

A continuación, genere los archivos de certificado y de clave que usarán el servidor y el cliente para la autenticación TLS mutua (mTLS).

openssl req -x509 -keyout ~/stackqlcreds/server_key.pem -out ~/stackqlcreds/server_cert.pem -config ./openssl.cnf -days 365
openssl req -x509 -keyout ~/stackqlcreds/client_key.pem -out ~/stackqlcreds/client_cert.pem -config ./openssl.cnf -days 365
chmod 400 ~/stackqlcreds/client_key.pem

Ahora, establezca las variables de entorno; si el cliente y el servidor están en el mismo host, se pueden compartir.

export PGPORT=5444
export PGSSLCERT=~/stackqlcreds/client_cert.pem
export PGSSLKEY=~/stackqlcreds/client_key.pem
export PGSSLROOTCERT=~/stackqlcreds/server_cert.pem
export PGSSLSRVKEY=~/stackqlcreds/server_key.pem
export CLIENT_CERT=$(base64 -w 0 ~/stackqlcreds/client_cert.pem)
export PGSSLMODE=allow

Configure un objeto de autenticación para los providers a los que el servidor necesite acceder, por ejemplo, para GitHub.

export STACKQL_GITHUB_USERNAME=youruser
export STACKQL_GITHUB_PASSWORD=ghp_youraccesstoken

Ahora, inicie el servidor en un terminal.

stackql srv \
--pgsrv.address=0.0.0.0 \
--pgsrv.port=$PGPORT \
--pgsrv.tls='{ "keyFilePath": "'${PGSSLSRVKEY}'", "certFilePath": "'${PGSSLROOTCERT}'", "clientCAs": [ "'${CLIENT_CERT}'" ] }'

En otro terminal, conéctese al servidor con el cliente de línea de comandos psql.

psql 127.0.0.1

Ahora, ejecute una consulta de StackQL en un provider autenticado.

psql (12.11 (Ubuntu 12.11-0ubuntu0.20.04.1), server 0.0.0)
Type "help" for help.

127.0.0.1=> SHOW SERVICES IN github LIKE '%repos%';
id | name | title
--------------+-------+----------------------------
repos:v0.3.3 | repos | GitHub v3 REST API - repos
(1 row)

127.0.0.1=>