Skip to main content
Glama
RMITBLOG

Parallels RAS MCP Server

by RMITBLOG

ras_support_info

Retrieve Parallels RAS support details including contact information, product version, build number, and entitlement status to verify support coverage or prepare for technical assistance.

Instructions

Get Parallels RAS support information, including support contact details, product version, build number, and support entitlement. Use this to check the installed RAS version, verify support status, or gather information for a support ticket.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The ras_support_info tool handler that makes an async GET request to '/api/help-and-support/support' endpoint and returns the support information as formatted JSON, with error handling using sanitiseError.
    async () => {
      try {
        const data = await rasClient.get("/api/help-and-support/support");
        return { content: [{ type: "text" as const, text: JSON.stringify(data, null, 2) }] };
      } catch (err) {
        return { content: [{ type: "text" as const, text: sanitiseError(err, "Failed to retrieve support info") }], isError: true };
      }
    }
  • The registration of ras_support_info tool with the MCP server, including title, description, annotations (read-only), empty input schema (no parameters), and the handler function.
    server.registerTool(
      "ras_support_info",
      {
        title: "Support Information",
        description:
          "Get Parallels RAS support information, including support contact details, " +
          "product version, build number, and support entitlement. Use this to check " +
          "the installed RAS version, verify support status, or gather information " +
          "for a support ticket.",
        annotations: READ_ONLY_ANNOTATIONS,
        inputSchema: {},
      },
      async () => {
        try {
          const data = await rasClient.get("/api/help-and-support/support");
          return { content: [{ type: "text" as const, text: JSON.stringify(data, null, 2) }] };
        } catch (err) {
          return { content: [{ type: "text" as const, text: sanitiseError(err, "Failed to retrieve support info") }], isError: true };
        }
      }
    );
  • The input schema definition for ras_support_info tool - an empty object indicating the tool takes no input parameters.
    inputSchema: {},
  • The sanitiseError helper function used by ras_support_info handler to sanitize error messages by removing auth tokens, passwords, and truncating long responses to avoid leaking internal details.
    function sanitiseError(err: unknown, context: string): string {
      const raw = err instanceof Error ? err.message : String(err);
      // Remove anything that looks like a token or password value
      let sanitised = raw
        .replace(/auth_token[=:]\s*\S+/gi, "auth_token=[REDACTED]")
        .replace(/password[=:]\s*\S+/gi, "password=[REDACTED]");
      // Truncate excessively long API response bodies
      if (sanitised.length > 500) {
        sanitised = sanitised.substring(0, 500) + "... (truncated)";
      }
      return `${context}: ${sanitised}`;
    }
  • The rasClient.get() method used by ras_support_info to make authenticated GET requests to the RAS API, handling lazy authentication, automatic retry on 401 errors, and request timeouts.
    async get(path: string): Promise<unknown> {
      // Ensure we have a valid session
      if (!this.authToken) {
        await this.login();
      }
    
      const fetchOptions = {
        method: "GET" as const,
        headers: {
          ...this.headers,
          auth_token: this.authToken!,
        },
        signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
      };
    
      let response = await fetch(`${this.baseUrl}${path}`, fetchOptions);
    
      // Token may have expired — re-authenticate once and retry
      if (response.status === 401) {
        await this.login();
        response = await fetch(`${this.baseUrl}${path}`, {
          ...fetchOptions,
          headers: {
            ...this.headers,
            auth_token: this.authToken!,
          },
          signal: AbortSignal.timeout(REQUEST_TIMEOUT_MS),
        });
      }
    
      if (!response.ok) {
        const body = await response.text();
        throw new Error(
          `RAS API error (HTTP ${response.status}) on ${path}: ${body.substring(0, 300)}`
        );
      }
    
      return response.json();
    }

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/RMITBLOG/ParallelsRAS_MCP'

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