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
SELECTcontrolados conLIMITforzado ytimeout. - Habilita
INSERT/UPDATE/DELETEy 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
-
Recomendada — pipx (aisla dependencias; evita choques de
typer/clickcon 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. -
Desarrollo — clona el repo y usa un venv:
python -m venv .venv .venv\Scripts\activate pip install -e ".[dev]"
-
Global con
pip— posible pero desaconsejada: otros paquetes pueden fijar versiones viejas detyper/clicky 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:
AGENTS.md— router central, reglas inviolables.CONTRIBUTING.md— setup, idioma, flujo.docs/standards/— coding, testing, git, i18n, pr-audit, issue-workflow, maintainability.
Licencia
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8a007202be0cff57d190a3cd1dc36620518110f31d5988d2f7375fd2a8531ce0
|
|
| MD5 |
7a90e34da76e3f131ab936637e5d84e0
|
|
| BLAKE2b-256 |
792f587e1e7355eb8f3a9f2a878ac9b2eda728beddd9187d0149c3474c86ed19
|
Provenance
The following attestation bundles were made for nz_mcp-0.1.0a1.tar.gz:
Publisher:
release.yml on Oscarsp15/nz-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nz_mcp-0.1.0a1.tar.gz -
Subject digest:
8a007202be0cff57d190a3cd1dc36620518110f31d5988d2f7375fd2a8531ce0 - Sigstore transparency entry: 2718248216
- Sigstore integration time:
-
Permalink:
Oscarsp15/nz-mcp@004a4b3c2a634b68d0abcd4b5f66a0c918d56258 -
Branch / Tag:
refs/tags/v0.1.0-alpha.1 - Owner: https://github.com/Oscarsp15
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@004a4b3c2a634b68d0abcd4b5f66a0c918d56258 -
Trigger Event:
push
-
Statement type:
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
506b7a74f810d04c3967639a2f16bdad0da354b7d6e8b376716d0493bb9f50bf
|
|
| MD5 |
77fd9c7b13c1ccc00f8b9b6d9f73f148
|
|
| BLAKE2b-256 |
0aad260d0fff798024539fb8fe30079f7c2d1ce7ff2f007d84e62574f87df311
|
Provenance
The following attestation bundles were made for nz_mcp-0.1.0a1-py3-none-any.whl:
Publisher:
release.yml on Oscarsp15/nz-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
nz_mcp-0.1.0a1-py3-none-any.whl -
Subject digest:
506b7a74f810d04c3967639a2f16bdad0da354b7d6e8b376716d0493bb9f50bf - Sigstore transparency entry: 2718248934
- Sigstore integration time:
-
Permalink:
Oscarsp15/nz-mcp@004a4b3c2a634b68d0abcd4b5f66a0c918d56258 -
Branch / Tag:
refs/tags/v0.1.0-alpha.1 - Owner: https://github.com/Oscarsp15
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@004a4b3c2a634b68d0abcd4b5f66a0c918d56258 -
Trigger Event:
push
-
Statement type: