A comprehensive Model Context Protocol (MCP) server built with FastMCP that provides various utility tools.
This MCP server includes the following tools:
- get_current_time: Get the current date and time
- get_weather: Get weather information for any city (requires OpenWeatherMap API key)
- create_file: Create new files with specified content
- read_file: Read content from existing files
- list_directory: List contents of directories
- create_temporary_file: Create temporary files
- search_files: Search for text patterns in files within a directory
- calculate_expression: Safely evaluate mathematical expressions
- execute_command: Execute shell commands safely (with security restrictions)
- get_system_info: Get detailed system information (CPU, memory, disk usage)
Windows:
scripts\build.bat
Linux/macOS:
chmod +x scripts/build.sh && scripts/build.sh
Cross-platform (Python):
python scripts/build.py
- Install Python dependencies:
pip install -r requirements.txt
- (Optional) Configure environment variables:
# Copy the example environment file
cp .env.example .env
# Edit .env and add your OpenWeatherMap API key if needed
To run the MCP server:
python server.py
The server will start and listen for MCP connections.
To use this server with Claude Desktop, add the following configuration to your claude_desktop_config.json
:
{
"mcpServers": {
"multi-tool-server": {
"command": "python",
"args": ["C:/github/mcp-py/server.py"],
"cwd": "C:/github/mcp-py"
}
}
}
Note: Update the paths to match your actual installation directory.
The Claude Desktop configuration file is typically located at:
- Windows:
%APPDATA%/Claude/claude_desktop_config.json
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
# Create a new file
create_file("./example.txt", "Hello, World!")
# Read a file
read_file("./example.txt")
# List directory contents
list_directory("./")
# Get weather for a city (requires API key)
get_weather("London")
# Calculate mathematical expressions
calculate_expression("2 + 2 * 3")
calculate_expression("sqrt(16) + pow(2, 3)")
# Search for text in Python files
search_files("./", "import", ".py")
# Get system details
get_system_info()
# Execute safe commands
execute_command("echo Hello World")
execute_command("ls -la", "/tmp") # Unix
execute_command("dir", "C:\\") # Windows
- Command Filtering: Dangerous commands are blocked automatically
- Safe Expression Evaluation: Mathematical expressions are evaluated in a secure environment
- Timeout Protection: Commands have a 30-second timeout limit
- Path Validation: File operations validate paths to prevent unauthorized access
OPENWEATHER_API_KEY
: Your OpenWeatherMap API key for weather functionalityMCP_SERVER_NAME
: Custom server name (optional)MCP_SERVER_VERSION
: Server version (optional)
fastmcp
: FastMCP framework for MCP server developmentrequests
: HTTP library for API callspython-dotenv
: Environment variable managementpydantic
: Data validation and settings managementpsutil
: System and process utilities
-
Import Errors: Make sure all dependencies are installed:
pip install -r requirements.txt
-
Weather Tool Not Working: Ensure you have a valid OpenWeatherMap API key set in the
.env
file. -
Permission Errors: Make sure the server has appropriate file system permissions for the operations you're trying to perform.
-
Command Execution Fails: Some commands may be blocked for security reasons. Check the error message for details.
To extend this server with additional tools:
- Add new tool functions using the
@mcp.tool()
decorator - Follow the existing pattern for error handling and return formats
- Update this README with documentation for new tools
This project is open source. Feel free to modify and distribute according to your needs.