Facebook Ads Management Control Panel
A Node.js Express server that integrates with Facebook Marketing API to provide a platform for managing ad campaigns, analyzing performance, and receiving optimization recommendations.
README
Facebook Ads Management Control Panel (MCP)
A comprehensive Node.js Express server that integrates with the Facebook Marketing API to provide a robust platform for managing Facebook ad campaigns, analyzing performance, and receiving optimization recommendations.
Features
- Facebook OAuth Authentication: Secure login with Facebook credentials
- Ad Account Management: View and manage multiple Facebook ad accounts
- Campaign Management: Create, read, update, and delete campaigns
- Ad Set Management: Create, read, update, and delete ad sets with targeting options
- Ad Management: Create, read, update, and delete ads with creative options
- Analytics: Comprehensive analytics for campaigns, ad sets, and ads
- Recommendations: Intelligent recommendations for budget optimization, targeting, and creative performance
- API Documentation: Detailed API documentation for all endpoints
- Railway Deployment: Easy deployment to Railway with minimal configuration
Tech Stack
- Backend: Node.js, Express
- Database: MongoDB with Mongoose ODM
- Authentication: Passport.js with Facebook OAuth, JWT
- API Integration: Facebook Marketing API
- Validation: Joi
- Logging: Winston
- Security: Helmet, CORS, Rate Limiting, CSRF Protection
- Deployment: Railway
Project Structure
facebook-ads-mcp/
├── src/
│ ├── config/ # Configuration files
│ ├── middleware/ # Express middleware
│ ├── models/ # Mongoose models
│ ├── routes/ # API routes
│ ├── services/ # Business logic
│ ├── utils/ # Utility functions
│ └── app.js # Express app setup
├── server.js # Server entry point
├── .env.example # Environment variables example
├── package.json # Dependencies and scripts
├── railway.json # Railway deployment config
└── README.md # Project documentation
Prerequisites
- Node.js (v14 or higher)
- MongoDB database (local or Atlas)
- Facebook Developer Account with an app that has Marketing API permissions
Getting Started
Installation
-
Clone the repository:
git clone https://github.com/yourusername/facebook-ads-mcp.git cd facebook-ads-mcp -
Install dependencies:
npm install -
Create a
.envfile based on.env.example:cp .env.example .env -
Update the
.envfile with your configuration:- MongoDB connection string
- Facebook App ID and Secret
- JWT secret key
- Other configuration options
Running Locally
Start the development server:
npm run dev
The server will be available at http://localhost:3000.
API Endpoints
Authentication
GET /auth/facebook: Initiate Facebook OAuth flowGET /auth/facebook/callback: Handle Facebook OAuth callbackPOST /auth/refresh: Refresh JWT tokenPOST /auth/logout: Logout userGET /auth/me: Get current userPUT /auth/me: Update current user
Ad Accounts
GET /api/ad-accounts: Get all ad accountsGET /api/ad-accounts/sync: Sync ad accounts from FacebookGET /api/ad-accounts/:id: Get ad account by IDGET /api/ad-accounts/:id/insights: Get insights for an ad accountGET /api/ad-accounts/:id/campaigns: Get campaigns for an ad account
Campaigns
GET /api/campaigns: Get all campaignsGET /api/campaigns/sync: Sync campaigns from FacebookPOST /api/campaigns: Create a new campaignGET /api/campaigns/:id: Get campaign by IDPUT /api/campaigns/:id: Update campaignDELETE /api/campaigns/:id: Delete campaignGET /api/campaigns/:id/insights: Get insights for a campaignGET /api/campaigns/:id/adsets: Get ad sets for a campaignGET /api/campaigns/:id/analytics: Get analytics for a campaignPOST /api/campaigns/:id/fetch-analytics: Fetch and store analytics for a campaign
Ad Sets
GET /api/ad-sets: Get all ad setsGET /api/ad-sets/sync: Sync ad sets from FacebookPOST /api/ad-sets: Create a new ad setGET /api/ad-sets/:id: Get ad set by IDPUT /api/ad-sets/:id: Update ad setDELETE /api/ad-sets/:id: Delete ad setGET /api/ad-sets/:id/insights: Get insights for an ad setGET /api/ad-sets/:id/ads: Get ads for an ad setGET /api/ad-sets/:id/analytics: Get analytics for an ad setPOST /api/ad-sets/:id/fetch-analytics: Fetch and store analytics for an ad setGET /api/ad-sets/:id/targeting-recommendations: Get targeting recommendations for an ad set
Ads
GET /api/ads: Get all adsGET /api/ads/sync: Sync ads from FacebookPOST /api/ads: Create a new adGET /api/ads/:id: Get ad by IDPUT /api/ads/:id: Update adDELETE /api/ads/:id: Delete adGET /api/ads/:id/insights: Get insights for an adGET /api/ads/:id/analytics: Get analytics for an adPOST /api/ads/:id/fetch-analytics: Fetch and store analytics for an adGET /api/ads/:id/creative-recommendations: Get creative recommendations for an adGET /api/ads/:id/preview: Get preview URL for an ad
Analytics
GET /api/analytics/overview: Get account overview analyticsGET /api/analytics/campaigns: Get analytics for all campaignsGET /api/analytics/campaigns/:id: Get analytics for a specific campaignGET /api/analytics/ad-sets: Get analytics for all ad setsGET /api/analytics/ad-sets/:id: Get analytics for a specific ad setGET /api/analytics/ads: Get analytics for all adsGET /api/analytics/ads/:id: Get analytics for a specific adPOST /api/analytics/fetch: Fetch and store analytics for all entitiesGET /api/analytics/comparison: Get performance comparison between two time periodsGET /api/analytics/metrics: Get available metrics for analytics
Recommendations
GET /api/recommendations/budget: Get budget optimization recommendationsGET /api/recommendations/targeting: Get targeting recommendations for an ad setGET /api/recommendations/creative: Get creative performance recommendationsGET /api/recommendations/all: Get all recommendations for an ad accountGET /api/recommendations/summary: Get recommendations summary for an ad accountGET /api/recommendations/best-practices: Get best practices recommendations
Health Check
GET /health: Health check endpointGET /health/db: Database health check endpointGET /health/deep: Deep health check endpoint
Deployment to Railway
This project is configured for easy deployment to Railway.
-
Create a new project on Railway
-
Connect your GitHub repository
-
Add the required environment variables in the Railway dashboard
-
Deploy the project
The railway.json file in the repository configures the deployment settings, including the health check endpoint and restart policy.
Security Considerations
This project implements several security measures:
- Authentication: JWT-based authentication with secure cookies
- Rate Limiting: Prevents brute force attacks
- CSRF Protection: Prevents cross-site request forgery
- Helmet: Sets various HTTP headers for security
- Input Validation: Validates all input data using Joi
- MongoDB Sanitization: Prevents NoSQL injection
- XSS Protection: Prevents cross-site scripting attacks
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the MIT License - see the LICENSE file for details.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。