Splunk MCP for SOC Operations
Enables automated creation of incident tickets in Jira for security events, with automatic priority and SLA calculation.
Enables pushing alert notifications to PagerDuty for incident response, with severity-based routing and on-call escalation.
Allows sending alert notifications to Slack channels, with severity-based routing for real-time security incident communication.
Provides comprehensive SOC investigation tools including IP pivoting, lateral movement detection, data exfiltration analysis, attack timeline reconstruction, and threat intelligence enrichment by querying Splunk indexes and security data.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Splunk MCP for SOC Operationspivot by IP 192.168.1.100"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Splunk MCP for SOC Operations
An AI-native MCP (Model Context Protocol) server for SOC operations with Splunk, featuring automated investigation tools, label harvesting, and DeepTempo integration capabilities.
๐ฏ Overview
This project extends the capabilities of livehybrid/splunk-mcp with SOC-specific enrichment tools and security controls designed for AI-driven security investigations via Claude Desktop and other MCP clients.
Key Features
Traditional SOC Workflows - IP pivoting, lateral movement detection, data exfiltration analysis
AI-Native Investigation - Cross-platform correlation, attack timeline reconstruction
Label Harvesting - Automatic discovery and mapping of Splunk field labels
Production Security - Input validation, audit logging, output sanitization
Multi-Mode Operation - SSE, STDIO, and API modes for flexible deployment
๐ Quick Start
Prerequisites
Python 3.10 or higher
Splunk Enterprise or Cloud instance
pip (included with Python)
Installation
Clone the repository:
git clone https://github.com/mando222/splunk-mcp-soc.git cd splunk-mcp-socInstall dependencies:
Using pip (recommended):
pip install -r requirements.txtOr with UV:
uv syncOr with Poetry:
poetry installConfigure environment variables:
Create a
.envfile:SPLUNK_HOST=localhost SPLUNK_PORT=8089 SPLUNK_USERNAME=admin SPLUNK_PASSWORD=your-password SPLUNK_SCHEME=https VERIFY_SSL=falseTest the connection:
python test_connection.pyRun the MCP server:
# STDIO mode (for Claude Desktop) python splunk_mcp.py stdio # SSE mode (default) python splunk_mcp.py # API mode python splunk_mcp.py api
๐ ๏ธ Available MCP Tools
Core Operations
health_check - Verify Splunk connectivity and available apps
ping - Check MCP server status
current_user - Get authenticated user information
list_users - List all Splunk users and roles
Index & Search Management
list_indexes - List all accessible indexes
get_index_info - Get detailed information about a specific index
indexes_and_sourcetypes - Comprehensive index and sourcetype mapping
search_splunk - Execute Splunk search queries with time ranges
list_saved_searches - View saved searches
KV Store Operations
list_kvstore_collections - List all KV store collections
create_kvstore_collection - Create new collections
delete_kvstore_collection - Remove collections
SOC Investigation Tools
pivot_by_ip - Investigate all activity from a specific IP address
find_lateral_movement - Detect lateral movement patterns
calculate_data_exfiltration - Analyze and quantify data exfiltration
build_attack_timeline - Construct chronological attack timelines
correlate_with_deeptempo_finding - Cross-reference with DeepTempo findings
Threat Intelligence Integration
enrich_ip_with_threat_intel - Enrich IPs with reputation data from multiple sources
Queries AbuseIPDB, AlienVault OTX, and internal Splunk threat lists
Provides reputation score, threat types, and confidence levels
check_ioc_reputation - Quick reputation check for any IOC (IP, domain, hash, URL)
Auto-detects IOC type and provides actionable verdict
add_to_threat_list - Add confirmed IOCs to Splunk threat intelligence
Supports expiration and automatic cleanup
get_mitre_attack_context - Get detailed MITRE ATT&CK technique information
Maps findings to tactics, techniques, and procedures
Includes detection methods and mitigations
Automated Response Actions
block_ip_address - Block malicious IPs at firewall/proxy level
Temporary or permanent blocking
Auto-unblock capability with configurable duration
isolate_host - Quarantine compromised hosts from network
Full, partial, or monitoring-only isolation levels
Integrates with NAC and endpoint security tools
create_incident_ticket - Auto-create tickets in ITSM platforms
ServiceNow, Jira, or native Splunk incident tracking
Automatic priority and SLA calculation
send_alert_notification - Push alerts to communication channels
Slack, Microsoft Teams, PagerDuty, email, SMS
Severity-based routing
Advanced Analytics & Anomaly Detection
detect_anomalies - Statistical anomaly detection on time-series data
Z-score based detection with configurable sensitivity
Identifies spikes, dips, and unusual patterns
identify_rare_events - Find statistically rare occurrences
Detects new processes, domains, or behaviors
Useful for zero-day and APT detection
baseline_normal_behavior - Establish behavioral profiles
Learn normal patterns for users, hosts, or services
Enables deviation-based threat detection
Label Harvesting
harvest_labels - Discover field labels and schemas from Splunk indexes
Configurable scope (all indexes, specific indexes, or CIM fields only)
Returns field names, types, sample values, and metadata
Supports filtering by index and time range
get_field_summary - Get detailed information about a specific field
Deep dive into field values, distribution, and relationships
Useful for understanding individual field usage
export_labels_to_deeptempo - Export labels in DeepTempo-compatible format
Generic JSON structure that can be adapted to DeepTempo's needs
Optional file export for integration workflows
๐ Demo Scenarios
Scenario 1: IP Investigation
Query: "Show me all activity from IP 10.1.42.42"
Results:
- 65 total events discovered
- 47 unique destinations contacted
- 10+ lateral movement attempts detected
- 1.2 GB data exfiltration identifiedScenario 2: Attack Timeline
Query: "Build attack timeline for 10.1.42.42 and correlate with DeepTempo"
Results:
- 32-day attack timeline reconstructed
- Initial compromise โ lateral movement โ exfiltration
- 12 similar incidents identified
- Complete MITRE ATT&CK mappingScenario 3: Threat Hunting
Query: "Hunt for similar C2 beaconing patterns across all hosts"
Results:
- 3 additional compromised hosts found
- Common service account identified (jenkins_service)
- Botnet infrastructure mapped๐งช Testing
Generate and ingest test security data:
# Generate test data
python generate_test_data.py
# Ingest into Splunk
python ingest_test_data.py your-passwordThis creates an mcp_demo index with 115 security events:
50 C2 beaconing events
40 authentication/lateral movement events
20 DNS tunneling events
5 data exfiltration events
Run the test suite:
pytest tests/๐ณ Docker Support
Run with Docker Compose
SSE Mode (default):
docker compose up -d mcpAPI Mode:
docker compose run --rm mcp python splunk_mcp.py apiSTDIO Mode:
docker compose run -i --rm mcp python splunk_mcp.py stdioRun Tests in Docker
./run_tests.sh --docker๐ง Configuration
Environment Variables
Variable | Description | Default |
| Splunk server hostname | localhost |
| Splunk management port | 8089 |
| Authentication username | admin |
| Authentication password | - |
| Optional: Use token instead of user/pass | - |
| Connection scheme (http/https) | https |
| Enable SSL certificate verification | true |
| Logging level | INFO |
| Server mode (sse/api/stdio) | sse |
Claude Desktop Integration
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"splunk-soc": {
"command": "python",
"args": [
"/path/to/splunk-mcp-soc/splunk_mcp.py",
"stdio"
],
"env": {
"SPLUNK_HOST": "localhost",
"SPLUNK_PORT": "8089",
"SPLUNK_USERNAME": "admin",
"SPLUNK_PASSWORD": "your-password"
}
}
}
}๐ Documentation
Document | Purpose |
Detailed setup guide | |
Complete tool specifications | |
Investigation workflow examples | |
Development guidelines | |
Testing procedures |
๐๏ธ Architecture
Claude Desktop / MCP Client
โ
โโโ Splunk MCP Server (this project)
โ โโโ SOC Investigation Tools
โ โโโ Label Harvesting
โ โโโ Splunk SDK Integration
โ
โโโ DeepTempo MCP Server (separate)
โโโ Embedding Similarity Search
โโโ MITRE ATT&CK Mapping
โโโ LogLM Analysis๐ Security Considerations
Current Implementation
โ SSL/TLS support with configurable verification
โ Token-based and credential-based authentication
โ Environment variable configuration
โ Input validation on all tools
โ Audit logging support
Best Practices
Never commit
.envfilesUse
VERIFY_SSL=truein productionRotate credentials regularly
Monitor audit logs
Use least-privilege Splunk accounts
๐ค Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
๐ Credits
This project is built upon livehybrid/splunk-mcp v0.3.0 and extends it with:
SOC-specific investigation tools
Label harvesting capabilities
DeepTempo integration support
Enhanced security controls
Dependencies
FastMCP - MCP server framework
Splunk SDK for Python - Splunk API client
python-decouple - Configuration management
๐ License
Apache License 2.0 - See LICENSE for details.
๐ Troubleshooting
Connection Issues
# Test Splunk connectivity
python test_connection.py
# Check logs
tail -f splunk_mcp.logNo Data in Splunk
# Ingest test data
python ingest_test_data.py your-password
# Verify in Splunk UI
index=mcp_demo | stats count by event_typeMCP Server Won't Start
Verify
.envfile exists with correct valuesCheck Python version (3.10+ required)
Ensure Splunk is accessible
Review error logs
๐ Support
For issues and questions:
Check documentation
Review error logs
Open an issue on GitHub
Built with FastMCP for AI-native security operations ๐
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/DeepTempo/splunk-mcp-soc'
If you have feedback or need assistance with the MCP directory API, please join our Discord server