1. Conduid
  2. Developer Tools
  3. Fbadlibrarymcpserver
MCP server · Developer Tools

Fbadlibrarymcpserver

Build a Model Context Protocol (MCP) server that provides access to Facebook's Ad Library through web scraping. The server should allow clients to search for advertisements with various filters and retrieve comprehensive ad data.

Unclaimed last commit a year ago devtools
41Fair

Scored 4 months ago · breakdown

About Fbadlibrarymcpserver

Fbadlibrarymcpserver is an MCP server published by StinCodes in the Developer Tools category: build a Model Context Protocol (MCP) server that provides access to Facebook's Ad Library through web scraping. The server should allow clients to search for advertisements with various filters and retrieve comprehensive ad data. It has been installed 0 times through Conduid.

The repository has 2 stars and 0 forks, with the last commit a year ago. Six months or more without a commit doesn't mean the server is broken, but check the open issues (0) before depending on it in production.

Install

Install
npx fbadlibrarymcpserver

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

Ask AI about Fbadlibrarymcpserver

Powered by Claude · Grounded in docs

I know everything about Fbadlibrarymcpserver. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ·README presentNot checked yet.
  • ·License declaredNot checked yet.
  • ·Tests presentNot checked yet.
  • ·Dependencies pinnedNot checked yet.
  • ·No dynamic code executionNot checked yet.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

README

Facebook Ad Library MCP Server

A Model Context Protocol (MCP) server that provides access to Facebook's Ad Library through web scraping. This server exposes a single MCP tool for searching advertisements with comprehensive filtering options.

Features

  • MCP-compliant: Built using the official MCP SDK
  • Comprehensive ad data: Extracts advertiser, content, dates, impressions, spend, and more
  • Advanced filtering: Filter by company, date range, and keywords
  • Smart pagination: Auto-scrolling to retrieve up to 100 ads per search
  • Flexible sorting: Sort by date (ascending/descending) or relevance

Installation

  1. Clone the repository:
git clone <repository-url>
cd FbAdLibraryMCPServer
  1. Install dependencies:
npm install
  1. Install Playwright browsers:
npx playwright install

Usage

Development

npm run dev

Production

npm run build
npm start

The server will start on port 3000 (configurable via PORT environment variable).

API Documentation

MCP Tool: search_ads

Search for Facebook ads with optional filters.

Parameters:

  • company (string, optional): Company/advertiser name to filter by
  • start_date (string, optional): Start date in YYYY-MM-DD format
  • end_date (string, optional): End date in YYYY-MM-DD format
  • keywords (array of strings, optional): Keywords to search in ad content
  • limit (integer, optional): Maximum ads to return (default: 50, max: 100)
  • order (string, optional): Sort order - "date_desc", "date_asc", or "relevance" (default: "date_desc")

Example Tool Call:

{
  "tool": "search_ads",
  "arguments": {
    "company": "Nike",
    "start_date": "2024-01-01",
    "end_date": "2024-01-31",
    "keywords": ["running", "shoes"],
    "limit": 10,
    "order": "date_desc"
  }
}

Response Format:

{
  "ads": [
    {
      "id": "unique_ad_identifier",
      "advertiser": "Company Name",
      "content": "Ad text content",
      "start_date": "Jan 15, 2024",
      "end_date": "Feb 15, 2024",
      "impressions": "1,000-5,000",
      "spend": "$100-$500",
      "platforms": ["Facebook"],
      "creative_url": "https://...",
      "demographics": {"targeting": "..."},
      "scraped_at": "2024-01-20T10:30:00Z"
    }
  ]
}

MCP Client Connection

Connect to the server using any MCP-compatible client:

HTTP Transport:

  • URL: http://localhost:3000/mcp
  • Method: POST
  • Headers: Content-Type: application/json

Health Check:

  • URL: http://localhost:3000/healthz
  • Method: GET

Architecture

  • MCP Server (src/index.ts): Express HTTP server hosting MCP protocol
  • Search Handler (src/mcp/searchAdsHandler.ts): Core business logic
  • Web Scraper (src/scraper/scrapeFacebookAds.ts): Playwright-based Facebook scraper
  • Filters (src/utils/filters.ts): Date parsing and filtering utilities

Performance Considerations

  • Rate Limiting: Built-in delays between requests to avoid blocking
  • Pagination: Auto-scrolling with intelligent stopping conditions
  • Browser Management: Proper cleanup of Playwright browser instances
  • Memory Efficiency: Streaming data processing where possible

Anti-Bot Detection Countermeasures

This server successfully bypasses Facebook's anti-bot detection through:

  • Virtual Display (Xvfb): Runs non-headless browsers in cloud environments
  • Natural Navigation: Mimics human browsing patterns (homepage → Ad Library)
  • Simplified Browser Config: Avoids complex "stealth" techniques that trigger detection
  • Smart Timeout Handling: 30-second browser launch timeout with fallback mechanisms
  • Production-Optimized: Different behavior in production vs development environments

Known Limitations

  • Runs in non-headless mode to avoid detection
  • Limited to 100 ads per search to prevent timeouts
  • Date formats depend on Facebook's display format
  • Subject to Facebook's anti-bot measures

Legal & Ethical Notes

  • Respects Facebook's rate limiting through built-in delays
  • Does not store personal user data
  • Intended for research and analysis purposes
  • Users should comply with Facebook's Terms of Service

Dependencies

  • @modelcontextprotocol/sdk: MCP protocol implementation
  • playwright: Web scraping automation
  • date-fns: Date parsing and manipulation
  • express: HTTP server framework
  • zod: Runtime type validation

Deployment (Fly.io)

  1. Install flyctl:
curl -L https://fly.io/install.sh | sh
export FLYCTL_INSTALL="/root/.fly"
export PATH="$FLYCTL_INSTALL/bin:$PATH"
  1. Deploy to Fly.io:
flyctl auth signup
flyctl launch --no-deploy
flyctl secrets set NODE_ENV=production
flyctl deploy
  1. Live Deployment:
    • App URL: https://fbadlibrarymcpserver.fly.dev
    • Health check: https://fbadlibrarymcpserver.fly.dev/healthz
    • MCP endpoint: https://fbadlibrarymcpserver.fly.dev/mcp (POST only)
    • Test endpoint: https://fbadlibrarymcpserver.fly.dev/test-search (GET/POST)

Connection Details

Public URL: https://fbadlibrarymcpserver.fly.dev

Quick Test: https://fbadlibrarymcpserver.fly.dev/test-search?company=Nike&limit=3

MCP Client Configuration:

{
  "transport": "http",
  "url": "https://fbadlibrarymcpserver.fly.dev/mcp",
  "method": "POST",
  "headers": {
    "Content-Type": "application/json",
    "Accept": "application/json, text/event-stream"
  }
}

Authentication: None required

License

ISC

README mirrored from the source repository 4 months ago. The original is authoritative.

Questions

About Fbadlibrarymcpserver

How do I install Fbadlibrarymcpserver?

Run npx fbadlibrarymcpserver, then add the server to your MCP client's configuration. Conduid has recorded 0 installs, so the command is known to work with current clients.

Is Fbadlibrarymcpserver safe to use with an AI agent?

Its trust score is 41 out of 100 (fair). It passes 0 of 1 static security checks; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is Fbadlibrarymcpserver still maintained?

The last commit was a year ago, with 0 open issues. That's long enough that you should check whether the maintainer is responding to issues before depending on it.