一个模型上下文协议(MCP)服务器,提供AI助手对HackTheBox平台功能的编程访问。
HTB MCP服务器提供了12种全面的工具来与HackTheBox平台进行交互:
list_challenges - 获取分页的挑战列表,并支持过滤start_challenge - 初始化挑战环境submit_challenge_flag - 提交挑战验证标志list_machines - 获取活动/退役机器及其状态信息start_machine - 启动一台机器并获取连接详情get_machine_ip - 获取活动机器的IP地址submit_user_flag - 提交机器的用户标志submit_root_flag - 提交机器的root标志get_user_profile - 获取用户资料和统计数据get_user_progress - 获取完成状态和成就search_content - 在挑战、机器和用户之间进行高级搜索get_server_status - 健康检查和服务器信息克隆仓库:
git clone https://github.com/NoASLR/htb-mcp-server.git
cd htb-mcp-server
构建二进制文件:
go build -o htb-mcp-server main.go
获取您的HTB API令牌:
xxx.yyy.zzz)服务器通过环境变量进行配置:
HTB_TOKEN - 您的HackTheBox API令牌(JWT格式)SERVER_PORT - 服务器端口(默认:3000)LOG_LEVEL - 日志级别:DEBUG, INFO, WARN, ERROR(默认:INFO)RATE_LIMIT_PER_MINUTE - API速率限制(默认:110)CACHE_TTL_SECONDS - 响应缓存TTL(默认:300)REQUEST_TIMEOUT_SECONDS - HTTP请求超时(默认:30)export HTB_TOKEN="your.jwt.token.here"
./htb-mcp-server
docker build -t htb-mcp-server .
docker run -e HTB_TOKEN="your.jwt.token.here" htb-mcp-server
在您的MCP客户端配置中添加(例如,Claude Desktop):
{
"mcpServers": {
"htb": {
"command": "/path/to/htb-mcp-server",
"env": {
"HTB_TOKEN": "your.jwt.token.here"
}
}
}
}
一旦连接,您可以通过您的AI助手使用这些工具:
# 列出活跃挑战
"你能给我展示一下HackTheBox上的可用Web挑战吗?"
# 启动一台机器
"请启动机器ID 123并获取其IP地址"
# 提交一个标志
"提交机器123的用户标志'HTB{example_flag}'"
# 搜索内容
"搜索与'Active Directory'相关的机器"
# 检查服务器状态
"HTB MCP服务器当前的状态是什么?"
该服务器通过标准I/O传输实现MCP协议。所有通信遵循JSON-RPC 2.0规范。
initialize - 初始化MCP会话tools/list - 列出可用工具tools/call - 执行特定工具服务器集成了HackTheBox API v4:
https://labs.hackthebox.com/api/v4htb-mcp-server/
├── main.go # 入口点
├── pkg/
│ ├── config/ # 配置管理
│ ├── htb/ # HTB API客户端
│ └── mcp/ # MCP协议实现
├── internal/
│ ├── server/ # MCP服务器核心
│ └── tools/ # 工具实现
├── tests/ # 测试文件
└── docs/ # 文档
创建一个新的工具结构体,实现Tool接口:
type MyTool struct {
client *htb.Client
}
func (t *MyTool) Name() string { return "my_tool" }
func (t *MyTool) Description() string { return "描述" }
func (t *MyTool) Schema() mcp.ToolSchema { /* schema */ }
func (t *MyTool) Execute(ctx context.Context, args map[string]interface{}) (*mcp.CallToolResponse, error) {
// 实现
}
在registry.go中注册工具:
r.RegisterTool(NewMyTool(r.htbClient))
# 运行单元测试
go test ./...
# 运行带覆盖率的测试
go test -cover ./...
# 运行集成测试(需要HTB_TOKEN)
HTB_TOKEN="your.token" go test -tags=integration ./...
“HTB令牌无效或已过期”
“连接被拒绝”
“超出速率限制”
RATE_LIMIT_PER_MINUTE启用调试日志:
export LOG_LEVEL=DEBUG
./htb-mcp-server
测试服务器连通性:
curl -X POST http://localhost:3000/health
本项目根据MIT许可证发布 - 查看LICENSE文件了解详细信息。
为网络安全社区打造,充满爱心