Isthmus

Servidor MCP local que conecta modelos de IA a cualquier base de datos PostgreSQL. Descubre esquemas, explora relaciones, perfila tablas y ejecuta consultas SQL de solo lectura, enmascaramiento de columnas por políticas,... todo funcionando localmente.

Documentación

Isthmus

El servidor MCP para tu base de datos

CI Go Report Card Latest Release GitHub Stars Go Docker

Documentación · Inicio rápido · Instalación · Problemas


Isthmus es un servidor local MCP que brinda a los modelos de IA acceso seguro y de solo lectura a tu base de datos PostgreSQL. Un solo binario, se ejecuta en tu máquina, las credenciales nunca salen de ella.

Isthmus demo

Inicio rápido

# 1. Install (pick one)
curl -fsSL https://isthmus.dev/install.sh | sh   # install script
docker pull guillermosasso/isthmus                # or Docker Hub

# 2. Add to your MCP client config (Claude Desktop example)
{
  "mcpServers": {
    "isthmus": {
      "command": "isthmus",
      "env": {
        "DATABASE_URL": "postgres://user:pass@localhost:5432/mydb"
      }
    }
  }
}
# 3. Ask your AI: "What tables are in my database?"

Consulta la guía de inicio rápido para la configuración paso a paso con Claude Desktop, Cursor, Windsurf y más.

Docker

Las imágenes se publican en Docker Hub en cada versión (linux/amd64 y linux/arm64).

docker run --rm \
  -e DATABASE_URL="postgres://user:pass@host.docker.internal:5432/mydb" \
  guillermosasso/isthmus

O fija una versión específica:

docker pull guillermosasso/isthmus:0.1.1

Para usar con Claude Desktop, apunta la configuración de MCP al contenedor:

{
  "mcpServers": {
    "isthmus": {
      "command": "docker",
      "args": ["run", "--rm", "-i",
        "-e", "DATABASE_URL=postgres://user:pass@host.docker.internal:5432/mydb",
        "guillermosasso/isthmus"
      ]
    }
  }
}

Características

  • Descubrimiento de esquemas — explora esquemas, tablas, columnas, claves foráneas e índices (documentación)
  • Consultas de solo lectura — ejecuta SQL con límites de filas y tiempos de espera en el servidor (documentación)
  • Enmascaramiento de columnas — protege la PII con máscaras de redacción, hash, parciales o nulas por columna — aplicadas en el servidor (documentación)
  • Motor de políticas — enriquece tu esquema con contexto empresarial para que la IA escriba mejor SQL (documentación)
  • Validación de SQL — lista blanca a nivel de AST mediante el analizador pg_query — solo se permiten SELECT y EXPLAIN (documentación)
  • Transporte HTTP — sirve MCP sobre HTTP para clientes web, ChatGPT Desktop y acceso remoto (documentación)
  • OpenTelemetry — trazado distribuido y métricas para el rendimiento de consultas y la supervisión de errores (documentación)
  • Funciona con cualquier cliente MCP — Claude Desktop, Cursor, Windsurf, Gemini CLI, VS Code, ChatGPT Desktop (configuración de clientes)

Cómo funciona

flowchart TB
    Claude["Claude Desktop"] & Cursor["Cursor / VS Code"] -->|stdio| STDIO
    ChatGPT["ChatGPT / Web"] -->|HTTP| HTTP

    subgraph Transport["Transport"]
        STDIO["stdio"]
        HTTP["HTTP + Auth"]
    end

    STDIO & HTTP --> Router

    subgraph Tools["MCP Tools"]
        Router{{"router"}}
        Router --> Discover["discover"]
        Router --> Describe["describe_table"]
        Router --> Query["query"]
    end

    Discover & Describe --> Explorer

    subgraph Schema["Schema Explorer"]
        Explorer["Catalog Introspection"]
        Explorer --> Policy["Policy Engine"]
    end

    Query --> Validate

    subgraph Security["Security Pipeline"]
        direction TB
        Validate["AST Validation"] --> ReadOnly["Read-Only Tx"]
        ReadOnly --> RowLimit["Row Limit"]
        RowLimit --> Timeout["Timeout"]
    end

    Security --> PG[("PostgreSQL")]
    Schema --> PG

    PG --> Mask

    subgraph Post["Post-Processing"]
        direction TB
        Mask["PII Masking"] --> Sanitize["Error Sanitization"]
    end

    Post -.-> Audit["Audit Log"]
    Post -.-> OTel["OpenTelemetry"]
    Post --> Response["Safe Response"]
    Response --> Claude & Cursor & ChatGPT

    classDef client fill:#e8f4f8,stroke:#2196F3,color:#1565C0
    classDef transport fill:#fff3e0,stroke:#FF9800,color:#E65100
    classDef tools fill:#e8eaf6,stroke:#3F51B5,color:#283593
    classDef security fill:#fce4ec,stroke:#E53935,color:#b71c1c
    classDef explorer fill:#e8f5e9,stroke:#4CAF50,color:#1B5E20
    classDef postproc fill:#f3e5f5,stroke:#9C27B0,color:#4A148C
    classDef db fill:#fff8e1,stroke:#FFC107,color:#F57F17
    classDef obs fill:#eceff1,stroke:#607D8B,color:#37474F
    classDef response fill:#e0f2f1,stroke:#009688,color:#004D40

    class Claude,Cursor,ChatGPT client
    class STDIO,HTTP transport
    class Router,Discover,Describe,Query tools
    class Validate,ReadOnly,RowLimit,Timeout security
    class Explorer,Policy explorer
    class Mask,Sanitize postproc
    class PG db
    class Audit,OTel obs
    class Response response

Isthmus se sitúa entre tu cliente de IA y tu base de datos. Cada solicitud pasa por un pipeline de seguridad — el SQL se valida a nivel de AST usando el propio analizador de PostgreSQL, las consultas se ejecutan en transacciones de solo lectura con límites de filas y tiempos de espera en el servidor, y las columnas con PII se enmascaran antes de que los resultados lleguen a la IA. El motor de políticas enriquece los metadatos del esquema con contexto empresarial para que la IA escriba mejor SQL. Toda la actividad se registra en un registro de auditoría de solo anexión con trazado opcional de OpenTelemetry.

Herramientas MCP

HerramientaQué hace
list_schemasDescubre los esquemas de base de datos disponibles
list_tablesTablas con recuentos de filas, tamaños y descripciones
describe_tableColumnas, tipos, claves, índices y estadísticas
profile_tableAnálisis profundo: filas de muestra, uso de disco, relaciones inferidas
queryEjecuta SQL de solo lectura, resultados como JSON
explain_queryPlanes de ejecución de PostgreSQL con ANALYZE opcional

Referencia completa: isthmus.dev/tools/overview

Documentación

Visita isthmus.dev para la documentación completa:

Contribuciones

Consulta CONTRIBUTING.md. Necesitarás Go 1.25+ y Docker para las pruebas de integración.

make build        # Build binary
make test         # All tests (needs Docker)
make test-short   # Unit tests only
make lint         # Lint

Licencia

Apache 2.0