Skip to main content
Glama

mcp-tenant-isolation

Escáner de análisis estático para código SaaS multiinquilino y servidor MCP. Detecta fugas de datos entre inquilinos antes de llegar a producción.

57 reglas deterministas que cubren aislamiento de inquilinos, filtros de consultas en bases de datos, IDOR, delimitación de claves de caché, RLS, brechas de esquema y riesgos específicos de MCP (visibilidad de herramientas, prefijo de caché, vinculación de sesión, almacén de credenciales). Funciona con Prisma, Drizzle, SQL sin procesar, Next.js, Express y Fastify. Incluye un servidor MCP para integración con Claude Desktop y Cursor.

npm version npm downloads CI Docker License: MIT

¿Para quién es esto?

  • Creadores de SaaS que envían aplicaciones multiinquilino y necesitan detectar fugas de datos entre inquilinos

  • Desarrolladores de servidores MCP que construyen herramientas que manejan datos con alcance de inquilino

  • Equipos de seguridad que necesitan aislamiento de inquilinos como parte de CI/CD

  • Desarrolladores de agentes de IA que quieren que sus agentes escaneen código bajo demanda

Related MCP server: @squirex.dev/mcp-server

Por qué

Los escáneres de seguridad de propósito general (Snyk, Semgrep, CodeQL) no entienden los patrones de aislamiento de inquilinos ni la arquitectura de servidores MCP. Las fugas de datos entre inquilinos pasan desapercibidas. Esta herramienta llena ese vacío con 57 reglas deterministas diseñadas específicamente para ello.

Cada regla es determinista y reproducible. Sin aprendizaje automático, sin conjeturas falsas. Cada regla verifica patrones de código específicos, presencia de protecciones y rutas de flujo de datos. Obtienes los mismos resultados en cada ejecución.

Instalar

npm install -g mcp-tenant-isolation

# or use npx (no install needed)
npx mcp-tenant-isolation scan ./src

# or use Docker (no Node.js needed)
docker run --rm -v $(pwd):/code subodhkc/mcp-tenant-isolation scan /code/src

Inicio rápido

mti scan ./src
mti scan ./src --format sarif --output results.sarif
mti scan ./src --format markdown --output TENANT-ISOLATION-REPORT.md
mti scan ./src --format ai --output findings.json
mti scan ./src --severity HIGH
mti init

Demo

Demo en terminal

Reglas

42 Reglas generales para multiinquilino

Prefijo

Categoría

Conteo

Gravedad

Descripción

TCM

Gestión del contexto de inquilino

6

Crítico

ID de inquilino desde sesiones, no desde entrada del cliente. Propagación del contexto a través de límites asíncronos.

DBQ

Aislamiento de consultas a la BD

10

Crítico

Toda consulta que toque datos con alcance de inquilino debe incluir un filtro de inquilino.

IDOR

Prevención de IDOR

5

Crítico

Las búsquedas por ID deben verificar la pertenencia al inquilino.

CSI

Aislamiento de caché y sesión

4

Alto

Las claves de caché y los datos de sesión deben tener alcance de inquilino.

API

Seguridad de API

3

Alto

Limitación de tasa consciente de inquilino y delimitación de respuestas.

FSI

Aislamiento de almacenamiento de archivos

4

Alto

El acceso a S3, Blob y sistema de archivos debe tener alcance de inquilino.

LOG

Registro y auditoría

4

Medio

Los registros de auditoría deben incluir el contexto de inquilino.

SCH

Esquema y migraciones

6

Alto

Los modelos de Prisma y las migraciones SQL deben incluir columnas de inquilino.

15 Reglas específicas de MCP

ID

Título

Gravedad

Descripción

MCP-001

Delimitación de visibilidad de herramientas

Crítico

El manipulador de herramientas no tiene un filtro de permiso/rechazo basado en inquilino.

MCP-002

Prefijo de inquilino en claves de caché

