Skip to main content
Glama

mcp-tenant-isolation

多租户 SaaS 和 MCP 服务器代码的静态分析扫描器。在生产环境之前捕获跨租户数据泄露。

57 条确定性规则,涵盖租户隔离、数据库查询过滤器、IDOR、缓存键作用域、RLS、模式缺口以及 MCP 特定风险(工具可见性、缓存前缀、会话绑定、凭据库)。适用于 Prisma、Drizzle、原始 SQL、Next.js、Express 和 Fastify。包含一个用于 Claude Desktop 和 Cursor 集成的 MCP 服务器。

npm version npm downloads CI Docker License: MIT

适用人群

  • SaaS 构建者:交付多租户应用,需要捕获跨租户数据泄露

  • MCP 服务器开发者:构建处理租户作用域数据的工具

  • 安全团队:需要在 CI/CD 中实现租户隔离

  • AI 代理开发者:希望代理按需扫描代码

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

为什么选择它

通用安全扫描器(Snyk、Semgrep、CodeQL)不理解租户隔离模式或 MCP 服务器架构。跨租户数据泄露无法被检测。此工具通过 57 条专门构建的确定性规则填补了这一空白。

每条规则都是确定性和可重现的。没有机器学习,没有虚假猜测。每条规则检查特定的代码模式、防护存在性和数据流路径。每次运行都会得到相同的结果。

安装

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

快速开始

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

演示

终端演示

规则

42 条通用多租户规则

前缀

类别

数量

严重性

描述

TCM

租户上下文管理

6

严重

租户 ID 来自会话,而非客户端输入。跨异步边界的上下文传播。

DBQ

数据库查询隔离

10

严重

每个涉及租户作用域数据的查询必须包含租户过滤器。

IDOR

IDOR 预防

5

严重

基于 ID 的查找必须验证租户所有权。

CSI

缓存和会话隔离

4

缓存键和会话数据必须具有租户作用域。

API

API 安全

3

租户感知的速率限制和响应作用域。

FSI

文件存储隔离

4

S3、Blob 和文件系统访问必须具有租户作用域。

LOG

日志和审计

4

审计日志必须包含租户上下文。

SCH

模式和迁移

6

Prisma 模型和 SQL 迁移必须包含租户列。

15 条 MCP 特定规则

ID

标题

严重性

描述

MCP-001

工具可见性作用域

严重

工具处理程序没有基于租户的允许/拒绝过滤器。

MCP-002

缓存键租户前缀

严重

工具结果缓存时没有租户前缀。

MCP-003

会话绑定到用户+租户

严重

仅使用会话 ID 作为授权。

MCP-004

令牌交换(RFC 8693)

转发原始令牌而非进行令牌交换。

MCP-005

每租户速率限制

工具调用没有每租户速率限制。

MCP-006

向量存储租户命名空间

共享向量存储没有租户命名空间。

MCP-007

工具描述注入

工具描述可能绕过隔离。

MCP-008

凭据库租户作用域

严重

凭据库存储令牌时没有租户作用域。

MCP-009

共享服务账户

所有租户 API 调用使用单个共享 API 密钥。

MCP-010

断开连接时的会话清理

没有确定性的会话清理。

MCP-011

遥测租户标识符

遥测剥离了租户标识符。

MCP-012

本地绑定(127.0.0.1)

MCP 服务器绑定到 0.0.0.0 而非 127.0.0.1。

MCP-013

文件系统租户根目录

工具处理程序访问文件系统时没有租户根目录。

MCP-014

跨租户工件泄露

工件存储没有租户前缀。

MCP-015

动态工具命名空间

工具注册时没有租户命名空间。

架构

扫描器管道分为六个阶段:

  1. 解析器 - 用于 TS/JS 的 Babel AST、Prisma 模式解析器、SQL 迁移解析器、MCP SDK 导入检测

  2. IR 和流图 - 中间表示,捕获源、汇点、防护、路由、MCP 工具定义

  3. 规则引擎 - 针对 IR 评估的 57 条确定性规则。每条规则定义源、汇点、所需防护

  4. 误报过滤器 - 测试文件检测、置信度评分、模式优化

  5. 报告器 - 终端(含判定)、JSON、SARIF 2.1.0、AI 友好 JSON(含修复提示)、Markdown(可共享报告)

  6. CLI 和 MCP 服务器 - mti CLI,包含 scan/init/rules/suppress/baseline/mcp 命令。MCP 服务器暴露 4 个工具

MCP 服务器

该包包含一个用于 AI 代理集成的 MCP 服务器。它通过 stdio 传输在本地运行(无需托管):

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

将此添加到您的 Claude Desktop、Cursor 或其他 MCP 客户端配置中,让您的 AI 代理按需扫描代码以查找租户隔离问题。

MCP 工具

工具

描述

scan_tenant_isolation

扫描文件路径或内联代码。返回结构化发现结果。

list_tenant_isolation_rules

返回所有 57 条规则及其元数据。可按类别过滤。

explain_tenant_isolation_rule

返回规则详情、OWASP 映射、CWE ID、修复建议。

suppress_tenant_isolation_finding

添加带有原因和过期时间的抑制。

CI/CD 集成

选项 1:预构建的 GitHub Action(最简单)

将以下内容添加到 .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

运行扫描,将 SARIF 上传到 GitHub Code Scanning,生成 Markdown 报告工件,如果检测到 HIGH 或 CRITICAL 发现,则使工作流失败。

选项 2:手动 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

退出代码

代码

含义

0

无发现

1

发现存在

2

错误(配置无效、解析失败等)

GitHub Code Scanning 集成

当您使用 github/codeql-action/upload-sarif@v3 上传 SARIF 输出时,发现结果会出现在您仓库的 Security > Code scanning alerts 标签页中。这适用于免费和启用 Advanced Security 的仓库。

具体流程:

  1. mti scan --format sarif --output results.sarif 生成一个 SARIF 2.1.0 文件

  2. upload-sarif 操作将其发送到 GitHub 的代码扫描 API

  3. 每个发现结果成为一个代码扫描警报,包含文件、行号、严重性和修复提示

  4. 警报可以直接在 GitHub UI 中关闭、修复或跟踪

  5. 拉取请求注释会自动出现在更改的文件上

要求:

  • 工作流中需要 permissions: security-events: write

  • SARIF 文件必须在上传步骤之前生成

配置

在项目根目录创建 .mtirc.json

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

高级配置

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

字段

描述

output

默认输出格式:terminaljsonsarifaimarkdown

framework

框架提示:nextjs-app-routernextjs-pagesexpressfastifyauto

authHelpers

要检测的自定义认证函数名称(减少误报)

tenantGuards

超出默认值的自定义租户防护变量名称

modelScopes

覆盖模型作用域分类(userScoped、global、tenantScoped)

rulePacks

自定义规则包 JSON 文件的路径

报告格式

格式

标志

用例

终端

--format terminal(默认)

开发者控制台,带通过/失败判定

JSON

--format json

程序化消费,管道到其他工具

SARIF

--format sarif

GitHub Code Scanning、Azure DevOps

AI JSON

--format ai

AI 代理消费,带修复提示和上下文

Markdown

--format markdown

可共享报告,用于 PR、团队审查、文档

# 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

技术栈

  • AST 解析:@babel/parser(TypeScript、JSX)、Prisma 模式解析器、SQL 迁移解析器

  • 规则引擎:RuleSpec 声明式模式,带防护检测和证据构建

  • CLI:Commander

  • MCP:@modelcontextprotocol/sdk(stdio 传输)

  • 输出:终端(含判定)、JSON、SARIF 2.1.0、AI JSON(含修复)、Markdown

  • 测试:Vitest

路线图

v1.6.2(当前)

  • 57 条规则(42 条通用 + 15 条 MCP 特定)

  • 支持 TypeScript 和 JavaScript

  • Prisma 模式分析

  • SQL 迁移分析(RLS、租户列、索引)

  • CLI(mti),支持终端、JSON、SARIF、AI JSON、Markdown 输出

  • 终端和 Markdown 报告中的通过/失败判定

  • 所有 57 条规则的修复提示

  • 用于 AI 代理集成的 MCP 服务器

  • 带过期时间的抑制策略

  • 带差异的基线跟踪

  • .mtirc.json 中的严重性覆盖

  • 自定义规则包(JSON)

  • 可配置的认证辅助函数和租户防护

  • 模型作用域分类,支持配置覆盖

  • 框架检测(Next.js、Express、Fastify)

  • 非生产路径过滤

v1.7.0(计划)

  • Python 支持(FastAPI、Django、Flask)

  • SQLAlchemy ORM 分析

  • 监视模式(mti scan --watch)

  • VS Code 扩展

v2.0.0(未来)

  • 运行时双租户对抗测试工具

  • Go 和 Ruby 语言支持

  • 带 AST 缓存的增量扫描

链接

许可证

MIT。免费且开源。

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