SOLVE-IT MCP Server
Provides LLM access to the SOLVE-IT Digital Forensics Knowledge Base, enabling natural language exploration of investigation techniques, weaknesses, and mitigations.
README
SOLVE-IT MCP Server
MCP server providing LLM access to the SOLVE-IT Digital Forensics Knowledge Base.
SOLVE-IT is a systematic digital forensics knowledge base inspired by MITRE ATT&CK, containing comprehensive mappings of investigation techniques, weaknesses, and mitigations. This MCP server exposes the entire SOLVE-IT knowledge base through tools that enable LLMs to assist with discussions and use cases related to digital forensics.
What is SOLVE-IT?
SOLVE-IT provides a structured approach to digital forensics investigations through:
- Techniques (T1001, T1002...): Digital forensic investigation methods
- Weaknesses (W1001, W1002...): Potential problems/limitations of techniques
- Mitigations (M1001, M1002...): Ways to address weaknesses
- Objectives: Categories that organize techniques by investigation goals
See the main repository here: https://github.com/SOLVE-IT-DF/solve-it
Quick Start
1. Prerequisites
Ensure you have the SOLVE-IT knowledge base available:
https://github.com/SOLVE-IT-DF/solve-it.git
2. Install the MCP Server
git clone <this-repository>
cd solve_it_mcp
pip install -e .
3. Run the Server
python3 src/server.py
4. Configure MCP Client
Add to your MCP client configuration:
{
"mcpServers": {
"solveit": {
"command": "python3",
"args": ["/path/to/solve_it_mcp/src/server.py"],
"cwd": "/path/to/solve_it_mcp"
}
}
}
Available Tools
The server provides 20 tools organized into functional categories:
Core Information Tools
get_database_description
Get comprehensive overview of the SOLVE-IT database and server capabilities.
Parameters: None
Example:
Tool: get_database_description
Result: Complete database statistics and server information
search
Search across techniques, weaknesses, and mitigations using keywords.
Parameters:
keywords(string): Search terms. Use quotes for exact phrasesitem_types(array, optional): Filter by type:["techniques", "weaknesses", "mitigations"]
Examples:
Tool: search
Parameters: {"keywords": "network analysis", "item_types": ["techniques"]}
Tool: search
Parameters: {"keywords": "\"log analysis\""}
Detailed Lookup Tools
get_technique_details
Retrieve complete information for a specific technique.
Parameters:
technique_id(string): Technique ID (e.g., "T1002")
get_weakness_details
Retrieve detailed information for a specific weakness.
Parameters:
weakness_id(string): Weakness ID (e.g., "W1001")
get_mitigation_details
Retrieve detailed information for a specific mitigation.
Parameters:
mitigation_id(string): Mitigation ID (e.g., "M1001")
Relationship Analysis Tools
get_weaknesses_for_technique
Find all weaknesses associated with a technique.
Parameters:
technique_id(string): Technique ID
get_mitigations_for_weakness
Find all mitigations that address a specific weakness.
Parameters:
weakness_id(string): Weakness ID
get_techniques_for_weakness
Find all techniques that have a specific weakness.
Parameters:
weakness_id(string): Weakness ID
get_weaknesses_for_mitigation
Find all weaknesses addressed by a specific mitigation.
Parameters:
mitigation_id(string): Mitigation ID
get_techniques_for_mitigation
Find all techniques that benefit from a specific mitigation.
Parameters:
mitigation_id(string): Mitigation ID
Objective Management Tools
list_objectives
List all objectives from the current mapping.
Parameters: None
get_techniques_for_objective
Get all techniques associated with a specific objective.
Parameters:
objective_name(string): Name of the objective
list_available_mappings
Show all available objective mapping files.
Parameters: None
load_objective_mapping
Switch to a different objective mapping (e.g., carrier.json, dfrws.json).
Parameters:
filename(string): Mapping filename (e.g., "carrier.json")
Bulk Retrieval Tools
Concise Format Tools
get_all_techniques_with_name_and_id- All techniques with ID and name onlyget_all_weaknesses_with_name_and_id- All weaknesses with ID and name onlyget_all_mitigations_with_name_and_id- All mitigations with ID and name only
Full Detail Tools (Use with caution - large data)
get_all_techniques_with_full_detail- All techniques with complete detailsget_all_weaknesses_with_full_detail- All weaknesses with complete detailsget_all_mitigations_with_full_detail- All mitigations with complete details
Usage Examples
<Pending>
Data Configuration
The server automatically looks for the SOLVE-IT knowledge base in these locations:
../solve-it-main/(adjacent to server directory)./solve-it-main/(in current directory)- Environment variable
SOLVE_IT_DATA_PATH
Ensure your SOLVE-IT data directory contains:
data/solve-it.json(default objective mapping)data/techniques/(technique JSON files)data/weaknesses/(weakness JSON files)data/mitigations/(mitigation JSON files)
Performance Considerations
- Search operations: Typically complete in <5 seconds
- Bulk operations: May take <10 seconds for full detail retrievals
- Individual lookups: Near-instant response
- Relationship queries: Optimized for fast traversal
Error Handling
The server provides comprehensive error handling:
- Missing data: Graceful fallback with helpful error messages
- Invalid IDs: Clear feedback on incorrect technique/weakness/mitigation IDs
- Connection issues: Automatic retry and timeout handling
- Large datasets: Memory-efficient processing with warnings
Integration Examples
Claude Desktop
{
"mcpServers": {
"solveit": {
"command": "python3",
"args": ["/path/to/solve_it_mcp/src/server.py"],
"cwd": "/path/to/solve_it_mcp"
}
}
}
Security Features
- Read-only access: Server only reads from the knowledge base
- Input validation: All parameters validated with Pydantic schemas
- Timeout protection: Automatic timeouts for long-running operations
- Memory limits: Protection against excessive memory usage
- Path validation: Secure file path handling
Development
Running Tests
# Run integration tests with real SOLVE-IT data
python3 -m pytest solve_it_mcp/tests/integration/ -v
# Run unit tests
python3 -m pytest solve_it_mcp/tests/unit/ -v
Troubleshooting
Common Issues
"Knowledge base not found"
- Ensure SOLVE-IT data is in
../solve-it-main/or setSOLVE_IT_DATA_PATH - Verify the data directory contains
data/solve-it.json
"Technique/Weakness/Mitigation not found"
- Check ID format (e.g., "T1001", "W1001", "M1001")
- Use
searchtool to find valid IDs
"Mapping file not found"
- Use
list_available_mappingsto see available files - Ensure mapping files are in
data/directory
License
MIT License - See LICENSE file for details.
Contributing
This server is part of the SOLVE-IT ecosystem. Contributions welcome through:
- Issue reports for bugs or missing features
- Pull requests for improvements
- Documentation enhancements
- Additional tool implementations
Ready to investigate? Start with get_database_description to explore the knowledge base, then use search to find relevant techniques for your investigation.
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.