Skip to main content
Glama

1MCP Server

status.ts3.77 kB
import { cleanupRegistryHandler, handleGetRegistryStatus } from '@src/core/tools/handlers/registryHandler.js'; import { formatTimestamp } from '@src/domains/registry/formatters/commonFormatters.js'; import { GetRegistryStatusArgs } from '@src/domains/registry/mcpToolSchemas.js'; import { RegistryOptions } from '@src/domains/registry/types.js'; import { GlobalOptions } from '@src/globalOptions.js'; import logger from '@src/logger/logger.js'; import type { Arguments, Argv } from 'yargs'; import { RegistryYargsOptions } from './options.js'; export interface RegistryStatusCommandArgs extends Arguments, GlobalOptions, RegistryYargsOptions { stats?: boolean; json?: boolean; } /** * Build status command with options */ export function buildStatusCommand(statusYargs: Argv): Argv { return statusYargs .options({ stats: { describe: 'Include detailed server count statistics', type: 'boolean' as const, default: false, }, json: { describe: 'Output results in JSON format', type: 'boolean' as const, default: false, }, }) .example('$0 registry status', 'Check registry availability') .example('$0 registry status --stats', 'Show registry status with statistics') .example('$0 registry status --stats --json', 'Output detailed status in JSON format'); } /** * Get MCP registry status and statistics */ export async function registryStatusCommand(argv: RegistryStatusCommandArgs): Promise<void> { try { const statusArgs: GetRegistryStatusArgs = { include_stats: argv.stats || false, }; // Extract registry configuration from CLI options const registryOptions: RegistryOptions = { url: argv['url'], timeout: argv['timeout'], cacheTtl: argv['cache-ttl'], cacheMaxSize: argv['cache-max-size'], cacheCleanupInterval: argv['cache-cleanup-interval'], proxy: argv['proxy'], proxyAuth: argv['proxy-auth'], }; logger.info('Getting MCP registry status...'); const result = await handleGetRegistryStatus(statusArgs, registryOptions); if (argv.json) { console.log(JSON.stringify(result, null, 2)); return; } // Format status display console.log('\n📊 MCP Registry Status\n'); const statusIcon = result.available ? '✅' : '❌'; const statusText = result.available ? 'Available' : 'Unavailable'; console.log(`Status: ${statusIcon} ${statusText}`); console.log(`URL: ${result.url}`); console.log(`Response Time: ${result.response_time_ms}ms`); console.log(`Last Checked: ${formatTimestamp(result.last_updated)}`); if (result.stats) { console.log('\n📈 Registry Statistics\n'); console.log(`Total Servers: ${result.stats.total_servers}`); console.log(`Active Servers: ${result.stats.active_servers}`); console.log(`Deprecated Servers: ${result.stats.deprecated_servers}`); if (Object.keys(result.stats.by_registry_type).length > 0) { console.log('\nBy Registry Type:'); Object.entries(result.stats.by_registry_type).forEach(([type, count]) => { console.log(` ${type}: ${count}`); }); } if (Object.keys(result.stats.by_transport).length > 0) { console.log('\nBy Transport:'); Object.entries(result.stats.by_transport).forEach(([transport, count]) => { console.log(` ${transport}: ${count}`); }); } } } catch (error) { logger.error('Registry status command failed:', error); console.error(`Error getting registry status: ${error instanceof Error ? error.message : String(error)}`); process.exit(1); } finally { // Cleanup resources to ensure process exits cleanupRegistryHandler(); } }

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/1mcp-app/agent'

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