Secure File & Log Analyzer MCP Server
Enables secure analysis of log files by listing, summarizing, and searching for error patterns, with defenses against path traversal, symlink attacks, and data leakage.
README
Secure File & Log Analyzer MCP Server
A production-grade, security-hardened Model Context Protocol (MCP) server built with Python and FastMCP. This server exposes a curated catalog of log analysis tools to AI agents while implementing strict input validation, OS-level symlink/TOCTOU mitigation, streaming resource protection, and dynamic response redaction.
🛠️ Exposed MCP Tools
-
list_log_files
Lists the regular files in the configured safe directory (defaults to./mock_logs/), sorted alphabetically. -
view_log_summary
Reads a requested log file and returns its size, line count, and a brief preview. -
search_error_patterns
Streams and searches a given log file for matching keywords (e.g.,"CRITICAL","ERROR"), returning matching lines with line numbers.
🔒 Security Posture & Threat Model
This codebase relies on defense-in-depth. For a complete analysis of assets and attackers, see THREAT_MODEL.md.
| Threat / Attack Vector | Mitigation Strategy | Implementation Details |
|---|---|---|
| Path Traversal | Blocks access to system files (/etc/passwd). |
1. Input allowlist (^[a-zA-Z0-9_\-\./]+$).<br>2. Resolves path and verifies Path.is_relative_to(). |
| Symlink / TOCTOU | Prevents race condition swapping. | 1. Opens files using os.O_NOFOLLOW on Unix.<br>2. On Windows, handle-based validation. |
| Shell Injection | Blocks OS command chaining. | 1. Reads files natively in Python.<br>2. Sanitizes keywords against shell metacharacters. |
| Data Leakage | Prevents token exfiltration. | 1. Real-time regex redaction engine.<br>2. Masks API keys, JWTs, and AWS credentials. |
| Resource Exhaustion | Prevents DoS and OOM crashes. | 1. Line-by-line file streaming.<br>2. Configuration limits on file size and search payload. |
⚙️ Configuration
The server is configured using environment variables. If not provided, secure defaults are applied:
| Environment Variable | Description | Default Value |
|---|---|---|
LOG_ANALYZER_BASE_DIR |
The absolute or relative path to the safe logs folder. | ./mock_logs |
LOG_ANALYZER_MAX_FILE_SIZE |
Maximum file size (in bytes) that the server is allowed to process. | 52428800 (50 MB) |
LOG_ANALYZER_MAX_PREVIEW_LINES |
Number of lines returned in the log preview. | 10 |
LOG_ANALYZER_MAX_SEARCH_RESULTS |
Maximum number of matching lines returned in a search. | 500 |
LOG_ANALYZER_MAX_SEARCH_CHARS |
Maximum character length of the search result response payload. | 100000 (100,000 characters) |
🚀 Getting Started
Prerequisites
- Python 3.10 or higher.
- A virtual environment is highly recommended.
Installation
- Clone the repository and navigate to the root directory.
- Create and activate a virtual environment:
python -m venv .venv # On Windows (PowerShell): .\.venv\Scripts\Activate.ps1 # On Unix/macOS: source .venv/bin/activate - Install dependencies:
pip install -r requirements.txt
Running Tests
Run the comprehensive unit test suite to verify security guards and tools functionality:
python -m unittest test_server.py
🔌 Connecting to MCP Clients
1. Claude Desktop
To add this server to Claude Desktop, edit your claude_desktop_config.json (located at %APPDATA%\Claude\claude_desktop_config.json on Windows or ~/Library/Application Support/Claude/claude_desktop_config.json on macOS) and add the server definition:
{
"mcpServers": {
"secure-log-analyzer": {
"command": "C:\\absolute\\path\\to\\.venv\\Scripts\\python.exe",
"args": [
"C:\\absolute\\path\\to\\mcp-trust-layer\\server.py"
],
"env": {
"LOG_ANALYZER_BASE_DIR": "C:\\absolute\\path\\to\\mcp-trust-layer\\mock_logs",
"LOG_ANALYZER_MAX_FILE_SIZE": "52428800"
}
}
}
}
[!NOTE] Make sure to adjust the absolute paths to the python executable and the
server.pyfile to match your local installation.
2. MCP Inspector (Debugging Tool)
You can run and inspect the server using the MCP Inspector tool:
npx -y @modelcontextprotocol/inspector C:\absolute\path\to\.venv\Scripts\python.exe C:\absolute\path\to\mcp-trust-layer\server.py
Open the URL output in your terminal to interactively call the tools and test validations.
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.