Skip to main content
Glama
index.ts4.51 kB
#!/usr/bin/env node import { Command } from 'commander'; import chalk from 'chalk'; import init from './commands/init.js'; import run from './commands/run.js'; import logout from './commands/logout.js'; import session from './commands/session.js'; import { logError } from './utils/logger.js'; import { TOOLS } from './tools/index.js'; import { validatePatterns } from './utils/tools.js'; import { packageName, packageVersion } from './utils/package.js'; // Set process title process.title = packageName; // Global error handlers ['uncaughtException', 'unhandledRejection'].forEach((event) => { process.on(event, (error) => { logError(`${event}:`, error); process.exit(1); }); }); /** * Parses and validates comma-separated tool patterns from command line input. * This function processes a comma-delimited string of tool patterns, * normalizes them by trimming whitespace, and validates each pattern * against the available tools. If the input is empty, it returns a * wildcard pattern ['*'] that matches all tools. * * @param {string} value - Raw command line input containing comma-separated patterns * @returns {string[]} Array of validated tool pattern strings * @throws {Error} If any pattern is invalid or doesn't match available tools */ function parseToolPatterns(value: string): string[] { if (!value) return ['*']; const patterns = value .split(',') .map((item) => item.trim()) .filter(Boolean); // Validate the patterns against available tools validatePatterns(patterns, TOOLS); return patterns; } // Top-level CLI const program = new Command() .name('auth0-mcp-server') .description('Auth0 MCP Server - Model Context Protocol server for Auth0 Management API') .version(packageVersion) .addHelpText( 'before', ` ${chalk.bold('Auth0 MCP Server')} A Model Context Protocol (MCP) server implementation that integrates Auth0 Management API with Claude Desktop, enabling AI-assisted management of your Auth0 tenant.` ) .addHelpText( 'after', ` Examples: npx ${packageName} init npx ${packageName} init --tools 'auth0_*' --client claude npx ${packageName} init --read-only --client claude npx ${packageName} init --tools 'auth0_*_applications' --client windsurf npx ${packageName} init --tools 'auth0_list_*,auth0_get_*' --client cursor npx ${packageName} init --auth0-domain <auth0-domain> --auth0-client-id <auth0-client-id> --auth0-client-secret <auth0-client-secret> npx ${packageName} run npx ${packageName} run --read-only npx ${packageName} session npx ${packageName} logout For more information, visit: https://github.com/auth0/auth0-mcp-server` ); // Init command program .command('init') .description('Initialize the server (authenticate and configure)') .option( '--client <client>', 'Configure specific client (claude, windsurf, cursor, or vscode)', 'claude' ) .option( '--auth0-domain <auth0 domain>', 'Auth0 domain (required for Private Cloud authentication)' ) .option( '--auth0-client-id <auth0 ClientId>', 'Client ID (required for Private Cloud authentication)' ) .option( '--auth0-client-secret <auth0 Client Secret>', 'Client secret (required for Private Cloud authentication)' ) .option('--scopes <scopes>', 'Comma-separated list of Auth0 API scopes', (text) => text .split(',') .map((scope) => scope.trim()) .filter(Boolean) ) .option( '--tools <tools>', 'Comma-separated list of tools or glob patterns to enable (defaults to "*" if not provided)', parseToolPatterns, ['*'] ) .option('--read-only', 'Only expose read-only tools (list and get operations)', false) .action(init); // Run command program .command('run') .description('Start the MCP server') .option( '--tools <tools>', 'Comma-separated list of tools or glob patterns to enable (defaults to "*" if not provided)', parseToolPatterns, ['*'] ) .option('--read-only', 'Only expose read-only tools (list and get operations)', false) .action(run); // Logout command program .command('logout') .description('Remove all stored Auth0 tokens from the system keychain') .action(logout); // Session command program .command('session') .description('Display current authentication session information') .action(session); // Parse arguments and handle potential errors program.parseAsync().catch((error) => { logError('Command execution error:', error); process.exit(1); });

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/auth0/auth0-mcp-server'

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