门禁屏蔽图像生成器MCP
_人工智能辅助硬化容器图像生成_
根据15个GWShield硬化支柱生成生产级Dockerfiles。 适用于Claude、Gemini、OpenCode和任何兼容MCP的AI代理。
   ](https://www.npmjs.com/package/gwshield-image-builder-mcp) 
______________________________________________________________________
这个工具做什么
这是一个 模型上下文协议(MCP)服务器 对完整内容进行编码 GWShield将强化方法论转化为AI可访问的工具。它使任何 AI编码代理,用于生成Dockerfiles、冒烟测试、版本引脚和 符合生产所用相同标准的支持文件 GWShield图像管道。
服务器会 不 构建图像。它生成文件。
______________________________________________________________________
15个硬化支柱
每个生成的Dockerfile都强制执行以下支柱:
| # | 支柱 | 总结 |
|---|---|---|
| 1 | 从头开始/无发行版 | 运行时从头开始;仅在有文件证明的情况下才可发行 |
| 2 | 静态二进制 | CGO_ENABLED=0(Go)或musl-Static(C/Rust);没有不合理的动态存款 |
| 3 | 非根UID 65532 | 末级用户65532:65532;无root启动,特权删除 |
| 4 | 运行时没有shell | 没有/bin/sh,没有包管理器,没有curl/wget/nc |
| 5 | 多阶段+摘要固定 | deps->banner->builder->runtime;所有FROM图像均已固定256 |
| 6 | 固定gwshield构建器 | 使用ghcr.io/gwshield/\*-builder映像作为构建基础 |
| 7 | Cosign无密钥签名 | Sigstore OIDC;没有长寿命的关键材料 |
| 8 | SBOM附加 | CycloneDX+SPDX绑定到图像摘要 |
| 9 | 三重硬临界门 | 0释放时未固定的高/临界值;只有证据的对抗论者 |
| 10 | OCI标签架构 | org.opencontainers.image。\_+io.gwshield。\_标签 |
| 11 | gwshield初始化横幅 | 静态C包装作为ENTRYPOINT;exec()转换为实数二进制 |
| 12 | 强化编译器标志 | -fstack保护程序强,FORTIF_SOURCE=2,RELRO,PIE |
| 13 | 源tarball+SHA-256 | 从上游源构建;验证tarball哈希值 |
| 14 | 每图像烟雾测试 | 启动测试/smoke.sh,非根,无外壳,版本检查 |
| 15 | CVE allowlist+风险声明 | 扫描/allowlist.yaml+文档/risk-statement.md并附上证据 |
______________________________________________________________________
安装
无需全局安装。服务器通过以下方式按需运行 npx.
运行一次以确认服务器启动:
npx -y gwshield-image-builder-mcp然后将其添加到您的代理配置中:
克劳德桌面/克劳德代码
文件: ~/.claude/claude_desktop_config.json
{
"mcpServers": {
"gwshield-image-builder": {
"command": "npx",
"args": ["-y", "gwshield-image-builder-mcp"]
}
}
}保存后重新启动Claude Desktop。
开源代码
文件: ~/.config/opencode/config.json 或 opencode.json (项目)
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"gwshield-image-builder": {
"type": "local",
"command": ["npx", "-y", "gwshield-image-builder-mcp"],
"enabled": true
}
}
}OpenCode使用 "mcp" (不是 "mcpServers")与 type: "local" 以及命令数组。
光标
文件: .cursor/mcp.json (项目)或 ~/.cursor/mcp.json (全球)
{
"mcpServers": {
"gwshield-image-builder": {
"command": "npx",
"args": ["-y", "gwshield-image-builder-mcp"]
}
}
}继续(VS代码/JetBrains)
文件: .continue/mcpServers/gwshield.yaml (工作空间)
name: GWShield Image Builder
version: 0.0.1
schema: v1
mcpServers:
- name: gwshield-image-builder
command: npx
args:
- "-y"
- "gwshield-image-builder-mcp"双子星命令行工具
文件: ~/.gemini/settings.json
{
"mcpServers": {
"gwshield-image-builder": {
"command": "npx",
"args": ["-y", "gwshield-image-builder-mcp"]
}
}
}来源
git clone git@github.com:gwshield/images-mcp.git
cd images-mcp
npm install
npm run build然后将您的MCP客户端指向:
{
"mcpServers": {
"gwshield-image-builder": {
"command": "node",
"args": ["path/to/images-mcp/dist/index.js"]
}
}
}所有代理商都使用 npx stdio传输——没有守护进程,没有端口,没有持久进程。
______________________________________________________________________
MCP工具
| 工具 | 说明 |
|---|---|
list_pillars | 列出所有15个硬化支柱及其说明 |
suggest_runtime_base | 为语言选择合适的无发行版或草稿库 |
generate_dockerfile | 生成一个完全硬化的多级Dockerfile |
generate_versions_env | 为可复制的构建生成一个固定的VERSIONS.env |
generate_smoke_test | 生成每张图像的烟雾测试脚本 |
validate_dockerfile | 根据所有15个支柱验证Dockerfile |
generate_dockerignore | 生成一个最小的、有家庭意识的.dockerignore |
MCP提示
| 提示 | 描述 |
|---|---|
harden_image | 全面分析+为任何图像生成强化的Dockerfile |
review_dockerfile | 根据GWShield支柱审核现有的Dockerfile |
build_test_iterate | 构建→ scan → 使用Trivy修复迭代循环(最多5次迭代) |
MCP资源
| 资源 | 描述 |
|---|---|
gwshield://pillars | 所有15个支柱,包括基本原理和实施说明 |
gwshield://families | 支持的镜像系列:Go、C、Rust |
gwshield://contributing | GWShield新图像贡献指南 |
______________________________________________________________________
示例提示
连接服务器后,请向您的代理询问以下任一问题:
“强化我的Go HTTP服务” 用途 harden_image → suggest_runtime_base → generate_dockerfile (无发行版运行时, CGO_ENABLED=0,UID 65532,固定构建器摘要)→ validate_dockerfile 确认了所有15个支柱。
“查看我现有的Dockerfile” 用途 review_dockerfile → validate_dockerfile.返回结构化报告:哪些支柱 通过,失败,并对每个差距进行具体修复。
“为我的nginx镜像生成烟雾测试” 呼叫 generate_smoke_test 使用图像族和二进制路径。返回一个脚本,用于检查 二进制执行、非root用户、无shell和干净的退出代码。
构建、扫描和修复,直到清理干净 用途 build_test_iterate代理人会引导你通过 docker build → trivy image → fix → 重复,直到Trivy报告零个高或关键发现(最多5次迭代)。
______________________________________________________________________
图像族分类
服务器将服务分类到构建系列中,以选择正确的 Dockerfile模式:
| 家庭 | 运行时 | 链接 | 示例服务 |
|---|---|---|---|
go-static | scratch | CGO_ENABLED=0 | Traefik、Caddy、NATS |
c-musl | scratch+musl loader | musl static | nginx、Redis、Valkey、HAProxy |
c-glibc | 无发行版/cc-debian12 | glibc动态 | PostgreSQL |
go-cgo | 无发行版/静态debian12 | 启用CGO | Pomerium,OTel收集器 |
rust-static | scratch | musl target | 未来的Rust服务 |
______________________________________________________________________
供应链安全
](https://www.npmjs.com/package/gwshield-image-builder-mcp) 
| 组件 | 状态 | 详细信息 |
|---|---|---|
| npm出处(SLSA v1) | 活动 | 每个发布的版本都有一个从npm注册表链接的SLSA出处v1证明 |
| SLSA认证 | 有效 | 可通过验证 cosign (见下文) |
| SHA固定GitHub操作 | 活动 | 全部 uses: 指向不可变提交SHA的引用 |
| Dependabot | 活动 | 每周自动更新npm依赖关系和GitHub操作 |
| 锁定文件强制 | 活动 | npm ci 在CI-- package-lock.json 所有188个包都具有SHA-512完整性 |
| 注册表引脚 | 活动 | .npmrc 针 registry.npmjs.org --无第三方注册 |
验证已发布的版本
消费者可以使用以下方式验证任何已发布版本的来源证明 联署:
# Verify SLSA provenance attestation for a specific version
cosign verify-attestation \
--type slsaprovenance1 \
--certificate-oidc-issuer https://token.actions.githubusercontent.com \
--certificate-identity-regexp "^https://github.com/gwshield/images-mcp/.github/workflows/publish.yml@refs/tags/v" \
$(npm pack gwshield-image-builder-mcp --dry-run --json | jq -r '.[0].filename')或者,出处可以直接在npm注册表页面上的 每个已发布版本的“来源”选项卡。
报告安全问题
看 安全.md 漏洞披露政策。 使用 以保密的方式报告漏洞。
______________________________________________________________________
构建理念
该工具编码了所有网关管理员使用的相同硬化理念 屏蔽图像:
- 从源头,从零开始 --没有供应商基础映像
- 安全第一,不是便利第一 --没有初始化脚本,没有shell
- 需要扫描证据 --没有证据就没有索赔
- 透明假阳性 --记录扫描仪噪声,不隐藏
______________________________________________________________________
灵感与致谢
此MCP服务器的设计受到以下因素的影响 维克托·法尔契奇的人工智能辅助工作 生成Docker文件。他的
提示在 点ai 和 点ai堆栈 仓库 证明了将Dockerfile最佳实践编码为结构化AI 提示产生的输出始终比ad-hoc生成更好。
我们采纳或改编自他的方法的关键思想:
- 项目分析第一工作流程 --之前分析代码库
生成,而不是仅仅依赖用户提供的参数
- 显式.doccernore生成 --将.docerignore视为
一流的构建工件,而不是事后的想法
- 在添加之前验证所有内容 --永远不要假设一个包裹,
路径或二进制存在;始终根据实际项目上下文进行验证
- 构建测试迭代循环 --构建映像,运行它,检查日志,
运行linters和scanner,迭代直到干净(可通过 build_test_iterate 提示)
Viktor的方法是语言无关和通用的 服务器固执己见,安全性很强:它强制执行15 GWShield 支柱、目标 scratch 和 distroless 仅运行时间,以及 生成完整的文件集(Dockerfile、versions.env、smoke.sh、, GWShield图像管道要求的风险声明。
感谢Viktor将您的提示和方法开源。
______________________________________________________________________
许可证
Apache-2.0--看门人/RelicFrog基金会
