Skip to main content
Glama
RMITBLOG

Parallels RAS MCP Server

by RMITBLOG

ras_farm_get_reporting

Retrieve and verify reporting configuration for the Parallels RAS farm, including scheduling, data retention, and database settings to ensure proper setup.

Instructions

Get reporting configuration for the RAS farm, including report scheduling, data retention, and database connection settings. Use this to verify reporting is enabled and properly configured.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • Complete tool registration and handler for ras_farm_get_reporting. The handler makes a GET request to '/api/farm-settings/reporting' and returns the configuration data as JSON stringified text with error handling.
    server.registerTool( "ras_farm_get_reporting", { title: "Reporting", description: "Get reporting configuration for the RAS farm, including report scheduling, " + "data retention, and database connection settings. Use this to verify " + "reporting is enabled and properly configured.", annotations: READ_ONLY_ANNOTATIONS, inputSchema: {}, }, async () => { try { const data = await rasClient.get("/api/farm-settings/reporting"); 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 reporting config") }], isError: true }; } } );
  • Tool schema definition including title, description, read-only annotations, and empty inputSchema (no parameters required).
    "ras_farm_get_reporting", { title: "Reporting", description: "Get reporting configuration for the RAS farm, including report scheduling, " + "data retention, and database connection settings. Use this to verify " + "reporting is enabled and properly configured.", annotations: READ_ONLY_ANNOTATIONS, inputSchema: {}, },
  • The rasClient.get() method used by the tool handler to make authenticated GET requests to the RAS API. Handles lazy authentication, automatic retry on 401, 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(); }
  • The sanitiseError() helper function used by the tool handler to sanitize error messages and prevent leaking sensitive information like auth tokens or passwords.
    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}`; }

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