linWinPwn MCP Server
使用说明内容(Markdown格式)
-
项目简介
- 该仓库包含一个基于 MCP SDK 的服务器实现(lwp_mcp_server.py),通过 HTTP/Streamable-HTTP 传输协议暴露 linWinPwn 的命令集,允许客户端浏览可用命令、获取默认变量、以及按指令ID执行命令并获取输出、日志和执行元信息。
-
主要功能点
- 资源与工具管理:从 linWinPwn.sh 的 Tools 区段提取可执行命令,构建命令目录。
- 命令执行与日志记录:支持按ID执行命令,能够替换环境变量、设置输出目录、记录标准输出/错误日志并返回执行结果及元信息。
- 服务器元数据与帮助:提供 lwp_vars、lwp_help 等工具,方便客户端了解服务器能力、默认变量和用法。
- 传输与会话:通过 FastMCP 提供的“streamable-http”传输,支持无状态请求处理,便于与 MCP 客户端的 JSON-RPC 通信。
- 本地化输出与可观测性:在执行前后打印彩色日志,输出执行耗时、退出码、以及日志文件路径。
-
安装步骤
- 确保系统上安装了 Python3。
- 将 linWinPwn.sh 放在同一目录,或通过环境变量 LWP_PATH 指定脚本路径。
- 安装 MCP Python SDK:在服务器中执行与文档相符的命令(示例:使用 Python 虚拟环境安装 mcp.server)。
- 运行服务器:在包含 lwp_mcp_server.py 的目录执行命令 python3 lwp_mcp_server.py。
- 服务器启动后,默认地址为 http://127.0.0.1:8000/mcp(可通过 MCP_HOST、MCP_PORT、MCP_PATH 环境变量调整)。
- 客户端连接时,按 MCP 的客户端配置使用即可(MCP 客户端不需要代码实现,只需配置服务器地址、传输方式等)。
-
服务器配置(供 MCP 客户端使用的配置示例,非代码块展示;客户端无需部署,仅用于理解参数) server_name: linwinpwn command: /path/to/linWinPwn.sh args: ["-t", "<Domain_Controller_IP>"] transport: streamable-http host: 127.0.0.1 port: 8000 path: /mcp
说明:
- server_name:在 MCP 客户端配置中标识此服务器的名称。
- command / args:命令可执行路径及启动参数,客户端可通过 MCP 请求触发执行。
- transport/path/host/port:指定 MCP 传输方式与服务端监听信息。
-
基本使用方法
- 启动后,客户端可以:
- lwp_list(filter):获取所有可执行命令的列表,并可按关键字过滤。
- lwp_vars():查看当前工具集的默认变量、服务器配置等信息。
- lwp_run(id, env=None, dryRun=False, timeoutSec=None, outputDir=None, interface=None, ldapPort=None):按指定ID执行命令,可覆盖环境变量、指定输出目录、开启干跑模式、控制超时等。
- 执行流程大致为:客户端查询命令列表 → 选择目标命令的ID → 发送执行请求 → 服务器展开变量并执行命令 → 服务器返回执行结果、耗时、以及日志文件路径。
- 启动后,客户端可以:
-
安全注意
- 该服务会执行外部脚本及命令,请确保在受控环境中使用,并结合鉴权、网络访问控制和日志审计。