Skip to main content
Glama
system.tsβ€’3.56 kB
import { SystemHealthRequest, SystemHealthResponse, McpResponse } from '../types/index.js' export class SystemTools { async handleTool(name: string, args: any): Promise<McpResponse> { switch (name) { case 'system.health': return await this.getHealth(args as SystemHealthRequest) default: throw new Error(`Unknown system tool: ${name}`) } } private async getHealth(request: SystemHealthRequest): Promise<McpResponse<SystemHealthResponse>> { try { const health = await this.checkSystemHealth() return { success: true, data: health, metadata: { timestamp: new Date().toISOString(), requestId: `health_${Date.now()}` } } } catch (error) { return { success: false, error: { code: 'HEALTH_CHECK_ERROR', message: error instanceof Error ? error.message : String(error) }, metadata: { timestamp: new Date().toISOString() } } } } private async checkSystemHealth(): Promise<SystemHealthResponse> { const startTime = process.uptime() const uptime = Math.floor(startTime) // Check dependencies const dependencies = { 'aura-adapter': await this.checkAuraAdapter(), 'guard-engine': await this.checkGuardEngine(), 'rpc-ethereum': await this.checkRpcEndpoint('ethereum'), 'rpc-base': await this.checkRpcEndpoint('base'), 'rpc-arbitrum': await this.checkRpcEndpoint('arbitrum') } // Determine overall status const allHealthy = Object.values(dependencies).every(dep => dep.status === 'ok') const status = allHealthy ? 'ok' : 'degraded' return { status, version: '0.1.0', time: new Date().toISOString(), uptime, dependencies } } private async checkAuraAdapter(): Promise<{ status: 'ok' | 'error', latency?: number, lastCheck?: string }> { const startTime = Date.now() try { // This would check if AURA adapter is working // For now, simulate a check await new Promise(resolve => setTimeout(resolve, 50)) return { status: 'ok', latency: Date.now() - startTime, lastCheck: new Date().toISOString() } } catch (error) { return { status: 'error', lastCheck: new Date().toISOString() } } } private async checkGuardEngine(): Promise<{ status: 'ok' | 'error', latency?: number, lastCheck?: string }> { const startTime = Date.now() try { // This would check if Guard Engine is working // For now, simulate a check await new Promise(resolve => setTimeout(resolve, 10)) return { status: 'ok', latency: Date.now() - startTime, lastCheck: new Date().toISOString() } } catch (error) { return { status: 'error', lastCheck: new Date().toISOString() } } } private async checkRpcEndpoint(chain: string): Promise<{ status: 'ok' | 'error', latency?: number, lastCheck?: string }> { const startTime = Date.now() try { // This would check RPC endpoint health // For now, simulate a check await new Promise(resolve => setTimeout(resolve, 100 + Math.random() * 200)) return { status: 'ok', latency: Date.now() - startTime, lastCheck: new Date().toISOString() } } catch (error) { return { status: 'error', lastCheck: new Date().toISOString() } } } }

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/antidump/MCP'

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