Open SOAR + MCP + Slack: An Architecture Note
Open SOAR + MCP + Slack: An Architecture Note
Comparing n8n, Tines, and Tracecat as automation layers — and where to draw the line when you add an AI agent to the loop.
The problem this solves
Once a security team gets more alerts per day than analyst-hours to triage them, there are two options: tune detections down until the volume is manageable, or automate the triage. The first hides real attacks. The second is what SOAR tooling exists for.
Adding a conversational agent on top — ask a question in Slack, get an enriched answer in-thread — is an obvious next step, and a genuinely useful one. It also introduces a failure mode that is easy to miss and expensive to discover. Most of this note is about the platform choice; the last section is about that failure mode, and it matters more than which platform you pick.
Three platforms
n8n
General-purpose automation that happens to work well for security.
| License | Fair-code (source-available, self-hostable) |
| Hosting | Self-host via Docker, or managed cloud |
| MCP | Client and server nodes — consumes MCP tools, exposes workflows as MCP tools |
Strengths
- Largest integration library of the three by a wide margin
- Mature Slack integration
- Self-hosting is well-trodden; Docker Compose and you're running
- Fast time-to-value — most SOAR playbooks are API calls in a trench coat, and n8n is very good at API calls
Weaknesses
- No security-native primitives. No case object, no artifact model, no MITRE tagging. You model all of that yourself.
- Workflow sprawl is real; without discipline you end up with sixty near-duplicate flows
- Fair-code license has restrictions worth reading if you plan to offer it as a service
Tines
Commercial SOAR with the best interface of the three.
| License | Commercial, with a usable free community tier |
| Hosting | SaaS-first |
| MCP | Supported |
Strengths
- Markedly better UX — the builder is genuinely pleasant, which matters more than it sounds when you're debugging a twelve-step playbook at 2am
- Security-native concepts built in rather than bolted on
- The community tier is a real product, not a demo
- No infrastructure to operate
Weaknesses
- Workflow definitions and run history live on their infrastructure. Whether that's acceptable depends entirely on your data and your clients'.
- Scaling past the free tier means a commercial conversation
- Less appealing if self-hosting is a requirement rather than a preference
Tracecat
Open-source SOAR built security-first.
| License | Apache 2.0 |
| Hosting | Self-host |
| MCP | Supported |
Strengths
- Genuinely permissive license — no fair-code caveats
- Security-shaped from the ground up: cases, artifacts, YAML-defined integrations
- Temporal-backed durable execution, which means long-running and retried workflows behave sanely
- The clearest long-term answer for "open SOAR" if it keeps maturing
Weaknesses
- Youngest of the three. Smaller community, thinner docs.
- Integration breadth well behind n8n — expect to write connectors
- You are an early adopter, with everything that implies
Choosing
The honest decision rule:
- Self-hosting is non-negotiable and you need breadth now → n8n
- SaaS is fine and UX is worth paying for → Tines
- You want security-native structure, open license, and can absorb early-adopter cost → Tracecat
For a small team or a one-person shop, integration breadth almost always beats conceptual fit in the first year. You will miss a missing connector every week; you will miss a case object approximately never, because you can model one in Postgres in an afternoon.
Migration between these is also cheaper than it looks. Playbooks are mostly HTTP calls and branching logic — a weekend of work, not a quarter. Don't over-optimize the initial choice.
Adding MCP and Slack
The appealing version: an alert lands in a Slack channel. Someone asks in-thread, "what is this IP?" An agent calls MCP tools, enriches it, and answers inline. No context switch, no copy-pasting into five tabs.
That's real value, and it's low risk — every one of those operations is a read.
The version that bites you is the same loop with write tools attached.
The problem
Alert content is attacker-influenced by definition. A hostname, a user-agent string, an email subject line, a filename, a process command line — all of these can be set by whoever triggered the alert, and all of them flow into the agent's context.
An agent that can both read alert content and take action has a prompt-injection surface. The attacker doesn't need to compromise your SOAR platform; they need to get text into an alert that your agent will read and act on.
This is not hypothetical and it is not solved by prompting the model to be careful.
The boundary
Reads go to the agent. Writes stay deterministic.
| Layer | What belongs there |
|---|---|
| MCP tools (agent-accessible) | Enrichment lookups, threat intel queries, log searches, case history, asset context — anything read-only |
| Workflow automation (deterministic) | Blocking, isolating, banning, disabling accounts, closing cases — anything that changes state |
The agent answers questions. It does not pull triggers.
The pattern that works
Alert fires
→ posts to Slack with context
→ analyst asks questions in-thread (agent, read-only MCP tools)
→ analyst clicks an action button
→ webhook to n8n / Tracecat
→ deterministic workflow executes the action
→ result posted back to thread
Human intent is explicit. The action path is auditable. The agent never holds the trigger.
A Slack interactive button hitting a webhook is unglamorous, and that's the point. It's a clear boundary between "a model produced this" and "a person decided this," and you want that boundary to be visible in your logs, not inferred.
Where the line can move
Auto-remediation without a human is defensible for narrow, reversible, well-understood cases — auto-banning an IP that three independent intel sources agree is malicious, for instance. The test is: is this reversible, and is the decision rule simple enough to express as a rule rather than a judgment?
If the answer involves the agent weighing context, keep the human in the loop.
Prerequisites nobody mentions
None of this works without the unglamorous groundwork underneath it:
- Logs that actually ship. Centralized collection that doesn't silently stop.
- Consistent formats. A playbook that parses alerts can only be as reliable as the structure of what it's parsing.
- Known-good configuration. If you can't tell what changed, you can't tell what's an incident.
Automation amplifies whatever instrumentation you already have. If the instrumentation is inconsistent, automation makes the inconsistency faster rather than fixing it.
Summary
- Pick the platform on integration breadth and hosting constraints, not on feature-matrix completeness. Migration is cheap.
- MCP in Slack is a strong addition for enrichment and triage.
- Give the agent read tools only. Keep state-changing actions in deterministic workflows triggered by explicit human action or by simple, reversible rules.
- The boundary between "a model suggested this" and "a person authorized this" should be visible in your audit log, not inferred from it.
Drafted with Claude; the framing and the errors are mine.