Skip to main content
Glama
lkb2k

Gradle Tomcat MCP Server

by lkb2k

start_tomcat

Launch Tomcat server using Gradle commands to run web applications from a specified directory.

Instructions

Launch Tomcat via Gradle

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
gradle_commandNoGradle command to run (default: appRun)appRun
working_directoryNoWorking directory for the Gradle command

Implementation Reference

  • The core handler function that implements the start_tomcat tool logic: spawns the Gradle process for Tomcat, sets up event emitters for logs and errors, and returns process status.
    async startTomcat(gradleCommand = 'appRun', workingDirectory = null) {
      if (this.process) {
        throw new Error('Tomcat is already running');
      }
    
      const workDir = workingDirectory || this.config.workingDirectory || process.cwd();
      const command = gradleCommand || this.config.gradleCommand || 'appRun';
    
      return new Promise((resolve, reject) => {
        try {
          this.process = spawn('./gradlew', [command], {
            cwd: workDir,
            stdio: ['pipe', 'pipe', 'pipe'],
            detached: false
          });
    
          this.startTime = new Date();
    
          this.process.stdout.on('data', (data) => {
            this.emit('stdout', data.toString());
          });
    
          this.process.stderr.on('data', (data) => {
            this.emit('stderr', data.toString());
          });
    
          this.process.on('error', (error) => {
            this.emit('error', error);
            this.cleanup();
            reject(error);
          });
    
          this.process.on('exit', (code, signal) => {
            this.emit('exit', { code, signal });
            this.cleanup();
          });
    
          setTimeout(() => {
            if (this.process && this.process.pid) {
              resolve({
                running: true,
                pid: this.process.pid,
                uptime: this.getUptime(),
                port: this.config.port || null,
                gradle_command: command
              });
            } else {
              reject(new Error('Failed to start Tomcat process'));
            }
          }, 1000);
    
        } catch (error) {
          reject(error);
        }
      });
    }
  • Input schema defining the parameters for the start_tomcat tool: gradle_command (string, default 'appRun') and working_directory (string).
    inputSchema: {
      type: "object",
      properties: {
        gradle_command: {
          type: "string",
          description: "Gradle command to run (default: appRun)",
          default: "appRun"
        },
        working_directory: {
          type: "string",
          description: "Working directory for the Gradle command"
        }
      }
    }
  • Registration of the start_tomcat tool in the TOOLS array, including name, description, and input schema.
    {
      name: "start_tomcat",
      description: "Launch Tomcat via Gradle",
      inputSchema: {
        type: "object",
        properties: {
          gradle_command: {
            type: "string",
            description: "Gradle command to run (default: appRun)",
            default: "appRun"
          },
          working_directory: {
            type: "string",
            description: "Working directory for the Gradle command"
          }
        }
      }
    },
  • Dispatch helper in the handleToolCall switch statement that maps tool arguments to the startTomcat method call.
    case "start_tomcat":
      return await processManager.startTomcat(
        args.gradle_command,
        args.working_directory
      );

Tool Definition Quality

Score is being calculated. Check back soon.

Install Server

Other Tools

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/lkb2k/mcp-gradle'

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