Skip to main content
Glama
boyce-io
by boyce-io

Boyce: Protocolo semántico y capa de seguridad para flujos de trabajo de bases de datos con agentes

La capa de seguridad semántica para flujos de trabajo de bases de datos con agentes. Boyce conecta LLMs a contextos de bases de datos en vivo con rieles de seguridad integrados.

Llamado así en honor a Raymond F. Boyce, co-inventor de SQL (1974) y co-autor de la Forma Normal de Boyce-Codd (BCNF).

Los agentes de IA que consultan bases de datos sin el contexto adecuado generan SQL poco fiable: trabajando con esquemas incompletos, infiriendo nombres de columnas, adivinando rutas de unión. Boyce proporciona a los agentes la inteligencia de base de datos estructurada que necesitan para generar SQL correcto y seguro en todo momento, a través de tres sistemas interconectados:

Capa

Qué hace

Compilador SQL

ask_boyce — NL → StructuredFilter → SQL determinista. Cero LLM en el constructor de SQL. Mismas entradas, mismo SQL, byte por byte, siempre.

Inspector de BD

query_database / profile_data — Los adaptadores de Postgres/Redshift en vivo permiten que su agente vea el esquema real y las distribuciones de datos reales antes de escribir un solo filtro.

Verificación de consultas

Bucles EXPLAIN de pre-vuelo en cada consulta generada. El SQL incorrecto se detecta en la fase de planificación, no a las 2 a.m. en su rotación de guardia.

¿Por qué es importante esto?La trampa NULL: El SQL de su agente de IA es correcto. La respuesta sigue siendo incorrecta.


Instalación

Requiere Python 3.10+

pip install boyce

# With live Postgres/Redshift adapter (enables EXPLAIN pre-flight + column profiling)
pip install "boyce[postgres]"
# uv (recommended)
uv pip install boyce
uv pip install "boyce[postgres]"

Desde el código fuente:

git clone https://github.com/boyce-io/boyce
uv pip install -e "boyce/"

Related MCP server: mcp-postgres

Inicio rápido

Después de instalar, ejecute boyce init para configurar su host MCP automáticamente:

boyce init

El asistente detecta Claude Desktop, Cursor, Claude Code y JetBrains (DataGrip, IntelliJ, etc.), y escribe el bloque de configuración correcto para cada uno.

¿Desarrollando desde el código fuente? El repositorio incluye un script de configuración:

./quickstart.sh   # detects uv or python, installs package, writes .env template

Configure su host MCP

La ruta más rápida es boyce init: detecta su host MCP y escribe la configuración automáticamente:

boyce init

O configúrelo manualmente. Hay dos rutas de configuración dependiendo de su host:


Ruta 1 — Hosts MCP (No se requiere clave LLM)

Si está utilizando Claude Desktop, Cursor, Claude Code, Codex, Cline, Windsurf, JetBrains (DataGrip, IntelliJ) o cualquier host compatible con MCP, no necesita configurar un proveedor de LLM para Boyce. El modelo del propio host maneja el razonamiento: Boyce proporciona el contexto del esquema y el compilador SQL determinista a través de get_schema y ask_boyce. Solo se necesita BOYCE_DB_URL (e incluso eso es opcional).

Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "boyce": {
      "command": "boyce",
      "env": {
        "BOYCE_DB_URL": "postgresql://user:pass@host:5432/db"
      }
    }
  }
}

Cursor (.cursor/mcp.json en la raíz del proyecto):

{
  "mcpServers": {
    "boyce": {
      "command": "boyce",
      "env": {
        "BOYCE_DB_URL": "postgresql://user:pass@host:5432/db"
      }
    }
  }
}

Ruta 2 — Con NL→SQL integrado de Boyce

Si está utilizando la CLI (boyce ask), la API HTTP o un cliente que no sea MCP (por ejemplo, la extensión de VS Code), configure el planificador de consultas interno de Boyce con su proveedor de LLM:

{
  "mcpServers": {
    "boyce": {
      "command": "boyce",
      "env": {
        "BOYCE_PROVIDER": "anthropic",
        "BOYCE_MODEL": "claude-sonnet-4-6",
        "ANTHROPIC_API_KEY": "sk-ant-...",
        "BOYCE_DB_URL": "postgresql://user:pass@host:5432/db"
      }
    }
  }
}

