Skip to main content
Glama
index.tsโ€ข6.57 kB
#!/usr/bin/env node console.error('[MCP DEBUG] Starting imports...'); import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { mcpServer, setLogging, logger } from './mcp-server.js'; import { createSSEServer } from './sse-server.js'; import { readFileSync } from 'fs'; import { join } from 'path'; import { randomUUID } from 'node:crypto'; console.error('[MCP DEBUG] Imports complete'); // Get version from package.json (handle different working directories) function findPackageJson() { const possiblePaths = [ join(__dirname, '../../package.json'), // When compiled to dist/src/ join(__dirname, '../package.json'), // When running from src/ join(process.cwd(), 'package.json'), // When running from project root ]; for (const path of possiblePaths) { try { return readFileSync(path, 'utf8'); } catch (error) { // Continue to next path } } // Fallback version return JSON.stringify({ version: '1.7.0' }); } const packageJson = JSON.parse(findPackageJson()); const VERSION = packageJson.version; // CLI token generation functions function generateToken(): string { return randomUUID().replace(/-/g, ''); } function showTokenCommands() { console.log('๐Ÿ”‘ Bearer Token Management'); console.log(''); console.log('Generate a new Bearer token:'); console.log(' npx mcp-cisco-support --generate-token'); console.log(''); console.log('Use token via environment variable:'); console.log(' export MCP_BEARER_TOKEN=your_custom_token_here'); console.log(' npx mcp-cisco-support --http'); console.log(''); console.log('Disable authentication (not recommended):'); console.log(' export DANGEROUSLY_OMIT_AUTH=true'); console.log(' npx mcp-cisco-support --http'); console.log(''); } // Handle CLI commands const args = process.argv.slice(2); // Token generation command if (args.includes('--generate-token')) { const newToken = generateToken(); console.log('๐Ÿ”‘ Generated Bearer Token:'); console.log(''); console.log(` ${newToken}`); console.log(''); console.log('๐Ÿ’ก Usage Options:'); console.log(''); console.log('1. Set as environment variable:'); console.log(` export MCP_BEARER_TOKEN=${newToken}`); console.log(' npx mcp-cisco-support --http'); console.log(''); console.log('2. Use in HTTP requests:'); console.log(` curl -H "Authorization: Bearer ${newToken}" http://localhost:3000/mcp`); console.log(''); console.log('3. Add to .env file:'); console.log(` echo "MCP_BEARER_TOKEN=${newToken}" >> .env`); console.log(''); process.exit(0); } // Help command if (args.includes('--help') || args.includes('-h')) { console.log(`MCP Cisco Support Server v${VERSION}`); console.log(''); console.log('Usage:'); console.log(' npx mcp-cisco-support [options]'); console.log(''); console.log('Options:'); console.log(' --http, --sse Start HTTP server mode (default: stdio)'); console.log(' --generate-token Generate a new Bearer token'); console.log(' --token-help Show token management commands'); console.log(' --help, -h Show this help message'); console.log(' --version, -v Show version number'); console.log(''); console.log('Environment Variables:'); console.log(' CISCO_CLIENT_ID Cisco API client ID (required)'); console.log(' CISCO_CLIENT_SECRET Cisco API client secret (required)'); console.log(' SUPPORT_API Enabled APIs: bug,case,eox or all (default: bug)'); console.log(' AUTH_TYPE Auth type: bearer (default) or oauth2.1'); console.log(' MCP_BEARER_TOKEN Custom Bearer token (for bearer auth)'); console.log(' OAUTH2_ISSUER_URL OAuth 2.1 issuer URL (for oauth2.1 auth)'); console.log(' DANGEROUSLY_OMIT_AUTH Set to "true" to disable HTTP auth'); console.log(' PORT HTTP server port (default: 3000)'); console.log(''); console.log('Examples:'); console.log(' npx mcp-cisco-support # Start in stdio mode'); console.log(' npx mcp-cisco-support --http # Start HTTP server'); console.log(' npx mcp-cisco-support --generate-token # Generate Bearer token'); console.log(''); process.exit(0); } // Token help command if (args.includes('--token-help')) { showTokenCommands(); process.exit(0); } // Version command if (args.includes('--version') || args.includes('-v')) { console.log(VERSION); process.exit(0); } // Determine mode from command line arguments const isHttpMode = args.includes('--http') || args.includes('--sse'); const isStdioMode = !isHttpMode; // Configure logging based on mode setLogging(!isStdioMode); // Main function async function main() { try { console.error('[MCP DEBUG] Main function started'); const args = process.argv.slice(2); console.error('[MCP DEBUG] Args:', args); const isHTTP = args.includes('--http') || args.includes('--sse'); console.error('[MCP DEBUG] Mode:', isHTTP ? 'HTTP' : 'STDIO'); if (isHTTP) { // Run as SSE HTTP server const PORT = process.env.PORT || 3000; const sseServer = createSSEServer(mcpServer); // Graceful shutdown handling const cleanup = () => { logger.info('Shutting down gracefully'); process.exit(0); }; process.on('SIGTERM', cleanup); process.on('SIGINT', cleanup); sseServer.listen(PORT, () => { logger.info(`Cisco Support MCP SSE Server started on port ${PORT}`, { environment: process.env.NODE_ENV || 'development', version: VERSION, mode: 'sse-http' }); }); } else { // Run as MCP server over stdio (default) console.error('[MCP DEBUG] Starting stdio mode'); logger.info('Starting Cisco Support MCP Server in stdio mode'); console.error('[MCP DEBUG] Creating StdioServerTransport'); const transport = new StdioServerTransport(); console.error('[MCP DEBUG] Connecting to transport'); await mcpServer.connect(transport); console.error('[MCP DEBUG] Connected successfully'); logger.info('Cisco Support MCP Server connected via stdio'); } } catch (error) { console.error('[MCP DEBUG] Error in main:', error); throw error; } } // Run main function console.error('[MCP DEBUG] About to call main()'); main().catch((error) => { console.error('[MCP DEBUG] main() threw error:', error); console.error('Failed to start server:', error); process.exit(1); }); console.error('[MCP DEBUG] main() called (async)');

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/sieteunoseis/mcp-cisco-support'

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