使用说明
mcpwn 是一个MCP服务器,允许大型语言模型(LLM)在本地计算机上执行安全工具。目前支持 7 开箱即用的工具: nmap, gobuster, ffuf, httpx, sqlmap, msfvenom,以及 msfconsole.
目录
特性
- 模型上下文协议:完全符合模型上下文协议。它使用 modelcontextprotocol/go-sdk.
- 动态刀具注册:定义工具(如
nmap,gobuster等)通过一个简单的mcpwn.yaml文件。 - 灵活的论点:支持
extra_args将任何有效的CLI标志传递给工具,提供完全的灵活性。 - Docker集成:在隔离容器中运行工具,以实现安全性和轻松的依赖关系管理。
- 跨平台:为Linux、macOS和Windows编译。自动发布是通过Goreleaser构建的,以及
.deb基于Debian的系统支持打包。
项目结构
├── cmd
│ └── mcpwn
│ └── main.go
├── debian
├── internal
│ ├── config // YAML configuration loader
│ │ ├── config.go
│ │ └── config_test.go
│ ├── executor
│ │ ├── run.go
│ │ └── run_test.go
│ └── server // MCP protocol implementation and tool routing
│ ├── server.go
│ └── server_test.go
├── mcpwn.yaml // Default MCP tools configuration out-of-the-box
└── go.mod & go.sum
安装
先决条件和信息
- 转到1.25 或稍后。
- 码头工人
您可以使用 mcpwn 使用本地安装的工具或Docker(推荐)。
如果你决定不使用Docker,你仍然可以使用它,但你想使用的安全工具(例如。, nmap)必须安装在您的系统中 PATH.
默认情况下,工具在内部运行 Docker容器,这提供了一个强大的隔离层。
安全架构
mcpwn旨在防止未经授权访问您的主机:
- 直接执行:服务器使用Go的
exec.Command,它直接执行二进制文件,而不涉及系统shell(如/bin/sh或cmd.exe).这意味着特殊字符作为文字参数传递,而不是被解释为命令分隔符。 - 强化Docker隔离:工具在具有以下功能的临时容器中运行:
--cap-drop=ALL:默认情况下,所有Linux功能都会被删除。--cap-add=NET_RAW:只授予网络工具(如nmap原始数据包)所需的最低能力。- 未安装主机卷或套接字。
- 发射后不管:容器使用
--rm旗帜。容器内的任何变化在完成后都会被永久销毁。 - 参数注入:虽然LLM可以传递标志(例如。,
--os-shell),影响严格限于孤立的、无特权的容器。
从源代码构建
git clone https://gitlab.com/parrotsec/project/mcpwn.git
cd mcpwn
go build -o mcpwn cmd/mcpwn/main.go
此外, mcpwn 是跨平台的,因此您可以为GNU/Linux、macOS和Windows构建项目。
自动化构建和包装
我们可以使用GoReleaser自动构建和创建 .tar.gz 和 .deb 档案:
goreleaser build --snapshot --clean
对于基于Debian的系统,如ParrotOS,标准 debian/ 还提供了目录用于本机创建包:
dpkg-buildpackage -us -uc -b # or via sbuild
配置
默认情况下, mcpwn 查找名为的配置文件 mcpwn.yaml 与可执行文件位于同一目录中。对于系统范围的安装,它还会检查以下位置的配置文件 /etc/mcpwn/mcpwn.yaml.
您可以轻松扩展 mcpwn 通过向此文件添加新的工具定义。 Docker支持 也可用:如果您指定 image 对于工具来说, mcpwn 将在临时Docker容器中自动运行它,以提高安全性和隔离性。
示例 mcpwn.yaml
tools:
- name: "nmap_scan"
description: "Nmap is a free and open source utility for network discovery and security auditing."
command: "nmap"
image: "parrotsec/nmap"
args:
- name: "target"
description: "Target IP/Domain"
required: true
positional: true
- name: "aggressive"
description: "Aggressive scan (-A)"
flag: "-A"
type: "boolean"
- name: "extra_args"
description: "Any additional nmap arguments"
flag: ""
用法
手动运行
您可以直接运行服务器来测试它是否正确加载了您的配置:
./mcpwn
服务器通过以下方式进行通信 Stdio 您将在上看到日志消息 Stderr.
与Claude和Gemini集成(WIP)
克劳德代码
在终端中运行以下命令:
claude mcp add --transport stdio mcpwn -- /path/to/your/mcpwn
双子星命令行工具
使用 mcpwn 随着 双子星命令行工具,请按照以下步骤操作:
-
构建二进制文件:
go build -o mcpwn cmd/mcpwn/main.go -
注册服务器:运行以下命令进行添加
mcpwn到您的Gemini CLI配置(使用您当前的绝对路径):gemini mcp add mcpwn $(pwd)/mcpwn -
启动Gemini:
gemini -
使用:在双子座会议中,
-
您可以通过键入以下内容来验证连接
/mcp list。然后,您可以要求模型运行您的工具,例如:在快速模式下使用nmap_Scan扫描本地主机。 使用nmap_scan和'vuln'脚本搜索192.168.1.1上的漏洞。
注意:如果您修改 mcpwn.yaml,您必须重新启动Gemini CLI会话以刷新工具定义。
许可证
该项目根据GPL v3获得许可。
联系
如需更多信息和实施,请联系 danterolle@parrotsec.org 或 team@parrotsec.org.
