Skip to main content
Glama

mcp-tenant-isolation

Statischer Analysescanner für Multi-Tenant-SaaS- und MCP-Server-Code. Erkennt mandantenübergreifende Datenlecks, bevor sie die Produktion erreichen.

57 deterministische Regeln für Mandantenisolation, Datenbankabfragefilter, IDOR, Cache-Schlüssel-Scoping, RLS, Schema-Lücken und MCP-spezifische Risiken (Tool-Sichtbarkeit, Cache-Präfix, Sitzungsbindung, Credential-Vault). Funktioniert mit Prisma, Drizzle, rohem SQL, Next.js, Express und Fastify. Enthält einen MCP-Server für die Integration von Claude Desktop und Cursor.

npm version npm downloads CI Docker License: MIT

Für wen ist das gedacht?

  • SaaS-Entwickler, die Multi-Tenant-Apps ausliefern und mandantenübergreifende Datenlecks erkennen müssen

  • MCP-Server-Entwickler, die Tools für mandantengebundene Daten entwickeln

  • Sicherheitsteams, die Mandantenisolation als Teil von CI/CD benötigen

  • KI-Agenten-Entwickler, die möchten, dass ihre Agenten Code auf Abruf scannen

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

Warum

Allzweck-Sicherheitsscanner (Snyk, Semgrep, CodeQL) verstehen keine Mandantenisolationsmuster oder MCP-Serverarchitektur. Mandantenübergreifende Datenlecks bleiben unentdeckt. Dieses Tool schließt diese Lücke mit 57 zweckgerichteten deterministischen Regeln.

Jede Regel ist deterministisch und reproduzierbar. Kein maschinelles Lernen, keine falschen Vermutungen. Jede Regel prüft spezifische Codemuster, das Vorhandensein von Guards und Datenflusspfade. Sie erhalten bei jedem Lauf dieselben Ergebnisse.

Installation

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

Schnellstart

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

Terminal Demo

Regeln

42 allgemeine Multi-Tenant-Regeln

Präfix

Kategorie

Anzahl

Schweregrad

Beschreibung

TCM

Verwaltung des Mandantenkontexts

6

Kritisch

Mandanten-ID aus Sitzungen, nicht aus Client-Eingaben. Kontextweitergabe über asynchrone Grenzen hinweg.

DBQ

Datenbankabfrage-Isolation

10

Kritisch

Jede Abfrage, die mandantengebundene Daten betrifft, muss einen Mandantenfilter enthalten.

IDOR

IDOR-Prävention

5

Kritisch

ID-basierte Abfragen müssen die Mandantenzugehörigkeit überprüfen.

CSI

Cache- und Sitzungsisolation

4

Hoch

Cache-Schlüssel und Sitzungsdaten müssen mandantenbezogen sein.

API

API-Sicherheit

3

Hoch

Mandantenbewusstes Rate Limiting und Antwort-Scoping.

FSI

Dateispeicher-Isolation

4

Hoch

S3-, Blob- und Dateisystemzugriff müssen mandantenbezogen sein.

LOG

Protokollierung und Audit

4

Mittel

Audit-Logs müssen den Mandantenkontext enthalten.

SCH

Schema und Migration

6

Hoch

Prisma-Modelle und SQL-Migrationen müssen Mandantenspalten enthalten.

15 MCP-spezifische Regeln

ID

Titel

Schweregrad

Beschreibung

MCP-001

Sichtbarkeitsbereich von Tools

Kritisch

Tool-Handler hat keinen mandantenbasierten Erlauben/Verweigern-Filter.

MCP-002

Cache-Schlüssel mit Mandantenpräfix

Kritisch

Tool-Ergebnisse ohne Mandantenpräfix zwischengespeichert.

MCP-003

Sitzungsbindung an Benutzer+Mandant

Kritisch

Sitzungs-ID als alleinige Autorisierung verwendet.

MCP-004

Token-Austausch (RFC 8693)

Hoch

Original-Token weitergeleitet anstelle von Token-Austausch.

MCP-005

Rate Limiting pro Mandant

Mittel

Kein Rate Limiting pro Mandant bei Tool-Aufrufen.

MCP-006

Vector-Store-Mandantennamespace

Hoch

Gemeinsamer Vector Store ohne Mandantennamespaces.

MCP-007