Crítico

Resultados de herramientas almacenados en caché sin prefijo de inquilino.

MCP-003

Vinculación de sesión a usuario+inquilino

Crítico

ID de sesión utilizado como única autorización.

MCP-004

Intercambio de tokens (RFC 8693)

Alto

Token original reenviado en lugar de intercambio de tokens.

MCP-005

Limitación de tasa por inquilino

Medio

Sin limitación de tasa por inquilino en las llamadas a herramientas.

MCP-006

Espacio de nombres de inquilino en almacén de vectores

Alto

Almacén de vectores compartido sin espacios de nombres de inquilino.

MCP-007

Inyección en descripción de herramienta

Medio

La descripción de la herramienta podría omitir el aislamiento.

MCP-008

Delimitación de inquilino en almacén de credenciales

Crítico

El almacén de credenciales guarda tokens sin delimitación de inquilino.

MCP-009

Cuenta de servicio compartida

Alto

Una única clave API compartida para todas las llamadas API de inquilinos.

MCP-010

Limpieza de sesión al desconectar

Medio

Sin limpieza determinista de sesiones.

MCP-011

Identificador de inquilino en telemetría

Bajo

La telemetría elimina el identificador de inquilino.

MCP-012

Enlace local (127.0.0.1)

Alto

El servidor MCP se vincula a 0.0.0.0 en lugar de 127.0.0.1.

MCP-013

Raíz de sistema de archivos por inquilino

Alto

El manipulador de herramientas accede al sistema de archivos sin raíz de inquilino.

MCP-014

Fuga de artefactos entre inquilinos

Alto

Almacenamiento de artefactos sin prefijo de inquilino.

MCP-015

Espacio de nombres dinámico de herramientas

Medio

Herramientas registradas sin espacio de nombres de inquilino.

Arquitectura

El flujo del escáner funciona en seis etapas:

  1. Analizadores sintácticos - AST de Babel para TS/JS, analizador de esquema Prisma, analizador de migraciones SQL, detección de importación del SDK de MCP

  2. IR y grafo de flujo - Representación intermedia que captura fuentes, sumideros, protecciones, rutas, definiciones de herramientas MCP

  3. Motor de reglas - 57 reglas deterministas evaluadas contra el IR. Cada regla define fuentes, sumideros, protecciones requeridas

  4. Filtro de falsos positivos - Detección de archivos de prueba, puntuación de confianza, refinamiento de patrones

  5. Generadores de informes - Terminal (con veredicto), JSON, SARIF 2.1.0, JSON amigable para IA (con sugerencias de corrección), Markdown (informe compartible)

  6. CLI y servidor MCP - CLI mti con comandos scan/init/rules/suppress/baseline/mcp. El servidor MCP expone 4 herramientas

Servidor MCP

El paquete incluye un servidor MCP para integración con agentes de IA. Se ejecuta localmente mediante transporte stdio (sin necesidad de alojamiento):

{
  "mcpServers": {
    "tenant-isolation": {
      "command": "npx",
      "args": ["-y", "mcp-tenant-isolation", "mcp"]
    }
  }
}

Añade esto a la configuración de tu cliente MCP (Claude Desktop, Cursor, etc.) para que tu agente de IA pueda escanear código en busca de problemas de aislamiento de inquilinos bajo demanda.

Herramientas MCP

Herramienta

Descripción

scan_tenant_isolation

Escanea una ruta de archivo o código en línea. Devuelve hallazgos estructurados.

list_tenant_isolation_rules

Devuelve las 57 reglas con metadatos. Filtrable por categoría.

explain_tenant_isolation_rule

Devuelve detalles de la regla, mapeo OWASP, ID de CWE, sugerencias de corrección.

suppress_tenant_isolation_finding

Agrega una supresión con motivo y fecha de expiración.

Integración CI/CD

Opción 1: Acción predefinida de GitHub (más fácil)

