Skip to content

Commit 6cd8fd3

Browse files
committed
fix(hub): fix hub config wiring and volume expansion in client
1 parent f389927 commit 6cd8fd3

File tree

4 files changed

+118
-4
lines changed

4 files changed

+118
-4
lines changed

Makefile

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
.PHONY: help install sync format lint typecheck test build-modules clean
1+
.PHONY: help install sync format lint typecheck test build-modules build-hub-images clean
22

33
SHELL := /bin/bash
44

@@ -12,8 +12,9 @@ help:
1212
@echo " make lint - Lint code with ruff"
1313
@echo " make typecheck - Type check with mypy"
1414
@echo " make test - Run all tests"
15-
@echo " make build-modules - Build all module container images"
16-
@echo " make clean - Clean build artifacts"
15+
@echo " make build-modules - Build all module container images"
16+
@echo " make build-hub-images - Build all mcp-security-hub images"
17+
@echo " make clean - Clean build artifacts"
1718
@echo ""
1819

1920
# Install all dependencies
@@ -93,6 +94,10 @@ build-modules:
9394
@echo ""
9495
@echo "✓ All modules built successfully!"
9596

97+
# Build all mcp-security-hub images for the firmware analysis pipeline
98+
build-hub-images:
99+
@bash scripts/build-hub-images.sh
100+
96101
# Clean build artifacts
97102
clean:
98103
find . -type d -name "__pycache__" -exec rm -rf {} + 2>/dev/null || true

fuzzforge-cli/src/fuzzforge_cli/commands/mcp.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,8 @@ def _generate_mcp_config(
185185
"FUZZFORGE_ENGINE__TYPE": engine_type,
186186
"FUZZFORGE_ENGINE__GRAPHROOT": str(graphroot),
187187
"FUZZFORGE_ENGINE__RUNROOT": str(runroot),
188+
"FUZZFORGE_HUB__ENABLED": "true",
189+
"FUZZFORGE_HUB__CONFIG_PATH": str(fuzzforge_root / "hub-config.json"),
188190
},
189191
}
190192

@@ -454,6 +456,7 @@ def install(
454456
console.print(f" Modules Path: {resolved_modules}")
455457
console.print(f" Engine: {engine}")
456458
console.print(f" Socket: {socket}")
459+
console.print(f" Hub Config: {fuzzforge_root / 'hub-config.json'}")
457460
console.print()
458461

459462
console.print("[bold]Next steps:[/bold]")

fuzzforge-common/src/fuzzforge_common/hub/client.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313

1414
import asyncio
1515
import json
16+
import os
1617
import subprocess
1718
from contextlib import asynccontextmanager
1819
from typing import TYPE_CHECKING, Any, cast
@@ -242,7 +243,7 @@ async def _connect_docker(
242243

243244
# Add volumes
244245
for volume in config.volumes:
245-
cmd.extend(["-v", volume])
246+
cmd.extend(["-v", os.path.expanduser(volume)])
246247

247248
# Add environment variables
248249
for key, value in config.environment.items():

hub-config.json

Lines changed: 105 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,105 @@
1+
{
2+
"servers": [
3+
{
4+
"name": "nmap-mcp",
5+
"description": "Network reconnaissance using Nmap - port scanning, service detection, OS fingerprinting",
6+
"type": "docker",
7+
"image": "nmap-mcp:latest",
8+
"category": "reconnaissance",
9+
"capabilities": ["NET_RAW"],
10+
"enabled": true
11+
},
12+
{
13+
"name": "binwalk-mcp",
14+
"description": "Firmware extraction and analysis using Binwalk - file signatures, entropy analysis, embedded file extraction",
15+
"type": "docker",
16+
"image": "binwalk-mcp:latest",
17+
"category": "binary-analysis",
18+
"capabilities": [],
19+
"volumes": ["~/.fuzzforge/hub/workspace:/data"],
20+
"enabled": true
21+
},
22+
{
23+
"name": "yara-mcp",
24+
"description": "Pattern matching and malware classification using YARA rules",
25+
"type": "docker",
26+
"image": "yara-mcp:latest",
27+
"category": "binary-analysis",
28+
"capabilities": [],
29+
"volumes": ["~/.fuzzforge/hub/workspace:/data"],
30+
"enabled": true
31+
},
32+
{
33+
"name": "capa-mcp",
34+
"description": "Static capability detection using capa - identifies malware capabilities in binaries",
35+
"type": "docker",
36+
"image": "capa-mcp:latest",
37+
"category": "binary-analysis",
38+
"capabilities": [],
39+
"volumes": ["~/.fuzzforge/hub/workspace:/data"],
40+
"enabled": true
41+
},
42+
{
43+
"name": "radare2-mcp",
44+
"description": "Binary analysis and reverse engineering using radare2",
45+
"type": "docker",
46+
"image": "radare2-mcp:latest",
47+
"category": "binary-analysis",
48+
"capabilities": [],
49+
"volumes": ["~/.fuzzforge/hub/workspace:/data"],
50+
"enabled": true
51+
},
52+
{
53+
"name": "ghidra-mcp",
54+
"description": "Advanced binary decompilation and reverse engineering using Ghidra",
55+
"type": "docker",
56+
"image": "ghcr.io/clearbluejar/pyghidra-mcp:latest",
57+
"category": "binary-analysis",
58+
"capabilities": [],
59+
"volumes": ["~/.fuzzforge/hub/workspace:/data"],
60+
"enabled": true
61+
},
62+
{
63+
"name": "searchsploit-mcp",
64+
"description": "CVE and exploit search using SearchSploit / Exploit-DB",
65+
"type": "docker",
66+
"image": "searchsploit-mcp:latest",
67+
"category": "exploitation",
68+
"capabilities": [],
69+
"volumes": ["~/.fuzzforge/hub/workspace:/data"],
70+
"enabled": true
71+
},
72+
{
73+
"name": "nuclei-mcp",
74+
"description": "Vulnerability scanning using Nuclei templates",
75+
"type": "docker",
76+
"image": "nuclei-mcp:latest",
77+
"category": "web-security",
78+
"capabilities": ["NET_RAW"],
79+
"volumes": ["~/.fuzzforge/hub/workspace:/data"],
80+
"enabled": true
81+
},
82+
{
83+
"name": "trivy-mcp",
84+
"description": "Container and filesystem vulnerability scanning using Trivy",
85+
"type": "docker",
86+
"image": "trivy-mcp:latest",
87+
"category": "cloud-security",
88+
"capabilities": [],
89+
"volumes": ["~/.fuzzforge/hub/workspace:/data"],
90+
"enabled": true
91+
},
92+
{
93+
"name": "gitleaks-mcp",
94+
"description": "Secret and credential detection in code and firmware using Gitleaks",
95+
"type": "docker",
96+
"image": "gitleaks-mcp:latest",
97+
"category": "secrets",
98+
"capabilities": [],
99+
"volumes": ["~/.fuzzforge/hub/workspace:/data"],
100+
"enabled": true
101+
}
102+
],
103+
"default_timeout": 300,
104+
"cache_tools": true
105+
}

0 commit comments

Comments
 (0)