About Cisco Security Incident Response AI
Cisco Security Incident Response AI is an MCP server in the Agents category: an agentic AI system that autonomously monitors Cisco ISE security logs, analyzes threats with an LLM, and proposes sandboxed firewall rules — all coordinated through a custom MCP (Model Context Protocol) server.
Install
git clone https://github.com/3034saurabhkumar/Cisco-Security---Incident-Response-AIThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (5)
blockEndpointQuarantine via ISE CoA + assign quarantine VLAN
Parameters not published.
getActivePoliciesList ISE AuthZ policies + FTD ACL rules
Parameters not published.
getEndpointStatusISE endpoint profile + posture + threat score
Parameters not published.
getSecurityLogsRADIUS/TACACS log stream with auth events
Parameters not published.
testRuleInSandboxValidate FTD ACL rule against simulated traffic
Parameters not published.
Ask AI
Ask AI about Cisco Security Incident Response AI
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
🛡️ Cisco Security - Incident Response AI
Spring Boot + Spring AI + Custom MCP Server
An agentic AI system that autonomously monitors Cisco ISE security logs, analyzes threats with an LLM, and proposes sandboxed firewall rules — all coordinated through a custom MCP (Model Context Protocol) server.
Architecture
┌─────────────────────────────────────────────────────────────────────┐
│ REST API + SSE Stream │
│ POST /api/incidents/trigger GET /api/incidents/stream │
│ GET /api/incidents/{id} POST /api/incidents/{id}/approve │
└───────────────────────────┬─────────────────────────────────────────┘
│
┌─────────────▼─────────────┐
│ IncidentResponseWorkflow │ (Orchestrator)
└─────────────┬─────────────┘
│ Sequential Pipeline
┌─────────────────┼──────────────────┐
│ │ │
┌─────▼──────┐ ┌──────▼─────┐ ┌───────▼──────┐
│ MONITOR │ │ ANALYZER │ │ REMEDIATOR │
│ Agent 1 │──▶│ Agent 2 │──▶│ Agent 3 │
│ │ │ │ │ │
│ Scan ISE │ │ FP detect │ │ Sandbox rule │
│ logs via │ │ + LLM │ │ + block IP │
│ MCP tool │ │ reasoning │ │ via MCP │
└────────────┘ └────────────┘ └──────────────┘
│ │ │
└────────────────┴──────────────────┘
│ MCP Tool Calls
┌────────────▼──────────────────────┐
│ CiscoIseMcpServer (MCP) │
│ @Tool getSecurityLogs() │
│ @Tool getEndpointStatus() │
│ @Tool blockEndpoint() │
│ @Tool testRuleInSandbox() │
│ @Tool getActivePolicies() │
└───────────────────────────────────┘
│
┌────────────▼────────────┐
│ Anthropic Claude │
│ (claude-sonnet-4) │
│ via Spring AI │
└─────────────────────────┘
Project Structure
incident-response-ai/
├── pom.xml
└── src/main/java/com/security/incident/
├── IncidentResponseApplication.java ← Spring Boot entry point
│
├── mcp/
│ ├── service/
│ │ ├── CiscoIseMcpServer.java ← MCP Server wrapper
│ │ ├── CiscoIseClient.java ← [NEW] Gateway interface
│ │ └── RestCiscoIseClient.java ← [NEW] Real REST API impl
│ └── model/
│ ├── LogEntry.java ← ISE log event model
│ └── SecurityModels.java ← Endpoint/Block/Sandbox models
│
├── agents/
│ ├── MonitorAgent.java ← Agent 1: Log scanning
│ ├── AnalyzerAgent.java ← Agent 2: Threat analysis
│ └── RemediatorAgent.java ← Agent 3: Rule + block
│
├── workflow/
│ ├── IncidentResponseWorkflow.java ← Pipeline orchestrator
│ └── IncidentReport.java ← Shared state carrier
│
├── events/
│ └── AgentEvent.java ← SSE broadcast events
│
├── config/
│ └── AgentConfig.java ← Spring AI + MCP wiring
│
└── controller/
└── IncidentController.java ← REST + SSE endpoints
Tech Stack
| Component | Technology |
|---|---|
| Framework | Spring Boot 3.3 + Java 21 |
| AI Orchestration | Spring AI 1.0.0 |
| LLM | Anthropic Claude (claude-sonnet-4) |
| HTTP Client | Spring RestClient (modern & fluent) |
| MCP Server | Spring AI MCP Server Starter |
| MCP Protocol | @Tool annotations + stdio/SSE |
| Streaming | Spring MVC SSE (SseEmitter) |
| Build | Maven |
Setup & Run
1. Prerequisites
- Java 21+
- Maven 3.9+
- Anthropic API Key
2. Set your API key
export ANTHROPIC_API_KEY=sk-ant-...
3. Build & run
cd incident-response-ai
mvn clean package -DskipTests
java -jar target/incident-response-ai-1.0.0.jar
API Usage
Trigger the 3-agent pipeline
curl -X POST http://localhost:8080/api/incidents/trigger
Response:
{
"status": "PIPELINE_STARTED",
"message": "Incident response pipeline is running...",
"stream": "/api/incidents/stream"
}
Watch real-time SSE events (in another terminal)
curl -N http://localhost:8080/api/incidents/stream
You'll see events like:
event: agent-event
data: {"agent":"MonitorAgent","status":"STARTED","message":"Scanning Cisco ISE logs..."}
event: agent-event
data: {"agent":"MonitorAgent","status":"COMPLETED","message":"Found 2 suspicious IPs: [185.220.101.47, 198.199.67.82]"}
event: agent-event
data: {"agent":"AnalyzerAgent","status":"STARTED","message":"Analyzing IP 185.220.101.47..."}
event: agent-event
data: {"agent":"RemediatorAgent","status":"COMPLETED","message":"Sandbox APPROVED, block applied, rollback: RBK-1002"}
Get incident report
curl http://localhost:8080/api/incidents/INC-ABC12345
Approve the AI's recommended remediation (human-in-the-loop)
curl -X POST http://localhost:8080/api/incidents/INC-ABC12345/approve
Agent Decision Logic
MonitorAgent
│ Calls: getSecurityLogs(50, "ALL")
│ Flags IPs with: auth_attempts > 5, EventType IN [BRUTE_FORCE, PORT_SCAN...]
▼
Suspicious IPs found?
├── NO → Close incident: CLEAN
└── YES ▼
AnalyzerAgent
│ Calls: getEndpointStatus(primaryIp)
│ LLM evaluates: threat score, posture, compliance tags, ISE profile
▼
Verdict?
├── FALSE_POSITIVE → Close: FALSE_POSITIVE (no action)
├── confidence < 0.6 → Close: ESCALATED (human SOC review)
└── GENUINE_THREAT ▼
RemediatorAgent
│ Designs FTD block rule
│ Calls: testRuleInSandbox(...)
│ Sandbox result?
│ REJECT / false_positives found → DEFERRED (human review)
│ APPROVE ▼
│ Calls: blockEndpoint(ip, reason, QUARANTINE)
▼
Status: AWAITING_APPROVAL
(human must call /approve to push to production)
MCP Server Tools
The CiscoIseMcpServer exposes 5 tools via @Tool annotations:
| Tool | Description |
|---|---|
getSecurityLogs |
RADIUS/TACACS log stream with auth events |
getEndpointStatus |
ISE endpoint profile + posture + threat score |
blockEndpoint |
Quarantine via ISE CoA + assign quarantine VLAN |
testRuleInSandbox |
Validate FTD ACL rule against simulated traffic |
getActivePolicies |
List ISE AuthZ policies + FTD ACL rules |
These tools are auto-registered by Spring AI's MCP Server Starter and available:
- In-process: via
MethodToolCallbackProvider(used by agents in this app) - Via MCP stdio: any external MCP client (Claude Desktop, etc.) can connect
Extending to Production
| Area | Implementation Status |
|---|---|
| Cisco ISE | ✅ Implemented via RestCiscoIseClient (ERS API) |
| Firewall | Integrate with Cisco FMC REST API for real FTD rule pushes |
| Persistence | Replace in-memory store with PostgreSQL or Redis |
| Auth | Add OAuth2/JWT to the REST API |
| Notifications | Add PagerDuty / Slack webhooks on ESCALATED status |
| Audit log | Write to Splunk or Elastic for SIEM integration |
Learning Outcomes (SDE Transition)
This project demonstrates:
- ✅ Spring Boot 3 – REST APIs, SSE streaming, async processing
- ✅ Spring AI – ChatClient, tool calling, agentic loops
- ✅ MCP Protocol – Custom server with @Tool annotations
- ✅ Agent Design Patterns – Monitor → Analyze → Remediate pipeline
- ✅ Human-in-the-loop – Safety gate before production changes
- ✅ Domain-Driven Design – Rich domain model (IncidentReport)
- ✅ Event-Driven – ApplicationEventPublisher + @EventListener
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.