WebGL-MCP Server

by grokadegames
Verified
# Grokade Games WebGL-MCP A Model Context Protocol (MCP) server for analyzing and optimizing WebGL games. This server provides tools to analyze WebGL applications, optimize performance, and provide insights into WebGL-based games and applications. [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) [![MCP: v1.0](https://img.shields.io/badge/MCP-v1.0-blue.svg)](https://modelcontextprotocol.io/) ## Table of Contents - [Overview](#overview) - [Features](#features) - [Prerequisites](#prerequisites) - [Quick Start](#quick-start) - [Installation](#installation) - [Usage with MCP-compatible tools](#usage-with-mcp-compatible-tools) - [Available Tools](#available-tools) - [Better Minimal WebGL Template Integration](#better-minimal-webgl-template-integration) - [Development](#development) - [Troubleshooting](#troubleshooting) - [Scripts](#scripts) - [Contributing](#contributing) - [License](#license) - [Contact](#contact) ## Overview The Model Context Protocol (MCP) is an open protocol that enables seamless integration between LLM applications and external data sources and tools. This WebGL-MCP server implements the protocol to provide specialized WebGL analysis and optimization tools for game developers and web application creators. By using this server with MCP-compatible tools like AI-powered IDEs, you can easily analyze your WebGL applications, get optimization recommendations, and improve your game's performance across different platforms. ## Features - WebGL application analysis - Performance optimization suggestions - Memory usage analysis - Engine detection (Unity, Godot, etc.) - Shader optimization recommendations - Template detection and analysis - Template-specific optimization suggestions - Mobile optimization recommendations - File structure and size analysis - WebGL capability assessment ## Prerequisites - Node.js 16.x or higher - npm 7.x or higher - A WebGL application or game to analyze ## Quick Start ```bash # Clone the repository git clone https://github.com/grokadegames/webgl-mcp.git cd webgl-mcp # Install dependencies npm install # Start the MCP server npm run webgl-mcp ``` Now you can connect to the server using any MCP-compatible client and use the available tools to analyze your WebGL applications. ## Installation ```bash # Clone the repository git clone https://github.com/grokadegames/webgl-mcp.git cd webgl-mcp # Install dependencies npm install # Build the TypeScript project npm run build ``` ## Usage with MCP-compatible tools This MCP server is designed to work with MCP-compatible tools to provide context for WebGL applications. To use it: 1. Start the MCP server: ```bash npm run webgl-mcp ``` Or use the provided script: ```bash ./run-mcp.sh ``` 2. In your MCP-compatible tool (such as an AI-powered IDE or agent), connect to the MCP server. 3. Use the available tools to analyze and optimize your WebGL applications. ## Available Tools ### analyze-webgl Analyzes a WebGL build or HTML file. Provides information about the template used, features detected, file structure, and optimization recommendations. Parameters: - `path` (required): Path to WebGL build folder or index.html file Example: ``` analyze-webgl(path: "/path/to/webgl/build") ``` Output includes: - Template analysis (type, features, etc.) - Build statistics (file counts, sizes) - Large file detection - Optimization recommendations ### optimize-webgl Suggests optimizations for WebGL applications based on specific goals. Parameters: - `path` (required): Path to WebGL build folder or index.html file - `targetFPS` (optional): Target frames per second - `memoryLimit` (optional): Memory limit in MB - `optimizationGoals` (optional): Array of optimization goals ('performance', 'memory', 'quality', 'mobile') Example: ``` optimize-webgl(path: "/path/to/webgl/build", targetFPS: 60, optimizationGoals: ["performance", "mobile"]) ``` Output includes: - Template-specific optimization recommendations - Code and asset optimization suggestions - Mobile-specific optimizations (when specified) - Memory usage improvements (when specified) ### analyze-performance Analyzes performance metrics and provides performance-specific recommendations. Parameters: - `path` (required): Path to WebGL build folder or index.html file - `duration` (optional): Duration of performance test in seconds Example: ``` analyze-performance(path: "/path/to/webgl/build", duration: 30) ``` Output includes: - WebGL capabilities assessment - Performance bottleneck identification - Frame rate analysis - Asset loading optimization suggestions ## Better Minimal WebGL Template Integration This MCP server has special support for analyzing and recommending optimizations when using the [Better Minimal WebGL Template](https://seansleblanc.itch.io/better-minimal-webgl-template), a highly optimized template for Unity WebGL builds. This external resource is used as a reference for best practices and optimizations. ### Template Version Considerations The Better Minimal WebGL Template comes in different versions for different Unity versions: - **Version 2.2**: For Unity 2020.2 and higher - Includes loading bar functionality - **Version 2.1**: For Unity 2020.1 - Similar features to 2.2 without some newer functionality - **Version 1.1**: For Unity 2019.x and lower - Core functionality without newer features The MCP server will analyze and detect features based on any version but may provide different recommendations depending on which template version is being used. ### Template Features Analyzed - Canvas scaling for different screen sizes - Loading progress visualization - Mobile device detection and optimization - Pixel art rendering optimization ### Best Practices for Using Better Minimal WebGL Template Based on the official template documentation: 1. **Canvas Scaling**: Always enable scaling for responsive games - Maintains aspect ratio while filling the window - Centers the canvas in the window - Works well on all screen sizes 2. **Mobile Optimization**: - The template automatically detects mobile devices and sets appropriate viewport settings - No additional code is needed for basic mobile support 3. **Pixel Art Games**: - Use the "Optimize for pixel art" option for crisp pixel rendering - This enables proper CSS image rendering properties across all browsers 4. **Loading Visualization**: - The template includes a simple, effective loading bar - No complex UI elements that could slow down initial loading 5. **Background Customization**: - Set a custom background color that complements your game's aesthetic - The transparent game container ensures the background is visible 6. **Ideal for Embedding**: - Works perfectly on sites like itch.io that provide external full-screen buttons - Lightweight with minimal overhead 7. **Full-screen Behavior**: - When embedded in sites like itch.io, use their full-screen button rather than implementing your own - The template will automatically scale to fill the available space when in full-screen mode - For standalone deployments, consider adding a simple full-screen button 8. **Compatibility**: - Works across all major browsers - Degrades gracefully when features aren't supported ### Template Implementation To implement the Better Minimal WebGL Template in your Unity project: 1. Download the appropriate version for your Unity version from [itch.io](https://seansleblanc.itch.io/better-minimal-webgl-template) (external resource) 2. Extract the WebGLTemplates folder to your Unity project's Assets folder 3. In Unity, go to File > Build Settings > WebGL > Player Settings 4. Under Resolution and Presentation, select the "BetterMinimal" template 5. Configure the options: - Enter a color in the "Background" field (e.g., "#000" for black) - Enter "false" in the "Scale to fit" field to disable scaling (default is true) - Enter "true" in the "Optimize for pixel art" field for pixel art games (default is false) ## Development To contribute to this project: 1. Fork the repository 2. Create a feature branch 3. Make your changes 4. Submit a pull request We welcome contributions that improve the analysis capabilities, add new optimization techniques, or enhance the MCP integration. ## Troubleshooting Common issues and solutions: - **Connection failures**: Ensure your MCP client is configured correctly to connect to the server - **Path not found**: Verify that the path to your WebGL build is correct and accessible - **Analysis errors**: Make sure your WebGL build has all the necessary files, including index.html For more detailed troubleshooting, check the logs in the `error.log` and `combined.log` files. ## Scripts - `npm run build`: Build the TypeScript project - `npm run dev`: Run the development server with hot reloading - `npm run start`: Start the compiled server - `npm run webgl-mcp`: Start the WebGL MCP server - `npm run simple-mcp`: Start a simple MCP server for testing - `npm run test`: Run tests - `npm run lint`: Run linting - `npm run format`: Format code ## Contributing We welcome contributions from the community! Whether you want to fix bugs, improve documentation, or add new features, please feel free to submit a pull request. 1. Fork the repository 2. Create a feature branch (`git checkout -b feature/amazing-feature`) 3. Commit your changes (`git commit -m 'Add some amazing feature'`) 4. Push to the branch (`git push origin feature/amazing-feature`) 5. Open a Pull Request ## License MIT ## Contact Grokade Games - [Website](https://grokadegames.com) Project Link: [https://github.com/grokadegames/webgl-mcp](https://github.com/grokadegames/webgl-mcp)