Back to Articles

SecPipe: Building AI Security Agents That Orchestrate 185 Containerized Tools Through MCP

[ View on GitHub ]

SecPipe: Building AI Security Agents That Orchestrate 185 Containerized Tools Through MCP

Hook

What if your AI security analyst could autonomously chain together firmware extraction, vulnerability scanning, and fuzzing—across 185 tools—just by understanding what you’re trying to find?

Context

Security research workflows are brutally manual. A typical firmware vulnerability assessment might require running Binwalk for extraction, YARA for pattern matching, Radare2 for disassembly, and AFL for fuzzing. Each tool has different CLI syntax, different output formats, and different environmental requirements. Analysts spend more time wrangling Docker commands and parsing outputs than actually analyzing security implications.

The rise of AI coding assistants like Claude and GPT-4 promised to automate this drudgery, but hit a wall: LLMs can suggest commands, but they can’t safely execute them, manage state across tools, or understand which tools to chain together for complex research goals. Security teams ended up with expensive chatbots that write Bash scripts instead of true autonomous agents. SecPipe bridges this gap by implementing the Model Context Protocol (MCP)—Anthropic’s standard for connecting AI agents to tools—but with a meta-layer twist: instead of wrapping individual tools, it orchestrates entire hubs of containerized security tools, letting AI agents discover and compose 185+ tools at runtime.

Technical Insight

MCP Protocol

init_project, set_assets

list_hubs, discover_hub

list_hubs, discover_hub

list_hubs, discover_hub

execute_hub

execute_hub

execute_hub

spawn & execute

spawn & execute

spawn & execute

tool results

tool results

tool results

execution results

execution results

execution results

AI Agent

SecPipe Meta-MCP Server

Project Manager

Hub Registry & Discovery

Binwalk Hub Server

YARA Hub Server

Radare2 Hub Server

Docker Container: Binwalk

Docker Container: YARA

Docker Container: Radare2

System architecture — auto-generated

SecPipe’s architecture centers on a three-tier abstraction: the meta-MCP server (the brain), hub servers (tool collections), and containerized tools (isolated executables). When an AI agent connects to SecPipe, it doesn’t see 185 individual tools—it sees a discovery layer that can spawn and query specialized hub servers on demand.

Here’s how an agent might autonomously analyze a suspicious firmware binary:

# Agent discovers available hubs
response = mcp_client.call_tool(
    "secpipe/list_hubs",
    {}
)
# Returns: [{"name": "binwalk-hub", "category": "binary_analysis"},
#           {"name": "yara-hub", "category": "detection"},
#           {"name": "radare2-hub", "category": "reverse_engineering"}]

# Agent initializes project context
mcp_client.call_tool(
    "secpipe/init_project",
    {"name": "router_firmware_analysis"}
)

# Agent sets target asset
mcp_client.call_tool(
    "secpipe/set_assets",
    {"files": ["/data/firmware.bin"]}
)

# Agent discovers binwalk capabilities
mcp_client.call_tool(
    "secpipe/discover_hub",
    {"hub_name": "binwalk-hub"}
)
# Returns tool metadata including usage tips:
# "Use extract_filesystem for firmware images to unpack filesystems"

# Agent executes extraction
result = mcp_client.call_tool(
    "secpipe/execute_hub",
    {
        "hub_name": "binwalk-hub",
        "tool_name": "extract_filesystem",
        "args": {"target": "/data/firmware.bin"}
    }
)
# Returns: {"extracted_files": ["/tmp/project/rootfs/..."],
#           "filesystem_type": "squashfs"}

# Agent autonomously chains to YARA for vulnerability patterns
mcp_client.call_tool(
    "secpipe/execute_hub",
    {
        "hub_name": "yara-hub",
        "tool_name": "scan_directory",
        "args": {
            "path": "/tmp/project/rootfs",
            "ruleset": "iot_vulnerabilities"
        }
    }
)

