返回市场
样本MCP安全扫描器

样本MCP安全扫描器

作者:aws-samples6 星标更新:2025-11-14

项目介绍

MCP 安全扫描器:AI 代码助手的实时保护

此模式描述了如何实现一个集成三个行业标准安全扫描工具(Checkov、Semgrep 和 Bandit)的模型上下文协议(MCP)服务器,以提供全面的代码安全性分析。该服务器使AI编码助手能够自动扫描代码片段和基础设施即代码(IaC)配置中的安全漏洞、误配置和合规性违规。

解决方案结合了Checkov用于扫描IaC文件(包括Terraform、CloudFormation和Kubernetes清单),Semgrep用于分析多种编程语言(如Python、JavaScript、Java等),以及Bandit用于专门的Python安全扫描。

它提供了一个统一的安全扫描接口,并采用标准化的响应格式,使得将安全检查集成到开发工作流程中变得更加容易。该模式使用Python和MCP框架来提供自动化安全反馈,帮助开发者在开发过程早期识别并解决安全问题,同时通过详细的发现结果学习安全最佳实践。

此模式特别适用于希望通过AI辅助编码工具增强其开发安全实践的组织,提供跨多种编程语言和基础设施定义的持续安全扫描能力。

关键特性:

  • 新代码段的增量扫描,减少计算开销
  • 隔离的安全工具环境,防止工具间的交叉污染
  • 无缝集成AI工具(Amazon Q Developer、Kiro等)
  • 在代码生成过程中提供实时安全反馈
  • 可定制的扫描规则以满足组织合规性要求

演示

代码扫描演示

尝试以下示例提示与您的AI助手:

  1. "扫描当前脚本并告诉我结果"
  2. "扫描第20至60行并告诉我结果"
  3. "扫描这个Amazon DynamoDB表资源并告诉我结果"

代码扫描演示

带有安全扫描的代码生成演示

尝试以下示例提示生成安全代码:

  1. "生成一个启用加密的DynamoDB表的Terraform配置,并扫描其安全问题"
  2. "创建一个写入DynamoDB的Python Lambda函数,并扫描其漏洞"
  3. "生成一个具有适当安全设置的S3桶的CloudFormation模板,并验证其通过安全检查"
  4. "编写一个带有分页查询DynamoDB的Python脚本,并扫描其安全最佳实践"
  5. "创建一个具有安全加固的微服务的Kubernetes部署清单,并进行验证"

代码生成演示

架构

架构图

功能

此MCP服务器使AI助手能够使用三种强大的安全扫描工具对代码片段进行全面的安全分析:

🛡️ Checkov - 基础设施即代码安全

  • 扫描基础设施即代码(IaC)文件中的安全误配置
  • 支持:Terraform、CloudFormation、Kubernetes、Dockerfile、ARM、Bicep等
  • 检测合规性违规和安全最佳实践

🔍 Semgrep - 源代码安全

  • 分析源代码中的安全漏洞和错误
  • 支持:Python、JavaScript、TypeScript、Java、Go、C/C++、C#、Ruby、PHP、Scala、Kotlin、Rust
  • 使用专注于安全的规则集进行综合分析

🐍 Bandit - Python安全专家

  • 专门的Python安全扫描器
  • 检测常见的Python安全问题,如不安全的函数、硬编码的秘密、注入漏洞
  • 提供详细的信心和严重性评级

安装

注意: 下列说明适用于macOS/Linux。对于Windows和其他代码助手,请参阅AWS MCP存储库README获取特定平台的说明。

先决条件

  • Python >=3.10, <=3.13
  • uv 包管理器(从Astral安装)

本地安装

此MCP服务器不可通过PyPI获得,以增强安全性和控制:

  • 安全:通过检查仓库来验证您正在运行的确切代码
  • 控制:锁定到特定版本并在更新前审查更改
  • 性能:本地缓存提高了启动速度并减少了网络依赖
  • 信任:避免潜在的包名称混淆或使用不安全的mcp服务器

您可以使用两种方法之一安装此服务器:

方法1:从本地路径安装

克隆或下载本地仓库:

git clone git@github.com:aws-samples/sample-mcp-security-scanner.git
cd sample-mcp-security-scanner

然后配置您的MCP客户端使用本地路径(参见下面的配置示例)。

方法2:从GitHub安装

配置您的MCP客户端直接从GitHub安装:

git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main

此方法会自动下载并安装服务器,无需本地克隆(参见下面的配置示例)。

依赖项

服务器会自动安装:

  • checkov>=3.0.0 - IaC安全扫描器
  • semgrep>=1.45.0 - 源代码安全扫描器
  • bandit>=1.7.5 - Python安全扫描器
  • mcp[cli]>=1.11.0 - MCP框架
  • pydantic>=1.10.0 - 数据验证
  • loguru>=0.6.0 - 日志记录

使用

MCP配置

配置您的MCP客户端以使用服务器。配置因客户端而异,支持本地路径和GitHub安装方法。

使用Kiro开始

<details> <summary>在Kiro中安装</summary>

详情请参阅Kiro Model Context Protocol文档

  1. 导航 Kiro > MCP Servers
  2. 点击“打开MCP配置”按钮添加新的MCP服务器。
  3. 粘贴以下配置之一:

方法1:从本地路径安装

替换/path/to/sample-mcp-security-scanner为您实际的仓库路径:

.kiro/settings/mcp.json(本地)或~/.kiro/settings/mcp.json(全局)

{
  "mcpServers": {
    "security-scanner": {
      "command": "uvx",
      "args": [
        "--from",
        "/path/to/sample-mcp-security-scanner",
        "security_scanner_mcp_server"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

方法2:从GitHub安装

{
  "mcpServers": {
    "security-scanner": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main",
        "security_scanner_mcp_server"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
</details>

使用Amazon Q Developer开始

<details> <summary>在Amazon Q Developer中安装</summary>

详情请参阅Amazon Q Developer文档

  1. 手动配置
    • 编辑位于~/.aws/amazonq/mcp.json(全局)或.amazonq/mcp.json(本地)的MCP配置文件。
    • 使用以下配置之一:

方法1:从本地路径安装

替换/path/to/sample-mcp-security-scanner为您实际的仓库路径:

~/.aws/amazonq/mcp.json

{
  "mcpServers": {
    "security-scanner": {
      "command": "uvx",
      "args": [
        "--from",
        "/path/to/sample-mcp-security-scanner",
        "security_scanner_mcp_server"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      }
    }
  }
}

方法2:从GitHub安装

{
  "mcpServers": {
    "security-scanner": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main",
        "security_scanner_mcp_server"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      }
    }
  }
}
</details>

使用Cline开始

<details> <summary>在Cline中安装</summary>
  1. 安装Cline VS Code扩展
  2. 点击扩展以打开它并选择MCP Servers
  3. 选择已安装标签,然后点击配置MCP服务器以打开cline_mcp_settings.json文件。
  4. 添加以下配置之一:

方法1:从本地路径安装

替换/path/to/sample-mcp-security-scanner为您实际的仓库路径:

cline_mcp_settings.json

{
  "mcpServers": {
    "security-scanner": {
      "command": "uvx",
      "args": [
        "--from",
        "/path/to/sample-mcp-security-scanner",
        "security_scanner_mcp_server"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

方法2:从GitHub安装

{
  "mcpServers": {
    "security-scanner": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/aws-samples/sample-mcp-security-scanner.git@main",
        "security_scanner_mcp_server"
      ],
      "env": {
        "FASTMCP_LOG_LEVEL": "ERROR"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}
</details>

其他代码助手

对于Cursor、Windsurf、VS Code、Claude Desktop和其他MCP客户端的配置说明,请参阅AWS MCP存储库README

可用工具

1. scan_with_checkov

扫描基础设施即代码文件的安全问题。

参数:

  • code(字符串):要扫描的IaC内容
  • format_type(字符串):格式类型(terraform、cloudformation、kubernetes、dockerfile等)

2. scan_with_semgrep

扫描源代码的安全漏洞。

参数:

  • code(字符串):要扫描的源代码内容
  • language(字符串):编程语言(python、javascript、java等)

3. scan_with_bandit

扫描Python代码的安全问题(Python专用)。

参数:

  • code(字符串):要扫描的Python代码内容

4. get_supported_formats

获取关于支持的格式和语言的信息。

支持的格式

Checkov(IaC)

  • terraform:.tf, .tfvars, .tfstate
  • cloudformation:.yaml, .yml, .json, .template
  • kubernetes:.yaml, .yml
  • dockerfile:Dockerfile
  • arm:.json(Azure Resource Manager)
  • bicep:.bicep
  • serverless:.yml, .yaml
  • helm:.yaml, .yml, .tpl
  • github_actions:.yml, .yaml
  • gitlab_ci:.yml, .yaml
  • ansible:.yml, .yaml

Semgrep(源代码)

  • python:.py
  • javascript:.js
  • typescript:.ts
  • java:.java
  • go:.go
  • c:.c
  • cpp:.cpp
  • csharp:.cs
  • ruby:.rb
  • php:.php
  • scala:.scala
  • kotlin:.kt
  • rust:.rs

Bandit(仅限Python)

  • python:.py文件

响应格式

所有扫描工具返回一致的响应格式:

{
  "success": true,
  "tool": "checkov|semgrep|bandit",
  "format_type": "terraform",
  "language": "python",
  "total_issues": 3,
  "findings": [
    {
      "check_id": "CKV_AWS_20",
      "severity": "HIGH",
      "description": "S3 Bucket has an ACL defined which allows public access",
      "line_number": 3,
      "resource": "aws_s3_bucket.example"
    }
  ],
  "summary": {
    "high": 1,
    "medium": 2,
    "low": 0
  }
}

与AI助手的集成

此MCP服务器设计用于与AI编码助手(如Kiro、Amazon Q Developer、Cline等)配合使用。AI可以:

  1. 分析生成的代码:自动扫描代码片段中的安全问题
  2. 提供上下文感知建议:获取特定于语言和格式的安全建议
  3. 持续安全反馈:将安全扫描集成到开发工作流程中
  4. 教育洞察:通过详细的发现结果学习安全最佳实践

开发

本地运行

# 克隆并安装
git clone git@github.com:aws-samples/sample-mcp-security-scanner.git
cd sample-mcp-security-scanner
uv pip install -e .

# 运行服务器
python -m security_scanner_mcp_server.server

测试

# 使用示例代码测试
python examples/test_scanner.py

许可证

MIT许可证 - 详情请参阅LICENSE文件。

贡献

欢迎贡献!请阅读CONTRIBUTING.md以获取指南。

作者

模式由Ivan Girardi(AWS)和Iker Reina Fuente(AWS)创建。

安全

此工具旨在通过识别漏洞来提高安全性。然而:

  • 总是手动审查发现结果
  • 保持扫描工具更新
  • 结合其他安全措施和工具使用

安全

更多信息请参阅CONTRIBUTING

许可证

此库根据MIT-0许可证授权。详情请参阅LICENSE文件。