AssemblyLine 4 MCP Server
Enables interaction with the AssemblyLine 4 malware analysis platform, allowing file submissions, URL analysis, and search capabilities via natural language.
README
AssemblyLine 4 MCP Server
MCP server for the AssemblyLine 4 malware analysis platform.
Setup
npm install
npm run build
Copy .env.example to .env and fill in your credentials:
AL4_URL=https://your-al4-instance:443
AL4_USERNAME=your_username
AL4_APIKEY=keyname:your_api_key_password
API keys are created in AssemblyLine under Account → Security → Manage API Keys.
Running
AL4_URL=... AL4_USERNAME=... AL4_APIKEY=... node dist/src/index.js
Claude Code integration
Add to your ~/.claude/claude_desktop_config.json (or project .claude/settings.json):
{
"mcpServers": {
"assemblyline4": {
"command": "node",
"args": ["/absolute/path/to/vibe-assemblylinev4-mcp/dist/src/index.js"],
"env": {
"AL4_URL": "https://your-al4-instance:443",
"AL4_USERNAME": "your_username",
"AL4_APIKEY": "keyname:password"
}
}
}
}
Self-signed / dev certificates
Set AL4_TLS_VERIFY=false in the env block to skip TLS verification.
Available tools
| Tool | Description |
|---|---|
al4_whoami |
Current authenticated user |
al4_submit_file |
Sync file submission (path on disk) |
al4_submit_url |
Sync URL submission |
al4_submit_sha256 |
Sync submission by hash (file must exist in AL4 store) |
al4_ingest_file |
Async file ingestion with optional notification queue |
al4_ingest_url |
Async URL ingestion |
al4_ingest_sha256 |
Async hash ingestion |
al4_submission_is_complete |
Poll whether a submission has finished |
al4_submission_get |
Submission metadata |
al4_submission_full |
Complete results tree |
al4_submission_summary |
Summarised results |
al4_ingest_get_messages |
Drain a notification queue |
al4_search_submissions |
Lucene search over submissions |
al4_search_alerts |
Lucene search over alerts |
al4_search_files |
Lucene search over the file store |
al4_search_results |
Lucene search over service results |
al4_alert_get |
Fetch a single alert by ID |
al4_file_info |
File metadata by SHA256 |
al4_file_results |
All service results for a file |
al4_file_score |
Highest score for a file |
Testing & CI
Two layers of tests live under test/:
-
test/integration.ts— drivesAL4Clientand the MCP server end-to-end against an in-process mock of the AL4 REST API (test/mock-al4.ts). Fast, hermetic, runs on every push/PR via.github/workflows/ci.yml.npm test -
test/e2e.ts— drivesAL4Clientagainst a real Assemblyline 4 appliance. The.github/workflows/e2e.ymlworkflow spins up the upstreamassemblyline-docker-composeappliance (core stack only — Elasticsearch, Redis, MinIO, AL core/UI/nginx; service images are skipped to fit the runner's disk quota), bootstraps the admin user, mints an API key, and runs the suite. Because submissions are not blocked on services, they complete with an empty result tree — enough to validate every API the MCP server exposes.The e2e workflow runs:
- nightly (05:27 UTC),
- on
workflow_dispatch, - on PRs labelled
run-e2e.
To reproduce locally:
bash scripts/ci/start-al4.sh APIKEY=$(AL4_URL=https://localhost AL4_ADMIN_USER=admin AL4_ADMIN_PASSWORD=admin \ bash scripts/ci/create-apikey.sh) AL4_URL=https://localhost AL4_USERNAME=admin AL4_APIKEY=$APIKEY \ AL4_TLS_VERIFY=false node dist/test/e2e.js
Running CI locally
Two equivalent paths, depending on what you want to validate:
-
The fast workflow, exactly as GitHub Actions runs it — via
act:# one-time: install act (https://nektosact.com/installation/) npm run ci:local # runs .github/workflows/ci.yml in Dockeractreads.actrc, which pins the catthehackerubuntu:act-latestimage (has Node, git, curl, etc.). This is the cleanest way to catch regressions in the workflow YAML itself. -
The e2e workflow —
actis not recommended here because the job spins up its own docker-compose stack, and docker-in-docker viaactmakes networking and disk usage painful. Use the wrapper script instead, which runs the same steps directly on your host:npm run e2e:local # build → start appliance → mint key → run e2e → teardown KEEP_RUNNING=1 npm run e2e:local # leave appliance up afterwards for poking SKIP_BUILD=1 npm run e2e:local # skip npm ci + tsc, reuse dist/Or break it apart:
npm run e2e:up # just bring up the appliance APIKEY=$(npm run --silent e2e:apikey) AL4_URL=https://localhost AL4_USERNAME=admin AL4_APIKEY=$APIKEY \ AL4_TLS_VERIFY=false npm run test:e2eRequirements: Linux host (or WSL2 / macOS), docker + compose plugin, node 20+, ~15 GB free disk. Windows users: run the scripts from inside WSL — the appliance won't come up under Git Bash because of how docker-compose paths and
opensslinteract on native Windows.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.