Tool-Beschreibungs-Injection

Mittel

Tool-Beschreibung könnte die Isolierung umgehen.

MCP-008

Credential-Vault-Mandantenbereich

Kritisch

Credential-Vault speichert Tokens ohne Mandantenbereich.

MCP-009

Gemeinsames Dienstkonto

Hoch

Ein einzelner gemeinsamer API-Schlüssel für alle Mandanten-API-Aufrufe.

MCP-010

Sitzungsbereinigung bei Trennung

Mittel

Keine deterministische Sitzungsbereinigung.

MCP-011

Telemetrie-Mandantenkennung

Niedrig

Telemetrie entfernt die Mandantenkennung.

MCP-012

Lokale Bindung (127.0.0.1)

Hoch

MCP-Server bindet an 0.0.0.0 statt an 127.0.0.1.

MCP-013

Dateisystem-Mandantenwurzel

Hoch

Tool-Handler greift ohne Mandantenwurzel auf das Dateisystem zu.

MCP-014

Mandantenübergreifendes Artefakt-Leck

Hoch

Artefaktspeicherung ohne Mandantenpräfix.

MCP-015

Dynamischer Tool-Namespace

Mittel

Tools ohne Mandantennamespace registriert.

Architektur

Die Scanner-Pipeline arbeitet in sechs Stufen:

  1. Parser - Babel-AST für TS/JS, Prisma-Schema-Parser, SQL-Migrationsparser, Erkennung von MCP-SDK-Imports

  2. IR- und Flussgraph - Zwischendarstellung, die Quellen, Senken, Guards, Routen und MCP-Tool-Definitionen erfasst

  3. Regel-Engine - 57 deterministische Regeln, die gegen die IR ausgewertet werden. Jede Regel definiert Quellen, Senken, erforderliche Guards

  4. False-Positive-Filter - Erkennung von Testdateien, Konfidenzbewertung, Musterverfeinerung

  5. Reporter - Terminal (mit Urteil), JSON, SARIF 2.1.0, KI-freundliches JSON (mit Behebungshinweisen), Markdown (teilbarer Bericht)

  6. CLI- und MCP-Server - mti-CLI mit den Befehlen scan/init/rules/suppress/baseline/mcp. Der MCP-Server stellt 4 Tools bereit

MCP-Server

Das Paket enthält einen MCP-Server für die KI-Agenten-Integration. Er läuft lokal über den Stdio-Transport (kein Hosting erforderlich):

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

Fügen Sie dies zu Ihrer Claude-Desktop-, Cursor- oder anderen MCP-Client-Konfiguration hinzu, damit Ihr KI-Agent auf Abruf Code auf Mandantenisolationsprobleme überprüfen kann.

MCP-Tools

Tool

Beschreibung

scan_tenant_isolation

Scannt einen Dateipfad oder Inline-Code. Gibt strukturierte Ergebnisse zurück.

list_tenant_isolation_rules

Gibt alle 57 Regeln mit Metadaten zurück. Nach Kategorie filterbar.

explain_tenant_isolation_rule

Gibt Regeldetails, OWASP-Zuordnung, CWE-IDs und Korrekturvorschläge zurück.

suppress_tenant_isolation_finding

Fügt eine Unterdrückung mit Grund und Ablaufdatum hinzu.

CI/CD-Integration

Option 1: Vorgefertigte GitHub Action (am einfachsten)

Fügen Sie Folgendes zu .github/workflows/tenant-isolation.yml hinzu:

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

Führt den Scan aus, lädt SARIF in GitHub Code Scanning hoch, erzeugt ein Markdown-Berichtsartefakt und bricht den Workflow ab, wenn HIGH- oder CRITICAL-Befunde erkannt werden.

Option 2: Manuell per npx

# .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

Exit-Codes

Code

Bedeutung

0

Keine Befunde

1

Befunde gefunden

2

Fehler (ungültige Konfiguration, Parsing-Fehler usw.)

GitHub-Code-Scanning-Integration

Wenn Sie die SARIF-Ausgabe mit github/codeql-action/upload-sarif@v3 hochladen, erscheinen die Befunde im Tab Sicherheit > Code-Scanning-Warnungen Ihres Repositorys. Dies funktioniert sowohl mit kostenlosen als auch mit Advanced-Security-aktivierten Repositorys.

