mcp-tenant-isolation
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.
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/srcSchnellstart
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 initDemo
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:
Parser - Babel-AST für TS/JS, Prisma-Schema-Parser, SQL-Migrationsparser, Erkennung von MCP-SDK-Imports
IR- und Flussgraph - Zwischendarstellung, die Quellen, Senken, Guards, Routen und MCP-Tool-Definitionen erfasst
Regel-Engine - 57 deterministische Regeln, die gegen die IR ausgewertet werden. Jede Regel definiert Quellen, Senken, erforderliche Guards
False-Positive-Filter - Erkennung von Testdateien, Konfidenzbewertung, Musterverfeinerung
Reporter - Terminal (mit Urteil), JSON, SARIF 2.1.0, KI-freundliches JSON (mit Behebungshinweisen), Markdown (teilbarer Bericht)
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 |
| Scannt einen Dateipfad oder Inline-Code. Gibt strukturierte Ergebnisse zurück. |
| Gibt alle 57 Regeln mit Metadaten zurück. Nach Kategorie filterbar. |
| Gibt Regeldetails, OWASP-Zuordnung, CWE-IDs und Korrekturvorschläge zurück. |
| 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: HIGHFü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.sarifExit-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:
mti scan --format sarif --output results.sariferzeugt eine SARIF-2.1.0-DateiDie Aktion
upload-sarifsendet sie an die Code-Scanning-API von GitHubJeder Befund wird zu einer Code-Scanning-Warnung mit Datei, Zeile, Schweregrad und Behebungshinweis
Warnungen können direkt in der GitHub-Benutzeroberfläche geschlossen, behoben oder nachverfolgt werden
Pull-Request-Anmerkungen erscheinen automatisch für geänderte Dateien
Voraussetzungen:
permissions: security-events: writein Ihrem WorkflowDie 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 |
| Standardausgabeformat: |
| Framework-Hinweis: |
| Benutzerdefinierte Namen von Auth-Funktionen zur Erkennung (reduziert False Positives) |
| Benutzerdefinierte Namen von Mandanten-Guard-Variablen zusätzlich zu den Standardnamen |
| Modellbereichsklassifizierung überschreiben (userScoped, global, tenantScoped) |
| Pfade zu benutzerdefinierten Regelpaket-JSON-Dateien |
Berichtsformate
Format | Flag | Anwendungsfall |
Terminal |
| Entwicklerkonsole mit Bestanden/Nicht bestanden-Urteil |
JSON |
| Programmatische Nutzung, Weiterleitung an andere Tools |
SARIF |
| GitHub Code Scanning, Azure DevOps |
KI-JSON |
| Nutzung durch KI-Agenten mit Behebungshinweisen und Kontext |
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.sarifTech-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
Links
Lizenz
MIT. Frei und Open Source.
This server cannot be installed
Maintenance
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
- AlicenseAqualityAmaintenanceSecurity 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.396045Apache 2.0
- AlicenseAqualityDmaintenanceMCP 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.1634Cryptographic Autonomy 1.0 (Combined Work Exception)
- AlicenseAqualityAmaintenanceMCP server for Cursor that scans codebases for security issues including hardcoded secrets, SAST, vulnerable dependencies, and IaC misconfigurations.7MIT
- Alicense-qualityDmaintenanceMulti-language SAST and AI-powered fuzzing MCP server for Claude Code integration, enabling static and dynamic security analysis of code.MIT
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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