Skip to main content
Glama
falahgs

3D Cartoon Generator & File System MCP Server

by falahgs

MCP Combined Server: 3D Cartoon Generator & File System Tools

A professional-grade server that provides two major capabilities:

  1. High-quality 3D-style cartoon image generation using Google's Gemini AI

  2. Secure file system operations for reading, writing, and managing files

3D Cartoon Generator Demo

🌟 Features

Image Generation

  • 3D Cartoon Generation: Creates high-quality 3D-style cartoon images

  • Child-Friendly Design: Focuses on colorful, playful, and engaging visuals

  • Instant Preview: Automatically opens generated images in your default browser

  • Local Storage: Saves images and previews in an organized output directory

File System Operations

  • Secure File Access: Path validation and security checks

  • Read/Write Files: Read and write text file contents

  • Directory Operations: List, create, and navigate directories

  • File Search: Find files matching patterns

System Features

  • Professional Configuration: Robust error handling and controlled logging

  • Cross-Platform Support: Intelligent file path handling for Windows, macOS, and Linux

  • Smart OS Detection: Automatically finds the best save location for each operating system

  • Security Controls: Restricted directory access through configuration

πŸ› οΈ Technical Stack

  • Core Framework: Model Context Protocol (MCP) SDK

  • AI Integration: Google Generative AI (Gemini)

  • Runtime: Node.js v14+

  • Language: TypeScript

  • Package Manager: npm

πŸ“‹ Prerequisites

  • Node.js (v14 or higher)

  • Google Gemini API key

  • TypeScript

βš™οΈ Installation

  1. Clone the repository:

git clone https://github.com/falahgs/mcp-3d-style-cartoon-gen-server.git
cd mcp-3d-style-cartoon-gen-server
  1. Install dependencies:

npm install
  1. Configure environment: Create a .env file in the root directory:

GEMINI_API_KEY=your_api_key_here
ALLOWED_DIRECTORIES=/path/to/allowed/dir1,/path/to/allowed/dir2
  1. Build the project:

npm run build

πŸ”§ Configuring Claude Desktop with MCP Server

To integrate this combined server with Claude Desktop:

  1. Locate the Configuration File:

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Linux: ~/.config/Claude/claude_desktop_config.json

  2. Add the following configuration:

{
  "mcpServers": {
    "mcp-3d-cartoon-generator": {
      "command": "node",
      "args": [
        "path/to/your/build/index.js"
      ],
      "env": {
        "GEMINI_API_KEY": "your_gemini_api_key_here",
        "IS_REMOTE": "true",
        "SAVE_TO_DESKTOP": "true",
        "DETECT_OS_PATHS": "true",
        "ALLOWED_DIRECTORIES": "C:\\Users\\YourUsername\\Desktop,C:\\Users\\YourUsername\\Documents",
        "DEBUG": "false"
      }
    }
  }
}

Windows PowerShell Helper Script

For Windows users, you can use the included fix_claude_config.ps1 script to automatically configure Claude Desktop:

  1. Edit the script to update the path to your server build and your Gemini API key

  2. Run the script in PowerShell:

powershell -ExecutionPolicy Bypass -File .\fix_claude_config.ps1

This will create or update the configuration file with proper encoding and settings.

πŸš€ Available Tools

1. Image Generation Tool

{
  "name": "generate_3d_cartoon",
  "description": "Generates a 3D style cartoon image for kids based on the given prompt",
  "inputSchema": {
    "type": "object",
    "properties": {
      "prompt": {
        "type": "string",
        "description": "The prompt describing the 3D cartoon image to generate"
      },
      "fileName": {
        "type": "string",
        "description": "The name of the output file (without extension)"
      }
    },
    "required": ["prompt", "fileName"]
  }
}

2. File System Tools

Read File

{
  "name": "read_file",
  "description": "Read the contents of a file",
  "inputSchema": {
    "type": "object",
    "properties": {
      "path": {
        "type": "string",
        "description": "Path to the file to read"
      }
    },
    "required": ["path"]
  }
}

Write File