Boyce admite cualquier proveedor de LLM disponible a través de LiteLLM: Anthropic, OpenAI, Ollama (local), vLLM (local), Azure, Bedrock, Vertex, Mistral y más.


BOYCE_DB_URL es opcional en ambas rutas. Sin ella, Boyce se ejecuta en modo solo esquema: la generación de SQL sigue funcionando; el pre-vuelo EXPLAIN y las herramientas de consulta en vivo devuelven "status": "unchecked".


Variables de entorno

Variable

Cuándo se necesita

Ejemplo

Propósito

BOYCE_PROVIDER

Solo ruta 2 (CLI/HTTP/no-MCP)

anthropic

Nombre del proveedor LiteLLM

BOYCE_MODEL

Solo ruta 2 (CLI/HTTP/no-MCP)

claude-sonnet-4-6

ID del modelo pasado a LiteLLM

ANTHROPIC_API_KEY

Al usar Anthropic

sk-ant-...

Credenciales de Anthropic

OPENAI_API_KEY

Al usar OpenAI

sk-...

Credenciales de OpenAI

BOYCE_DB_URL

Opcional (cualquier ruta)

postgresql://user:pass@host:5432/db

DSN asyncpg: habilita el pre-vuelo EXPLAIN + herramientas de consulta en vivo

BOYCE_HTTP_TOKEN

Solo API HTTP de ruta 2

my-secret-token

Token Bearer para boyce serve --http

BOYCE_STATEMENT_TIMEOUT_MS

Opcional

30000

Tiempo de espera por sentencia en ms (predeterminado: 30s)


Herramientas MCP

Herramienta

Descripción

ingest_source

Analiza un SemanticSnapshot desde un manifiesto dbt, proyecto dbt, LookML, DDL, SQLite, Django, SQLAlchemy, Prisma, CSV o Parquet.

ingest_definition

Almacena una definición de negocio certificada: se inyecta automáticamente en el momento de la consulta.

get_schema

Devuelve el contexto completo del esquema + formato de documentos StructuredFilter. Utilizado por hosts MCP para que el LLM del host pueda construir consultas sin una clave API de Boyce.

ask_boyce

Pipeline completo NL → SQL: planificador de consultas (LiteLLM) → kernel determinista → verificación de trampa NULL → pre-vuelo EXPLAIN.

validate_sql

Valida SQL escrito a mano: pre-vuelo EXPLAIN, lint de Redshift, riesgo NULL, sin ejecutar.

query_database

Ejecuta un SELECT de solo lectura contra la base de datos en vivo. Las operaciones de escritura se rechazan en dos capas independientes.

profile_data

% de nulos, conteo de distintos, mín/máx para cualquier columna: detecta problemas de calidad de datos antes de que afecten los resultados de la consulta.

check_health

Verificación de salud operativa: conectividad de BD, frescura de instantáneas, comandos de corrección accionables. Llame cuando las consultas fallen inesperadamente.


Arquitectura

SemanticSnapshot (JSON)
        │
        ▼  ingest_source
 ┌─────────────────────────────────────────────┐
 │          SemanticGraph (NetworkX)            │  ← in-memory, loaded per session
 │  nodes = entities (tables/views/dbt models) │
 │  edges = joins  (weighted by confidence)    │
 └─────────────────────────────────────────────┘
        │                         │
        ▼  ask_boyce              ▼  (internal)
  QueryPlanner                 Dijkstra
  (LiteLLM)                    join resolver
  NL → StructuredFilter             │
        │                           │
        └──────────┬────────────────┘
                   ▼
           kernel.process_request()          ← ZERO LLM HERE
           SQLBuilder (dialect-aware)
                   │
                   ▼
           EXPLAIN pre-flight                ← Query Verification
           (PostgresAdapter)
                   │
                   ▼
            SQL + validation result

Soporte de dialectos: redshift, postgres, duckdb, bigquery

Rieles de seguridad de Redshift (safety.py): Linting automático para LATERAL, JSONB, REGEXP_COUNT, patrones regex de búsqueda anticipada y reescrituras de conversión numérica para Redshift 1.0 (PG 8.0.2).


CLI de escaneo

# Scan a single file
boyce scan demo/magic_moment/manifest.json

# Scan a directory (auto-detects all parseable sources)
boyce scan ./my-project/ -v

