MCP Python Toolbox
Provides dependency management for Flask applications, allowing installation and version management of the web framework.
Supports running tests for Python projects through the testing framework.
Provides comprehensive Python development tools including code analysis, formatting with Black/PEP8, linting with Pylint, project management with virtual environments, dependency handling, and safe code execution capabilities.
Click on "Deploy 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., "@MCP Python Toolboxformat the code in main.py using Black"
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.
MCP Python Toolbox
A local Model Context Protocol (stdio) server that exposes Python workspace tools to an MCP client such as Claude Desktop: read/write files, analyze/format/lint Python, manage a project .venv, and run code.
It is not published to PyPI. It does not sandbox execution. See Security.
Overview
Start the server against a workspace directory. A connected MCP client can then:
Read, write, and delete files, and list directories, inside that workspace
Analyze, format, and lint Python code
Create a virtual environment and install dependencies
Execute Python snippets on the host
Related MCP server: MCP Toolkit
Features
File Operations (FileOperations)
File tools scoped to a workspace directory
Paths are resolved and rejected if they fall outside the workspace root
Read and write files with line-specific operations (
write_filecreates parent directories)Delete files (
delete_filedoes not remove directories)List directory contents with metadata (size, type, modification time)
create_directoryexists on the class but is not registered as an MCP tool
Code Analysis (CodeAnalyzer)
Parse and analyze Python code structure using AST
Extract detailed information about:
Import statements and their aliases
Function definitions with arguments and decorators
Class definitions with base classes and methods
Global variable assignments
Format code using:
Black (default)
PEP8 (using autopep8)
Lint with Pylint (JSON output, 30s subprocess timeout)
Project Management (ProjectManager)
Create a workspace
.venv(venv.create, with pip)Install dependencies into that
.venvviapip:From
requirements.txtFrom
pyproject.toml[project.dependencies]
update_package/create_requirements_fileon the class use the.venvinterpreter (pip install --upgrade/pip freeze)list_packagesandcheck_conflictsinspect packages visible to the running server interpreter (importlib.metadata), not the workspace.venv
Code Execution (CodeExecutor)
Write the snippet to a temp file and run it with
subprocessUses the workspace
.venvPython if that interpreter existsCapture stdout, stderr, and exit codes
Optional working directory, validated with the same resolve-and-reject check as
FileOperations(default: workspace root; symlink escapes are rejected)Configurable timeout (default 30s, max 300s); on expiry the process group is killed and any partial stdout/stderr is returned
Still unsandboxed: same user permissions, filesystem and network access, no resource limits beyond the timeout
Security
There is no sandbox. The server and every tool run with the same OS user and permissions as the process that started it. There are no containers, seccomp filters, import allowlists, or network restrictions. Use this only with MCP clients and workspaces you trust.
What the code actually enforces:
read_file,write_file,delete_file, andlist_directoryresolve paths and reject those outside the workspace root. Analyze/lint/format do not use that check.execute_pythonis still unsandboxed host execution: a temp.pyfile plus a subprocess on the workspace.venvinterpreter. The snippet can read or write anywhere that user can, start processes, and use the network. Two guards exist and nothing more:Timeout (default 30 seconds;
--execute-timeout, theMCP_PYTHON_EXECUTE_TIMEOUTenvironment variable, or a per-calltimeoutargument, capped at 300 seconds). On expiry the whole process group is killed and any partial stdout/stderr is returned in a structured error.working_diris resolved with the same workspace checkFileOperationsuses. Paths that resolve outside the workspace — including symlink escapes — are rejected. The default is the workspace root.
There are no other resource limits (CPU, memory, open files, or network).
create_venvandinstall_dependenciescan create.venvand install packages into it with pip.
Do not expose the server to untrusted clients, and do not point --workspace at a tree you are unwilling to let an assistant modify or execute code from.
Installation
Clone the repository:
git clone https://github.com/gianlucamazza/mcp_python_toolbox.git
cd mcp_python_toolboxCreate and activate a virtual environment:
python -m venv .venv
source .venv/bin/activate # Linux/Mac
# or
.venv\Scripts\activate # WindowsInstall the package in development mode:
pip install -e ".[dev]"Usage
Running as a CLI Tool
The simplest way to start the server is using the CLI:
# Start with current directory as workspace
python -m mcp_python_toolbox
# Or specify a workspace directory
python -m mcp_python_toolbox --workspace /path/to/your/project
# Optional: default execute_python timeout in seconds (default 30, max 300)
python -m mcp_python_toolbox --execute-timeout 30
# or: export MCP_PYTHON_EXECUTE_TIMEOUT=30Setting Up with Claude Desktop
Claude Desktop can automatically launch and manage the MCP Python Toolbox server. Here's how to configure it:
Install and set up the MCP Python Toolbox as described above
Add a configuration entry for the Python Toolbox in Claude Desktop's MCP tools configuration:
"python-toolbox": {
"command": "/Users/username/path/to/mcp_python_toolbox/.venv/bin/python",
"args": [
"-m",
"mcp_python_toolbox",
"--workspace",
"/Users/username/path/to/workspace"
],
"env": {
"PYTHONPATH": "/Users/username/path/to/mcp_python_toolbox/src",
"PATH": "/opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin",
"VIRTUAL_ENV": "/Users/username/path/to/mcp_python_toolbox/.venv",
"PYTHONHOME": ""
}
}Customize the paths to match your environment
Claude Desktop will automatically start the MCP server when needed
Claude will now have access to Python development tools through the MCP interface
Programmatic Usage
from mcp_python_toolbox import PythonToolboxServer
server = PythonToolboxServer(workspace_root="/path/to/your/project")
server.setup()
server.run()Core Module Examples
File Operations
from mcp_python_toolbox.core import FileOperations
file_ops = FileOperations(workspace_root="/path/to/project")
# Read file contents
content = file_ops.read_file("src/example.py")
# Read specific lines
lines = file_ops.read_file("src/example.py", start_line=10, end_line=20)
# Write to file
file_ops.write_file("output.txt", "Hello, World!")
# Append to file
file_ops.write_file("log.txt", "New entry\n", mode='a')
# List directory contents
contents = file_ops.list_directory("src")
for item in contents:
print(f"{item['name']} - {item['type']} - {item['size']} bytes")Code Analysis
from mcp_python_toolbox.core import CodeAnalyzer
analyzer = CodeAnalyzer(workspace_root="/path/to/project")
# Analyze Python file structure
analysis = analyzer.parse_python_file("src/example.py")
print(f"Found {len(analysis['functions'])} functions")
print(f"Found {len(analysis['classes'])} classes")
# Format code
formatted = analyzer.format_code(code, style='black')
# Lint code
issues = analyzer.lint_code("src/example.py")
for issue in issues:
print(f"Line {issue['line']}: {issue['message']}")Project Management
from mcp_python_toolbox.core import ProjectManager
pm = ProjectManager(workspace_root="/path/to/project")
# Create virtual environment
pm.create_virtual_environment()
# Install dependencies
pm.install_dependencies() # from requirements.txt or pyproject.toml
pm.install_dependencies("requirements-dev.txt") # from specific file
# Check for conflicts
conflicts = pm.check_dependency_conflicts()
if conflicts:
print("Found dependency conflicts:")
for conflict in conflicts:
print(f"{conflict['package']} requires {conflict['requires']}")
# Update packages
pm.update_package("requests") # to latest
pm.update_package("flask", version="2.0.0") # to specific versionCode Execution
from mcp_python_toolbox.core.code_executor import CodeExecutor
executor = CodeExecutor(workspace_root="/path/to/project")
code = '''
def greet(name):
return f"Hello, {name}!"
print(greet("World"))
'''
result = executor.execute_code(code)
print(f"Output: {result['stdout']}")
print(f"Errors: {result['stderr']}")
print(f"Exit code: {result['exit_code']}")Development
Tests
pytestType Checking
mypy src/mcp_python_toolboxLinting
pylint src/mcp_python_toolboxFormatting
black src/mcp_python_toolboxContributing
Fork the repository
Create your feature branch (
git checkout -b feature/amazing-feature)Commit your changes (
git commit -m 'Add some amazing feature')Push to the branch (
git push origin feature/amazing-feature)Open a Pull Request
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgments
MCP server built with the Python SDK (
FastMCP)Formatting via Black; linting via Pylint (run in a subprocess)
This server cannot be deployed
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables Claude to manage software development projects with complete context awareness and code execution through Docker environments.18 npm4-
- AlicenseNot gradedqualityDmaintenanceA comprehensive Model Context Protocol server implementation that enables AI assistants to interact with file systems, databases, GitHub repositories, web resources, and system tools while maintaining security and control.28 npm2MIT
- FlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that extends AI capabilities by providing file system access and management functionalities to Claude or other AI assistants.296 npm5-
- AlicenseAqualityFmaintenanceA Model Context Protocol server that allows LLMs to interact with Python environments, execute code, and manage files within a specified working directory.102,035 PyPI104MIT