Was passiert:

  1. mti scan --format sarif --output results.sarif erzeugt eine SARIF-2.1.0-Datei

  2. Die Aktion upload-sarif sendet sie an die Code-Scanning-API von GitHub

  3. Jeder Befund wird zu einer Code-Scanning-Warnung mit Datei, Zeile, Schweregrad und Behebungshinweis

  4. Warnungen können direkt in der GitHub-Benutzeroberfläche geschlossen, behoben oder nachverfolgt werden

  5. Pull-Request-Anmerkungen erscheinen automatisch für geänderte Dateien

Voraussetzungen:

  • permissions: security-events: write in Ihrem Workflow

  • Die SARIF-Datei muss vor dem Upload-Schritt erzeugt werden

Konfiguration

Erstellen Sie .mtirc.json im Projektstamm:

{
  "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"
}

Erweiterte Konfiguration

{
  "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"
}

Feld

Beschreibung

output

Standardausgabeformat: terminal, json, sarif, ai, markdown

framework

Framework-Hinweis: nextjs-app-router, nextjs-pages, express, fastify, auto

authHelpers

Benutzerdefinierte Namen von Auth-Funktionen zur Erkennung (reduziert False Positives)

tenantGuards

Benutzerdefinierte Namen von Mandanten-Guard-Variablen zusätzlich zu den Standardnamen

modelScopes

Modellbereichsklassifizierung überschreiben (userScoped, global, tenantScoped)

rulePacks

Pfade zu benutzerdefinierten Regelpaket-JSON-Dateien

Berichtsformate

Format

Flag

Anwendungsfall

Terminal

--format terminal (Standard)

Entwicklerkonsole mit Bestanden/Nicht bestanden-Urteil

JSON

--format json

Programmatische Nutzung, Weiterleitung an andere Tools

SARIF

--format sarif

GitHub Code Scanning, Azure DevOps

KI-JSON

--format ai

Nutzung durch KI-Agenten mit Behebungshinweisen und Kontext

Markdown

--format markdown

Teilbarer Bericht für PRs, Team-Review und Dokumentation

# 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

Tech-Stack

  • AST-Parsing: @babel/parser (TypeScript, JSX), Prisma-Schema-Parser, SQL-Migrationsparser

  • Regel-Engine: Deklaratives RuleSpec-Muster mit Guard-Erkennung und Beweisaufbau

  • CLI: Commander

  • MCP: @modelcontextprotocol/sdk (Stdio-Transport)

  • Ausgabe: Terminal (mit Urteil), JSON, SARIF 2.1.0, KI-JSON (mit Behebung), Markdown

  • Tests: Vitest

Roadmap

v1.6.2 (Aktuell)

  • 57 Regeln (42 allgemeine + 15 MCP-spezifische)

  • TypeScript- und JavaScript-Unterstützung

  • Prisma-Schema-Analyse

  • SQL-Migrationsanalyse (RLS, Mandantenspalten, Indizes)

  • CLI (mti) mit Terminal-, JSON-, SARIF-, KI-JSON- und Markdown-Ausgabe

  • Bestanden/Nicht bestanden-Urteil in Terminal- und Markdown-Berichten

  • Behebungshinweise für alle 57 Regeln

  • MCP-Server für KI-Agenten-Integration

  • Unterdrückungsrichtlinie mit Ablaufdatum

  • Basislinien-Verfolgung mit Diff

  • Schweregrad-Überschreibung in .mtirc.json

  • Benutzerdefinierte Regelpakete (JSON)

  • Konfigurierbare Auth-Helfer und Mandanten-Guards

  • Modellbereichsklassifizierung mit Konfigurationsüberschreibungen

  • Framework-Erkennung (Next.js, Express, Fastify)

  • Filterung von Nicht-Produktionspfaden

v1.7.0 (Geplant)

  • Python-Unterstützung (FastAPI, Django, Flask)

  • SQLAlchemy-ORM-Analyse

  • Watch-Modus (mti scan --watch)

  • VS-Code-Erweiterung

v2.0.0 (Zukunft)

  • Laufzeit-Testrahmenwerk für zwei Mandanten mit adversarischen Tests

  • Go- und Ruby-Sprachunterstützung

  • Inkrementelles Scannen mit AST-Cache

Lizenz

MIT. Frei und Open Source.

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