Skip to content

rt0120-Ramco/mcp-py

Repository files navigation

FastMCP Multi-Tool Server

A comprehensive Model Context Protocol (MCP) server built with FastMCP that provides various utility tools.

Features

This MCP server includes the following tools:

🕒 Time & Date

  • get_current_time: Get the current date and time

🌤️ Weather

  • get_weather: Get weather information for any city (requires OpenWeatherMap API key)

📁 File Operations

  • 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 & Analysis

  • search_files: Search for text patterns in files within a directory
  • calculate_expression: Safely evaluate mathematical expressions

💻 System Operations

  • execute_command: Execute shell commands safely (with security restrictions)
  • get_system_info: Get detailed system information (CPU, memory, disk usage)

Installation

Quick Setup

Windows:

scripts\build.bat

Linux/macOS:

chmod +x scripts/build.sh && scripts/build.sh

Cross-platform (Python):

python scripts/build.py

Manual Installation

  1. Install Python dependencies:
pip install -r requirements.txt
  1. (Optional) Configure environment variables:
# Copy the example environment file
cp .env.example .env

# Edit .env and add your OpenWeatherMap API key if needed

Usage

Running the Server

To run the MCP server:

python server.py

The server will start and listen for MCP connections.

Configuration with Claude Desktop

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.

Configuration File Location

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

Tool Examples

File Operations

# Create a new file
create_file("./example.txt", "Hello, World!")

# Read a file
read_file("./example.txt")

# List directory contents
list_directory("./")

Weather Information

# Get weather for a city (requires API key)
get_weather("London")

Mathematical Calculations

# Calculate mathematical expressions
calculate_expression("2 + 2 * 3")
calculate_expression("sqrt(16) + pow(2, 3)")

File Search

# Search for text in Python files
search_files("./", "import", ".py")

System Information

# Get system details
get_system_info()

Command Execution

# Execute safe commands
execute_command("echo Hello World")
execute_command("ls -la", "/tmp")  # Unix
execute_command("dir", "C:\\")     # Windows

Security Features

  • 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

Environment Variables

  • OPENWEATHER_API_KEY: Your OpenWeatherMap API key for weather functionality
  • MCP_SERVER_NAME: Custom server name (optional)
  • MCP_SERVER_VERSION: Server version (optional)

Dependencies

  • fastmcp: FastMCP framework for MCP server development
  • requests: HTTP library for API calls
  • python-dotenv: Environment variable management
  • pydantic: Data validation and settings management
  • psutil: System and process utilities

Troubleshooting

Common Issues

  1. Import Errors: Make sure all dependencies are installed:

    pip install -r requirements.txt
  2. Weather Tool Not Working: Ensure you have a valid OpenWeatherMap API key set in the .env file.

  3. Permission Errors: Make sure the server has appropriate file system permissions for the operations you're trying to perform.

  4. Command Execution Fails: Some commands may be blocked for security reasons. Check the error message for details.

Development

To extend this server with additional tools:

  1. Add new tool functions using the @mcp.tool() decorator
  2. Follow the existing pattern for error handling and return formats
  3. Update this README with documentation for new tools

License

This project is open source. Feel free to modify and distribute according to your needs.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published