Command Injection Vulnerability in MCP File Reader
@Eliran79
About Command Injection Vulnerability in MCP File Reader
A deliberately vulnerable MCP server demonstrating command injection flaws. This Python implementation shows how lack of input sanitization in file paths leads to critical security vulnerabilities allowing attackers to execute arbitrary commands. For educational purposes only - d
Config
No standard config provided
This server doesn't expose a parseable MCP config block in its README. See the repository for install instructions.
RepositoryTools
No tools detected
We auto-extract tools from the README. The maintainer can list them under a ## Tools heading to populate this section.
Overview
What is Command Injection Vulnerability in MCP File Reader?
A deliberately vulnerable Python MCP server that demonstrates a critical command injection flaw in its read_file tool, intended for educational security testing.
How to use Command Injection Vulnerability in MCP File Reader?
Install Python 3.12+, MCP library 1.6.0, clone the repository, run mcp install main.py, configure Claude Desktop as shown in the README, then start with mcp dev main.py. Use the MCP Inspector to send malicious file_name values to the read_file tool.
Key features of Command Injection Vulnerability in MCP File Reader
- Uses
shell=Truein subprocess calls - Interpolates user input directly into a shell command
- Performs only superficial path validation
- Demonstrates command injection payloads like
; whoami - Includes a proper fix using
shlex.quote()or list arguments
Use cases of Command Injection Vulnerability in MCP File Reader
- Security researchers learning about command injection in MCP servers
- Educators demonstrating the dangers of
shell=Truewith user input - Practicing exploitation techniques in a safe, local environment
FAQ from Command Injection Vulnerability in MCP File Reader
What is the vulnerability in this server?
The read_file function runs cat {file_name} with shell=True, allowing an attacker to append arbitrary shell commands after a semicolon in the file name.
How can I fix the vulnerability?
Replace the unsafe call with a list argument (subprocess.check_output(['cat', file_name])) or use shlex.quote(file_name) if shell=True is necessary. Also validate that the resolved path stays within the allowed directory.
What dependencies are required?
Python 3.12 or higher and the MCP library version 1.6.0.
Can this server be used in production?
No, this implementation is for educational purposes only and must never be used on production systems or with sensitive data.
How do I connect to the server from an MCP client?
Configure Claude Desktop by editing ~/.config/claude-desktop/claude_desktop_config.json with the appropriate command and arguments as shown in the README.
Frequently asked questions
What is the vulnerability in this server?
The `read_file` function runs `cat {file_name}` with `shell=True`, allowing an attacker to append arbitrary shell commands after a semicolon in the file name.
How can I fix the vulnerability?
Replace the unsafe call with a list argument (`subprocess.check_output(['cat', file_name])`) or use `shlex.quote(file_name)` if `shell=True` is necessary. Also validate that the resolved path stays within the allowed directory.
What dependencies are required?
Python 3.12 or higher and the MCP library version 1.6.0.
Can this server be used in production?
No, this implementation is for educational purposes only and must never be used on production systems or with sensitive data.
How do I connect to the server from an MCP client?
Configure Claude Desktop by editing `~/.config/claude-desktop/claude_desktop_config.json` with the appropriate command and arguments as shown in the README.
Basic information
More Developer Tools MCP servers

discoverGPT
Joe MonastierodiscoverGPT is visualAI's unified MCP gateway for AI commerce, exposing 29 tools across four capabilities on one canonical product catalog: trimodal search (natural-language, precise-color, and image-similarity), AI cata

Termany
thinkany-aiAgent-Native Terminal

Kaiva Bridge
Kaiva Bridge turns any Postgres database or OpenAPI spec into a secure, hosted MCP server — per-tool access control, every call audited. Dependency Trust gives coding agents the senior-engineer check before adding a dep

Reelier
Maxime HouleAgents make claims. Reelier writes receipts — record an agent's tool-call workflow once, replay it deterministically at 0 tokens, and diff runs to catch drift.

Meticulous
MeticulousMCP server and skills to connect to the Meticulous UI testing platform.
Comments