Añade esto a .github/workflows/tenant-isolation.yml:

name: Tenant Isolation Scan
on: [push, pull_request]
jobs:
  scan:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      security-events: write
    steps:
      - uses: actions/checkout@v4
      - uses: subodhkc/mcp-tenant-isolation@v1
        with:
          path: ./src
          severity: HIGH
          fail-on: HIGH

Ejecuta el escaneo, sube SARIF a GitHub Code Scanning, genera un artefacto de informe en Markdown y falla el flujo de trabajo si se detectan hallazgos de gravedad ALTA o CRÍTICA.

Opción 2: npx manual

# .github/workflows/tenant-isolation.yml
name: Tenant Isolation Scan
on: [push, pull_request]
jobs:
  scan:
    runs-on: ubuntu-latest
    permissions:
      contents: read
      security-events: write
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 20
      - run: npx mcp-tenant-isolation scan ./src --format sarif --output results.sarif
      - uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: results.sarif

Códigos de salida

Código

Significado

0

Sin hallazgos

1

Hallazgos encontrados

2

Error (configuración inválida, error de análisis, etc.)

Integración con GitHub Code Scanning

Cuando subes la salida SARIF usando github/codeql-action/upload-sarif@v3, los hallazgos aparecen en la pestaña Seguridad > Alertas de escaneo de código de tu repositorio. Esto funciona tanto con repositorios gratuitos como con aquellos habilitados para Advanced Security.

Qué sucede:

  1. mti scan --format sarif --output results.sarif genera un archivo SARIF 2.1.0

  2. La acción upload-sarif lo envía a la API de escaneo de código de GitHub

  3. Cada hallazgo se convierte en una alerta de escaneo de código con archivo, línea, gravedad y sugerencia de corrección

  4. Las alertas pueden descartarse, corregirse o rastrearse directamente en la interfaz de GitHub

  5. Las anotaciones en solicitudes de extracción aparecen automáticamente en los archivos modificados

Requisitos:

  • permissions: security-events: write en tu flujo de trabajo

  • El archivo SARIF debe generarse antes del paso de subida

Configuración

Crea .mtirc.json en la raíz de tu proyecto:

{
  "rules": {
    "severity": {
      "DBQ-001": "HIGH",
      "MCP-001": "CRITICAL"
    },
    "exclude": ["DBQ-010"]
  },
  "paths": {
    "include": ["src/**/*"],
    "exclude": ["**/*.test.ts", "**/*.spec.ts"]
  },
  "suppressions": ".mti-suppressions.json",
  "baseline": ".mti-baseline.json"
}

Configuración avanzada

{
  "rules": {
    "severity": { "DBQ-001": "HIGH" },
    "exclude": ["DBQ-010"]
  },
  "paths": {
    "include": ["src/**/*"],
    "exclude": ["**/*.test.ts"]
  },
  "output": "terminal",
  "framework": "nextjs-app-router",
  "authHelpers": ["requireAuth", "getServerSession", "withAuth"],
  "tenantGuards": ["organizationId", "tenantId", "workspaceId"],
  "modelScopes": {
    "userScoped": ["User", "UserSession"],
    "global": ["Tenant", "AuditLog"]
  },
  "rulePacks": ["./custom-rules.json"],
  "suppressions": ".mti-suppressions.json",
  "baseline": ".mti-baseline.json"
}

Campo

Descripción

output

Formato de salida predeterminado: terminal, json, sarif, ai, markdown

framework

Sugerencia de framework: nextjs-app-router, nextjs-pages, express, fastify, auto

authHelpers

Nombres de funciones de autenticación personalizadas a detectar (reduce falsos positivos)

tenantGuards

Nombres de variables de protección de inquilino personalizadas más allá de los valores predeterminados

modelScopes

Sobrescribe la clasificación de alcance del modelo (userScoped, global, tenantScoped)

rulePacks