# Save snapshots for MCP server use
boyce scan ./my-project/ --save

10 analizadores: manifiesto dbt, proyecto dbt, LookML, SQLite, DDL, CSV, Parquet, Django, SQLAlchemy, Prisma.


Verificar la instalación

# Unit tests — no DB required, runs in ~4 seconds
python boyce/tests/verify_eyes.py

# Expected output:
# Ran 15 tests in 3.5s
# OK
# ✅  All checks passed.

Formato SemanticSnapshot

La herramienta ingest_source acepta un diccionario JSON SemanticSnapshot. Ejemplo mínimo:

{
  "snapshot_id": "<sha256>",
  "source_system": "dbt",
  "entities": {
    "entity:orders": {
      "id": "entity:orders",
      "name": "orders",
      "schema": "public",
      "fields": ["field:orders:order_id", "field:orders:revenue"]
    }
  },
  "fields": {
    "field:orders:order_id": {
      "id": "field:orders:order_id",
      "entity_id": "entity:orders",
      "name": "order_id",
      "field_type": "ID",
      "data_type": "INTEGER"
    }
  },
  "joins": []
}

Consulte boyce/tests/live_fire/mock_snapshot.json para ver un ejemplo completo de campo/entidad.


Diseño del proyecto

boyce/                          ← PRIMARY — headless FastMCP server + pip package
├── boyce/
│   ├── server.py               ← MCP entry point (8 tools)
│   ├── kernel.py               ← Deterministic SQL kernel
│   ├── graph.py                ← SemanticGraph (NetworkX)
│   ├── safety.py               ← Redshift compatibility rails
│   ├── types.py                ← Protocol contract (Pydantic)
│   ├── scan.py                 ← Scan CLI (boyce scan)
│   ├── connections.py          ← DSN persistence (ConnectionStore)
│   ├── doctor.py               ← Environment diagnostics (boyce doctor)
│   ├── sql/                    ← SQLBuilder, dialect layer, join resolver
│   ├── parsers/                ← 10 parsers (dbt, lookml, ddl, sqlite, csv, etc.)
│   ├── planner/                ← QueryPlanner (LiteLLM → StructuredFilter)
│   └── adapters/               ← PostgresAdapter (Eyes)
└── tests/
    ├── verify_eyes.py          ← 15-test suite, no DB required
    ├── test_parsers.py         ← Parser tests (all 10 parsers)
    ├── test_scan.py            ← Scan CLI tests
    └── live_fire/              ← Docker Compose integration tests

Estado

Capacidad

Estado

NL → SQL (kernel determinista)

Operativo

SemanticGraph (resolución de uniones)

Operativo

10 analizadores de fuente

Operativo

CLI de escaneo (boyce scan)

Operativo

PostgresAdapter (solo lectura)

Operativo

Validación de pre-vuelo EXPLAIN

Operativo

Detección de trampa NULL

Operativo

Linting de seguridad Redshift 1.0

Operativo

Persistencia de instantáneas entre reinicios

Operativo

Registro de auditoría (JSONL solo adjuntar)

Operativo

Definiciones de negocio (ingest_definition)

Operativo

Persistencia DSN (ConnectionStore)

Operativo

Diagnóstico de entorno (boyce doctor / check_health)

Operativo

Fusión de múltiples instantáneas

Planificado


Soporte


Copyright 2026 Convergent Methods, LLC. Licencia MIT.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides comprehensive SQLite database interaction for AI agents, including data manipulation, schema inspection, and automated query logging. It features a unique context preservation pattern that uses a dedicated meta-table to help autonomous agents maintain self-documenting database architectures.
    36
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to execute SQL queries and introspect PostgreSQL schemas, tables, and indexes with read-only safety by default. Supports optional write operations and works with Claude, LangChain, and other agents via stdio or HTTP transports.
  • A
    license
    Not graded
    quality
    A
    maintenance
    Secure SQL proxy for AI agents. Translates natural language to safe SQL via Claude, validates at the AST level (SELECT-only, no DDL/DML), enforces per-agent row-level security, and audit-logs every query.
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Enables safe, AI-driven database interactions with schema discovery, intent validation, and session memory, supporting multiple databases.
    14
    2
    AGPL 3.0

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/boyce-io/boyce'

If you have feedback or need assistance with the MCP directory API, please join our Discord server