Skip to main content
Glama

MCP FOR ITSM

index.js2.54 kB
const express = require('express'); const mongoose = require('mongoose'); const cors = require('cors'); const helmet = require('helmet'); const compression = require('compression'); const morgan = require('morgan'); const rateLimit = require('express-rate-limit'); const { logger } = require('./utils/logger'); const config = require('./config/config'); // Import routes const authRoutes = require('./routes/auth.routes'); const contextRoutes = require('./routes/context.routes'); const integrationRoutes = require('./routes/integration.routes'); const userRoutes = require('./routes/user.routes'); // Initialize express app const app = express(); // Apply middleware app.use(helmet()); // Security headers app.use(compression()); // Compress responses app.use(cors()); // Enable CORS app.use(express.json()); // Parse JSON bodies app.use(express.urlencoded({ extended: true })); // Parse URL-encoded bodies app.use(morgan('combined', { stream: { write: message => logger.info(message.trim()) } })); // Apply rate limiting const limiter = rateLimit({ windowMs: 15 * 60 * 1000, // 15 minutes max: 100, // Limit each IP to 100 requests per windowMs standardHeaders: true, legacyHeaders: false, }); app.use(limiter); // Health check endpoint app.get('/health', (req, res) => { res.status(200).json({ status: 'healthy', timestamp: new Date() }); }); // API routes app.use('/api/auth', authRoutes); app.use('/api/context', contextRoutes); app.use('/api/integration', integrationRoutes); app.use('/api/users', userRoutes); // Error handling middleware app.use((err, req, res, next) => { logger.error(err.stack); res.status(err.status || 500).json({ message: err.message || 'An unexpected error occurred', error: process.env.NODE_ENV === 'development' ? err : {} }); }); // Connect to MongoDB and start server const startServer = async () => { try { await mongoose.connect(config.database.uri, { useNewUrlParser: true, useUnifiedTopology: true, }); logger.info('Connected to MongoDB'); const PORT = config.server.port || 5000; app.listen(PORT, () => { logger.info(`Server running on port ${PORT}`); }); } catch (error) { logger.error('Failed to connect to MongoDB', error); process.exit(1); } }; startServer(); // Handle unhandled promise rejections process.on('unhandledRejection', (err) => { logger.error('Unhandled Promise Rejection:', err); // Close server & exit process process.exit(1); }); module.exports = app; // Export for testing

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/madosh/MCP-ITSM'

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