The meta-MCP pattern is what makes this powerful. Traditional MCP servers expose a fixed set of tools—if you want 185 tools, you’d need 185 MCP connections. SecPipe exposes just seven meta-tools (init_project, list_hubs, discover_hub, execute_hub, start_server, stop_server, set_assets) that dynamically manage the underlying hub servers. Each hub server runs as a subprocess, wrapping its tools in Docker containers for isolation.

The hub discovery mechanism is particularly clever. When an agent calls discover_hub, it receives not just function signatures but contextual guidance: “This tool works best after running Binwalk extraction” or “Use aggressive mode for obfuscated malware.” This metadata acts as embedded knowledge that guides the AI’s decision-making. The agent doesn’t need to be pre-trained on every security tool—it learns their capabilities and workflows at runtime.

Persistent session support enables stateful interactions. When analyzing a binary with Radare2, the agent can start a debugging session, set breakpoints, step through execution, and inspect memory—all while maintaining state across multiple MCP calls. Under the hood, SecPipe maps session IDs to long-running container processes, routing subsequent commands to the same container instance.

The container isolation model deserves attention. Every tool execution spawns an ephemeral Docker container with mounted volumes for input/output. A fuzzing workflow might run for hours, but it’s completely sandboxed—if the fuzzer triggers a crash or exploit, it’s contained. The hub servers handle container lifecycle management, cleanup, and resource limits, so the AI agent never touches Docker directly.

What’s particularly elegant is how this architecture enables workflow composition. An agent can initialize a project, run Nmap for network recon, feed discovered services to Nuclei for vulnerability scanning, extract credentials with custom tools, and chain into Metasploit exploits—all through natural language reasoning about which hubs and tools to invoke. The meta-MCP layer translates high-level security research goals into orchestrated tool executions.

Gotcha

The Business Source License 1.1 is a landmine for commercial users. You get source access and can use SecPipe freely for non-commercial purposes, but commercial deployment requires a paid license for four years (until the code converts to GPL). If you’re building a security product or using this in a for-profit consulting engagement, you’ll need to negotiate licensing terms with FuzzingLabs. This isn’t Apache 2.0—you can’t just integrate it into your commercial security platform.

The Docker/Podman dependency creates operational friction. Corporate environments often restrict container runtimes for security reasons (ironically, for a security tool). You’ll need container infrastructure, proper networking configuration, and volume mount permissions. If you’re in an airgapped environment or locked-down enterprise network, getting 185 security tool containers approved and deployed is a bureaucratic nightmare. The project documentation explicitly warns about breaking changes and active development, which translates to: expect your automation scripts to break across updates. There’s no stability guarantee, no semantic versioning commitment, and the API surface is still evolving. If you’re building production security pipelines that need to run unchanged for months, you’ll be stuck pinning to specific commits and missing security updates.

Verdict

Use if: You’re a security researcher or red team operator who wants AI agents to autonomously chain offensive security tools (firmware reverse engineering, vulnerability scanning, fuzzing pipelines) on local infrastructure. You have Docker expertise, accept BSL 1.1 licensing constraints for non-commercial work, and value reducing manual tool orchestration over API stability. The natural language workflow composition is genuinely novel—telling an agent “find memory corruption bugs in this IoT firmware” and watching it autonomously select and chain Binwalk → YARA → fuzzing tools is the future of security research. Skip if: You need production-stable APIs for enterprise deployment, require Apache/MIT licensing for commercial products, lack container infrastructure, or want simple single-tool automation where direct CLI calls suffice. If you’re just running periodic Nmap scans or YARA rules, the meta-MCP complexity is overkill—write a Bash script. The tool is bleeding-edge powerful but operationally demanding and legally restricted.

// ADD TO YOUR README
[![Featured on Starlog](https://starlog.is/api/badge/cybersecurity/fuzzinglabs-secpipe.svg)](https://starlog.is/api/badge-click/cybersecurity/fuzzinglabs-secpipe)