Rutas a archivos JSON de paquetes de reglas personalizadas

Formatos de informe

Formato

Bandera

Caso de uso

Terminal

--format terminal (predeterminado)

Consola para desarrolladores con veredicto de aprobado/rechazado

JSON

--format json

Consumo programático, canalización a otras herramientas

SARIF

--format sarif

GitHub Code Scanning, Azure DevOps

AI JSON

--format ai

Consumo por agentes de IA con sugerencias de corrección y contexto

Markdown

--format markdown

Informe compartible para solicitudes de extracción, revisión en equipo, documentación

# Generate a Markdown report for a PR
mti scan ./src --format markdown --output TENANT-ISOLATION-REPORT.md

# Upload SARIF to GitHub Code Scanning
mti scan ./src --format sarif --output results.sarif

Stack tecnológico

  • Análisis AST: @babel/parser (TypeScript, JSX), analizador de esquema Prisma, analizador de migraciones SQL

  • Motor de reglas: patrón declarativo RuleSpec con detección de protecciones y construcción de evidencia

  • CLI: Commander

  • MCP: @modelcontextprotocol/sdk (transporte stdio)

  • Salida: Terminal (con veredicto), JSON, SARIF 2.1.0, AI JSON (con corrección), Markdown

  • Pruebas: Vitest

Hoja de ruta

v1.6.2 (Actual)

  • 57 reglas (42 generales + 15 específicas de MCP)

  • Soporte para TypeScript y JavaScript

  • Análisis de esquemas Prisma

  • Análisis de migraciones SQL (RLS, columnas de inquilino, índices)

  • CLI (mti) con salida en terminal, JSON, SARIF, AI JSON, Markdown

  • Veredicto de aprobado/rechazado en informes de terminal y Markdown

  • Sugerencias de corrección para las 57 reglas

  • Servidor MCP para integración con agentes de IA

  • Política de supresión con fecha de expiración

  • Seguimiento de línea base con diff

  • Sobrescritura de gravedad en .mtirc.json

  • Paquetes de reglas personalizadas (JSON)

  • Ayudantes de autenticación y protecciones de inquilino configurables

  • Clasificación de alcance de modelo con sobrescrituras de configuración

  • Detección de framework (Next.js, Express, Fastify)

  • Filtrado de rutas que no son de producción

v1.7.0 (Planificado)

  • Soporte para Python (FastAPI, Django, Flask)

  • Análisis de ORM SQLAlchemy

  • Modo de vigilancia (mti scan --watch)

  • Extensión para VS Code

v2.0.0 (Futuro)

  • Banco de pruebas adversarial de dos inquilinos en tiempo de ejecución

  • Soporte para los lenguajes Go y Ruby

  • Escaneo incremental con caché de AST

Enlaces

Licencia

MIT. Gratuito y de código abierto.

A
license - permissive license
-
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (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
    A
    quality
    A
    maintenance
    Security MCP server with 300+ rules for AI-generated code. Scans Next.js, Supabase, Clerk, Stripe, Prisma, Hono, GraphQL and 20+ modules. Zero config, runs locally.
    39
    604
    5
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    MCP server that scans Salesforce Agentforce metadata for security vulnerabilities using 61+ SAST rules, integrating into AI coding workflows to guard against OWASP LLM top 10 risks.
    16
    34
    Cryptographic Autonomy 1.0 (Combined Work Exception)
  • A
    license
    A
    quality
    A
    maintenance
    MCP server for Cursor that scans codebases for security issues including hardcoded secrets, SAST, vulnerable dependencies, and IaC misconfigurations.
    7
    MIT

View all related MCP servers

Related MCP Connectors

  • Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.

  • Security scanner for MCP servers. Detect vulnerabilities, prompt injection, and tool poisoning.

  • Hosted MCP server for structured code review passes on human- and AI-written code. Free tier.

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/actions-marketplace-validations/subodhkc_mcp-tenant-isolation'

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