Skip to main content
Glama

fbdl-mcp

MCP-сервер для FBDL (Facebook Developer Language) от Meta. Позволяет ИИ-агентам создавать, проверять и изучать FBDL-скрипты, используемые в программе Meta по поиску уязвимостей (MMBRC).

Аутентификация не требуется — FBDL является текстовым форматом. Этот сервер работает локально и никогда не взаимодействует с инфраструктурой Meta.

Что он делает

  • validate_fbdl — Парсинг и проверка FBDL-скриптов. Обнаруживает неизвестные сущности/действия, отсутствующие обязательные параметры, недопустимые значения перечислений, ошибки синтаксиса.

  • list_entities — Просмотр всех типов сущностей настройки (User, Page, Group, Album, Friendship, Business, App, Event) с их параметрами и примерами.

  • list_actions — Просмотр всех 70+ действий FBDL с сигнатурами, параметрами и примерами. Фильтрация по имени или категории.

  • explain_fbdl — Преобразование FBDL-скрипта в пошаговое объяснение на обычном английском языке.

  • generate_fbdl (prompt) — Шаблон промпта, который предоставляет вызывающей LLM полную грамматику FBDL, чтобы она могла генерировать корректные скрипты на основе естественного языка.

Related MCP server: mcp-meta-marketing

Навыки Claude Code (MCP-сервер не требуется)

Репозиторий включает автономные навыки Claude Code, которые работают без MCP-сервера. Скопируйте каталог .claude/skills/ в любой проект:

cp -r /path/to/fbdl-mcp/.claude/skills/ your-project/.claude/skills/

Доступные навыки:

  • /generate-fbdl — Генерация FBDL-скриптов из естественного языка. Включает полную справочную информацию по грамматике, чтобы Claude мог напрямую создавать корректные скрипты.

  • /validate-fbdl — Проверка FBDL-скриптов на соответствие грамматике. Включает полный контрольный список для проверки структуры, сущностей, действий и ссылок.

Эти навыки встраивают всю спецификацию FBDL в качестве контекста промпта — без сервера, без зависимостей, без этапа сборки.

Установка

git clone <repo-url> && cd fbdl-mcp
npm install
npm run build

Проверьте работоспособность:

npm run check   # typecheck + lint + format + tests

Настройка с Claude Code

Добавьте в конфигурацию MCP Claude Code (~/.claude/settings.json или .claude/settings.json в проекте):

{
  "mcpServers": {
    "fbdl": {
      "command": "node",
      "args": ["/absolute/path/to/fbdl-mcp/dist/server.js"]
    }
  }
}

Затем в Claude Code вы можете давать команды, например:

"Generate an FBDL script where two users are friends, one owns a page, the other posts a photo and gets blocked"

"Validate this FBDL script: [setup] User UserOne Page PageOne with {owner: UserOne}"

"What FBDL actions are available for groups?"

Настройка с OpenAI Codex / агентами

Для Codex или любого агента, совместимого с MCP, укажите путь к бинарному файлу сервера:

node /absolute/path/to/fbdl-mcp/dist/server.js

Сервер взаимодействует через stdio с использованием протокола MCP. Он предоставляет:

  • 4 инструмента: validate_fbdl, list_entities, list_actions, explain_fbdl

  • 1 ресурс: fbdl://reference (полная спецификация языка в формате markdown)

  • 1 промпт: generate_fbdl (шаблон промпта для преобразования естественного языка в FBDL)

Фрагмент AGENTS.md

Если ваша агентная платформа использует AGENTS.md для обнаружения инструментов, добавьте:

## FBDL MCP Server

Tools for working with Meta's FBDL (Facebook Developer Language) scripts:

- Use `validate_fbdl` after generating a script to check it for errors
- Use `list_entities` and `list_actions` to discover available FBDL constructs
- Use `explain_fbdl` to understand what an existing script does
- Use the `generate_fbdl` prompt to produce scripts from natural language

The server runs on stdio. Start with: `node /path/to/fbdl-mcp/dist/server.js`

Пример рабочего процесса

  1. Агент получает запрос: "Create a test scenario where a page admin blocks a group member"

  2. Агент вызывает list_entities, чтобы проверить, какая настройка необходима

  3. Агент вызывает list_actions с параметром category: "block", чтобы найти нужное действие

  4. Агент использует промпт generate_fbdl для создания:

[setup] User OwnerOne User MemberOne Page PageOne with {owner: OwnerOne} Group GroupOne with {owner: OwnerOne, privacy: private, members: [MemberOne]}
OwnerOne as PageOne block MemberOne
  1. Агент вызывает validate_fbdl для проверки корректности скрипта

  2. Исследователь вставляет скрипт в платформу MMBRC от Meta

Краткий справочник FBDL

Блок настройки

[setup] Type Label [with {key: value, ...}] [Type Label ...]

Типы сущностей: User, Page, Group, Album, Friendship, Business, App, Event

Строки действий

Subject [as VoiceSwitcher] action_name Label [with {key: value, ...}]

Переключатель голоса (as) позволяет пользователю действовать от имени страницы, которой он владеет.

Правила

  • Все сущности должны быть созданы в блоке настройки перед использованием в действиях

  • Блок настройки — это одна строка, начинающаяся с [setup]

  • Каждое действие записывается с новой строки

  • Метки (Labels) должны быть в формате PascalCase и быть уникальными

Разработка

npm run build         # compile TypeScript
npm run test          # run tests
npm run lint          # eslint with strict TypeScript rules
npm run format        # prettier
npm run check         # all of the above

Структура проекта

src/
  schema.ts           # FBDL language spec as typed data (entities + actions)
  validator.ts        # FBDL script parser and validator
  server.ts           # MCP server (tools, resources, prompts)
  __tests__/
    schema.test.ts    # Schema integrity tests
    validator.test.ts # Validator correctness tests
    server.test.ts    # MCP tool integration tests

Related MCP Connectors

Related MCP Servers