Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.1.0a3 instead.
Reason given by maintainers: rango de sqlglot permitía versiones con un bypass del guard de SQL

nz-mcp

Servidor MCP (Model Context Protocol) para IBM Netezza Performance Server. Permite que asistentes IA (Claude Desktop, Claude Code, Cursor, etc.) consulten Netezza con tools de responsabilidad única y permisos granulares por perfil.

🇬🇧 English version: README.en.md

Estado: v0.1 en construcción. Desarrollo 100 % asistido por IA siguiendo AGENTS.md.

¿Qué hace?

  • Expone herramientas seguras para listar bases de datos, schemas, tablas, vistas y procedimientos.
  • Ejecuta SELECT controlados con LIMIT forzado y timeout.
  • Habilita INSERT/UPDATE/DELETE y DDL solo si el perfil lo autoriza.
  • Permite clonar procedimientos almacenados entre bases.
  • Tres barreras defensivas: tools single-purpose → sql_guard (sqlglot) → grants Netezza.

Requisitos

  • Python 3.11+
  • Acceso a Netezza NPS 11.x (probado con Release 11.2.1.11-IF1)
  • Conectividad a Netezza (VPN si aplica — el MCP corre en tu máquina local)
  • Cliente MCP: Claude Desktop, Claude Code, Cursor, Windsurf, VS Code MCP, etc.

Instalación

  1. Recomendada — pipx (aisla dependencias; evita choques de typer/click con otros CLI globales):

    pipx install nz-mcp
    nz-mcp init
    

    Versión de desarrollo (último main, sin pasar por PyPI): pipx install git+https://github.com/Oscarsp15/nz-mcp.git.

  2. Desarrollo — clona el repo y usa un venv:

    python -m venv .venv
    .venv\Scripts\activate
    pip install -e ".[dev]"
    
  3. Global con pip — posible pero desaconsejada: otros paquetes pueden fijar versiones viejas de typer/click y romper el arranque del CLI.

Rutas completas al ejecutable para Claude Desktop (pipx vs .venv) y ejemplos de claude_desktop_config.json: docs/guides/claude-desktop-setup.md.

Campos opcionales por perfil en ~/.nz-mcp/profiles.toml (se editan a mano): security_level (0-3, default 2 = negocia SSL con fallback a claro; 3 = SSL obligatorio) y ca_certs (ruta a un bundle CA en PEM para verificar el certificado del servidor; si se omite, la conexión SSL se establece sin verificar el certificado). Detalle en docs/architecture/security-model.md.

Configuración rápida en Claude Desktop

claude_desktop_config.json (ajusta command al nz-mcp de pipx o del venv, ver guía arriba):

{
  "mcpServers": {
    "netezza": {
      "command": "nz-mcp",
      "args": ["serve"]
    }
  }
}

Reinicia Claude Desktop y pídele: "lista las bases de datos de mi Netezza".

Diagnóstico

Para revisar el entorno local (versión de Python, rutas de config, perfiles sin credenciales, keyring) sin conectar a Netezza:

nz-mcp doctor

Ejemplo de salida literal (referencia Linux, Python 3.11; rutas y perfiles ficticios demo / dev / prod — coincide con format_diagnostic_report del paquete):

Diagnóstico local (nz-mcp doctor)

Versión nz-mcp: 0.1.0a0
Versión de Python: 3.11.9
Plataforma: Linux-6.8.0-generic-x86_64-with-glibc2.39
Directorio de configuración: /home/demo/.nz-mcp
  Existe: sí
  Escribible: sí
Ruta de perfiles: /home/demo/.nz-mcp/profiles.toml
  Existe: sí
Carga de perfiles OK: sí
Número de perfiles: 2
Nombres de perfiles: dev, prod
Perfil activo: prod
Backend de keyring: SecretService Keyring
  Disponible: sí
Idioma (locale): es

Código de salida: 0 si el entorno es usable; 1 si hay un problema crítico (p. ej. keyring no disponible).

Diagnóstico de catálogo

Tras configurar un perfil y guardar la contraseña en el keyring, puedes validar que todas las consultas del catálogo (incluidas las de catalog_overrides en profiles.toml) se ejecutan contra tu Netezza con parámetros dummy seguros:

nz-mcp probe-catalog
nz-mcp probe-catalog --profile mi_perfil
nz-mcp probe-catalog --json

Mide duración y filas devueltas por query; si una consulta solo falla porque no existe un objeto de prueba (p. ej. tabla ficticia), se marca como advertencia, no como fallo duro. Código de salida: 0 si no hay errores graves, 1 si alguna query falla de forma definitiva o no se puede conectar.

Tools disponibles (27)

Ver el contrato completo en docs/architecture/tools-contract.md.

Categoría Tools
Lectura nz_query_select, nz_explain, nz_list_databases, nz_list_schemas, nz_list_tables, nz_describe_table, nz_table_sample, nz_table_stats, nz_get_table_ddl, nz_list_views, nz_get_view_ddl, nz_list_procedures, nz_describe_procedure, nz_get_procedure_ddl, nz_export_ddl, nz_get_procedure_section
Escritura nz_insert, nz_insert_select, nz_update, nz_delete
DDL / SP nz_create_table, nz_create_table_as, nz_truncate, nz_drop_table, nz_clone_procedure
Sesión nz_current_profile, nz_switch_profile

Seguridad

Resumen del modelo en docs/architecture/security-model.md. Reportes de vulnerabilidad: SECURITY.md.

Desarrollo

Este repositorio se desarrolla principalmente con agentes IA. Si quieres contribuir (humano o IA), lee:

Licencia

MIT

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nz_mcp-0.1.0a1.tar.gz (302.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nz_mcp-0.1.0a1-py3-none-any.whl (121.5 kB view details)

Uploaded Python 3

File details

Details for the file nz_mcp-0.1.0a1.tar.gz.

File metadata

  • Download URL: nz_mcp-0.1.0a1.tar.gz
  • Upload date:
  • Size: 302.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for nz_mcp-0.1.0a1.tar.gz
Algorithm Hash digest
SHA256 8a007202be0cff57d190a3cd1dc36620518110f31d5988d2f7375fd2a8531ce0
MD5 7a90e34da76e3f131ab936637e5d84e0
BLAKE2b-256 792f587e1e7355eb8f3a9f2a878ac9b2eda728beddd9187d0149c3474c86ed19

See more details on using hashes here.

Provenance

The following attestation bundles were made for nz_mcp-0.1.0a1.tar.gz:

Publisher: release.yml on Oscarsp15/nz-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file nz_mcp-0.1.0a1-py3-none-any.whl.

File metadata

  • Download URL: nz_mcp-0.1.0a1-py3-none-any.whl
  • Upload date:
  • Size: 121.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for nz_mcp-0.1.0a1-py3-none-any.whl
Algorithm Hash digest
SHA256 506b7a74f810d04c3967639a2f16bdad0da354b7d6e8b376716d0493bb9f50bf
MD5 77fd9c7b13c1ccc00f8b9b6d9f73f148
BLAKE2b-256 0aad260d0fff798024539fb8fe30079f7c2d1ce7ff2f007d84e62574f87df311

See more details on using hashes here.

Provenance

The following attestation bundles were made for nz_mcp-0.1.0a1-py3-none-any.whl:

Publisher: release.yml on Oscarsp15/nz-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.0a2

2 files

This release

0.1.0a1 This release

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page