Skip to main content
Glama

Facebook Ads Management Control Panel

by codprocess
app.js2.66 kB
/** * Facebook Ads Management Control Panel (MCP) Server * Express application setup */ const express = require('express'); const cors = require('cors'); const helmet = require('helmet'); const morgan = require('morgan'); const rateLimit = require('express-rate-limit'); const mongoSanitize = require('express-mongo-sanitize'); const xss = require('xss-clean'); const hpp = require('hpp'); const cookieParser = require('cookie-parser'); const passport = require('passport'); const config = require('./config'); const errorHandler = require('./middleware/errorHandler'); const logger = require('./utils/logger'); // Import routes const authRoutes = require('./routes/auth'); const adAccountsRoutes = require('./routes/adAccounts'); const campaignsRoutes = require('./routes/campaigns'); const adSetsRoutes = require('./routes/adSets'); const adsRoutes = require('./routes/ads'); const analyticsRoutes = require('./routes/analytics'); const recommendationsRoutes = require('./routes/recommendations'); const healthRoutes = require('./routes/health'); // Initialize Express app const app = express(); // Body parser app.use(express.json({ limit: '10kb' })); app.use(express.urlencoded({ extended: true, limit: '10kb' })); app.use(cookieParser()); // Security middleware app.use(helmet()); // Set security HTTP headers app.use(cors()); // Enable CORS app.use(mongoSanitize()); // Data sanitization against NoSQL query injection app.use(xss()); // Data sanitization against XSS app.use(hpp()); // Prevent parameter pollution // Rate limiting const limiter = rateLimit({ windowMs: 15 * 60 * 1000, // 15 minutes max: 100, // limit each IP to 100 requests per windowMs message: 'Too many requests from this IP, please try again after 15 minutes' }); app.use('/api', limiter); // Logging if (config.NODE_ENV === 'development') { app.use(morgan('dev')); } else { app.use(morgan('combined', { stream: { write: message => logger.info(message.trim()) } })); } // Passport initialization app.use(passport.initialize()); require('./config/passport'); // Routes app.use('/auth', authRoutes); app.use('/api/ad-accounts', adAccountsRoutes); app.use('/api/campaigns', campaignsRoutes); app.use('/api/ad-sets', adSetsRoutes); app.use('/api/ads', adsRoutes); app.use('/api/analytics', analyticsRoutes); app.use('/api/recommendations', recommendationsRoutes); app.use('/health', healthRoutes); // 404 handler app.all('*', (req, res, next) => { const err = new Error(`Can't find ${req.originalUrl} on this server!`); err.status = 'fail'; err.statusCode = 404; next(err); }); // Global error handler app.use(errorHandler); module.exports = app;

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/codprocess/facebook-ads-mcp'

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