Skip to main content
Glama

Roblox MCP Unified Server

by Rxuser2
client.js3.57 kB
const crypto = require('crypto'); const axios = require('axios'); class RobloxMCPClient { constructor(baseUrl = 'http://localhost:3000', hmacSecret = 'your_hmac_secret_here') { this.baseUrl = baseUrl; this.hmacSecret = hmacSecret; this.logger = { info: (msg) => console.log(`ℹ️ ${msg}`), error: (msg) => console.error(`❌ ${msg}`), success: (msg) => console.log(`✅ ${msg}`) }; } generateSignature(data, timestamp) { return crypto .createHmac('sha256', this.hmacSecret) .update(data + timestamp, 'utf8') .digest('hex'); } async makeRequest(endpoint, method = 'GET', data = {}, params = {}) { const timestamp = Date.now().toString(); const dataStr = JSON.stringify(data); const signature = this.generateSignature(dataStr, timestamp); const config = { method, url: `${this.baseUrl}${endpoint}`, headers: { 'Content-Type': 'application/json', 'X-Signature': signature, 'X-Timestamp': timestamp }, ...(method !== 'GET' && { data }), ...(method === 'GET' && { params }) }; try { const response = await axios(config); return response.data; } catch (error) { this.logger.error(`Request failed: ${error.message}`); throw error; } } // Tool 1: Create Script async createScript(name, content, scriptType = 'lua', projectId = 'default') { this.logger.info(`Creating script: ${name}`); return await this.makeRequest('/api/create_script', 'POST', { name, content, script_type: scriptType, project_id: projectId }); } // Tool 2: List Scripts async listScripts(projectId = 'default') { this.logger.info(`Listing scripts for project: ${projectId}`); return await this.makeRequest('/api/list_scripts', 'GET', {}, { project_id: projectId }); } // Tool 3: Update Script async updateScript(name, content, projectId = 'default') { this.logger.info(`Updating script: ${name}`); return await this.makeRequest('/api/update_script', 'PUT', { name, content, project_id: projectId }); } // Tool 4: Delete Script async deleteScript(name, projectId = 'default') { this.logger.info(`Deleting script: ${name}`); return await this.makeRequest('/api/delete_script', 'DELETE', { name, project_id: projectId }); } // Tool 5: Get Project Status async getProjectStatus(projectId = 'default') { this.logger.info(`Getting status for project: ${projectId}`); return await this.makeRequest('/api/get_project_status', 'GET', {}, { project_id: projectId }); } // Tool 6: Validate Script async validateScript(content, scriptType = 'lua') { this.logger.info('Validating script content'); return await this.makeRequest('/api/validate_script', 'POST', { content, script_type: scriptType }); } // Tool 7: Backup Project async backupProject(projectId = 'default') { this.logger.info(`Backing up project: ${projectId}`); return await this.makeRequest('/api/backup_project', 'POST', { project_id: projectId }); } // Tool 8: Restore Project async restoreProject(projectId, backupPath = null) { this.logger.info(`Restoring project: ${projectId}`); return await this.makeRequest('/api/restore_project', 'POST', { project_id: projectId, backup_path: backupPath }); } // Health check async healthCheck() { this.logger.info('Performing health check'); return await this.makeRequest('/health', 'GET'); } } module.exports = RobloxMCPClient;

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/Rxuser2/Roblox-MCP-Unified'

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