{
  "name": "write_file",
  "description": "Write content to a file",
  "inputSchema": {
    "type": "object",
    "properties": {
      "path": {
        "type": "string",
        "description": "Path to the file to write"
      },
      "content": {
        "type": "string",
        "description": "Content to write to the file"
      }
    },
    "required": ["path", "content"]
  }
}

List Directory

{
  "name": "list_directory",
  "description": "List the contents of a directory",
  "inputSchema": {
    "type": "object",
    "properties": {
      "path": {
        "type": "string",
        "description": "Path to the directory to list"
      }
    },
    "required": ["path"]
  }
}

Create Directory

{
  "name": "create_directory",
  "description": "Create a new directory",
  "inputSchema": {
    "type": "object",
    "properties": {
      "path": {
        "type": "string",
        "description": "Path to the directory to create"
      }
    },
    "required": ["path"]
  }
}

Search Files

{
  "name": "search_files",
  "description": "Search for files matching a pattern",
  "inputSchema": {
    "type": "object",
    "properties": {
      "path": {
        "type": "string",
        "description": "Base directory to search from"
      },
      "pattern": {
        "type": "string",
        "description": "Search pattern (glob format)"
      },
      "excludePatterns": {
        "type": "array",
        "items": {
          "type": "string"
        },
        "description": "Patterns to exclude from search (glob format)"
      }
    },
    "required": ["path", "pattern"]
  }
}

πŸ“„ Example Usage

Image Generation Examples

// Generate a 3D cartoon
{
  "name": "generate_3d_cartoon",
  "arguments": {
    "prompt": "A friendly robot playing with a cat",
    "fileName": "robot_cat_play"
  }
}

File System Examples

// Read a file
{
  "name": "read_file",
  "arguments": {
    "path": "C:/Users/YourUsername/Documents/example.txt"
  }
}

// Write a file
{
  "name": "write_file",
  "arguments": {
    "path": "C:/Users/YourUsername/Documents/new-file.txt",
    "content": "This is the content of the file."
  }
}

// List directory contents
{
  "name": "list_directory",
  "arguments": {
    "path": "C:/Users/YourUsername/Documents"
  }
}

// Create a directory
{
  "name": "create_directory",
  "arguments": {
    "path": "C:/Users/YourUsername/Documents/new-folder"
  }
}

// Search for files
{
  "name": "search_files",
  "arguments": {
    "path": "C:/Users/YourUsername/Documents",
    "pattern": "*.txt",
    "excludePatterns": ["temp*", "*.tmp"]
  }
}

πŸ”’ Security Features

The server implements several security measures:

  1. Path Validation: All file paths are validated to ensure they are within allowed directories.

  2. Allowed Directories: Only directories explicitly set in the ALLOWED_DIRECTORIES environment variable can be accessed.

  3. Symlink Protection: Prevents access to directories outside the allowed scope via symlinks.

  4. Controlled Logging: Debug logs are disabled by default to prevent information leakage.

βš™οΈ Configuration Options

Environment Variables

Variable

Description

Default

GEMINI_API_KEY

Google Gemini API key for image generation

(Required)

ALLOWED_DIRECTORIES

Comma-separated list of allowed file system paths

User's home dir, current dir

IS_REMOTE

Run in remote mode without browser opening

false

SAVE_TO_DESKTOP

Force saving to desktop directory

false

DETECT_OS_PATHS

Enable OS-specific path detection

true

DEBUG

Enable verbose debug logging

false

πŸ› οΈ Troubleshooting

Common Issues:

  1. JSON Parsing Errors in Claude:

    • Ensure DEBUG is set to "false" to prevent logs from interfering with JSON communication

    • Check for proper JSON formatting in the Claude configuration

  2. File Access Denied:

    • Verify that the paths you're trying to access are included in ALLOWED_DIRECTORIES

    • Check file permissions on the target files/directories

  3. Images Not Saving:

    • Set SAVE_TO_DESKTOP to "true" to ensure images save to the desktop

    • Check desktop path detection in the server logs (enable DEBUG temporarily)

πŸ“„ License

MIT License

🀝 Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

-
security - not tested
F
license - not found
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/falahgs/mcp-3d-style-cartoon-gen-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server