Skip to main content
Glama
jnot807

Juicebox MCP

by jnot807

Juicebox MCP

Локальный MCP-сервер, который считывает ваши данные поиска Juicebox в Claude — сохранённые поиски и их ранжированные результаты — используя ваш собственный вошедший в систему сеанс Juicebox.

Работает полностью на вашем компьютере. Ваш сеанс никогда его не покидает, и каждый вызов выполняется от вашего имени, на вашем месте.

Чтение не требует экспортных кредитов. Всё, что возвращают инструменты чтения, поступает из той же бесплатной поверхности, которую уже отображает страница результатов поиска. Один инструмент выполняет запись, и говорит об этом: jb_run_search создаёт реальный сохранённый поиск в вашем рабочем пространстве.


Установка

Вариант A — Расширение для настольного приложения (самый простой)

Скачайте juicebox-mcp.mcpb из Releases, затем дважды щёлкните по нему или перетащите в Claude Desktop → Settings → Extensions.

Вставлять API-ключ не нужно. После установки выполните одноразовые действия в браузере, описанные ниже.

Вариант Б — из исходного кода

git clone https://github.com/jnot807/juicebox-mcp.git
cd juicebox-mcp
npm install          # also downloads the Chromium build (see note)
npm run login        # a real browser opens — sign in to Juicebox yourself
npm run check        # proves the session works headless

Затем зарегистрируйте его в Claude Code:

claude mcp add -s user juicebox -- node "$(pwd)/server.js"

-s user делает его доступным в каждом сеансе; без него регистрация ограничивается тем каталогом, из которого вы его запустили.

Одноразовая загрузка браузера

Здесь используется настоящий Chromium, и этот бинарный файл не является частью node_modules — это одноразовая загрузка примерно 500 МБ в общий кэш (~/Library/Caches/ms-playwright на macOS).

npm install загружает его автоматически через шаг postinstall. Пользователям расширения для настольного приложения нужно запустить его один раз вручную, потому что расширение включает node_modules, но не этот кэш:

npx patchright install chromium

Если он отсутствует, сервер сообщит вам об этом простым языком, а не выдаст трассировку стека об отсутствующем исполняемом файле.

Вход в систему

Аутентификация — это реальный вход, а не ключ. npm run login открывает окно браузера; войдите в Juicebox как обычно. Затем сеанс сохраняется в session/ (в gitignore, chmod 600) и повторно используется в фоновом режиме.

Войдите снова, когда npm run check начнёт давать сбой — сеансы истекают.


Related MCP server: JobSpy MCP Server

Инструменты

Инструмент

Что делает

jb_list_searches(projectId?)

Сохранённые поиски по проекту (id + имя).

jb_get_results(searchId, limit?, minMatchRate?)

Ранжированные кандидаты поиска — имя, LinkedIn-URL, должность, компания, местоположение, matchRate, вердикты по критериям и датированные experience[] + education, считанные с отображаемых карточек. До ~500 за вызов.

jb_count(queryInput, searchId?)

Оценивает набор фильтров без выполнения поиска — примитив настройки. queryInput — это PATCH по извлечённому шаблону; проверьте noEffect в ответе.

jb_run_search(prompt, need?)

ЗАПИСЬ. Создаёт и запускает новый поиск по запросу на естественном языке, затем возвращает его кандидатов. Оставляет сохранённый поиск видимым для всего вашего рабочего пространства — подтвердите перед использованием.

experience[] — единственный способ увидеть прошлых работодателей: полезная нагрузка API содержит только текущего, поэтому выпускники целевой компании без него невидимы.


Какой проект читается по умолчанию

Ничего не захардкожено. При входе в систему зонд загружает /projects, который перенаправляет на проект, видимый вашим местом, и этот идентификатор сохраняется как defaultProjectId в session/session-meta.json.

Он записывается один раз и больше не трогается. Перенаправление следует за тем проектом, который приложение недавно открывало, поэтому доверие к нему при каждом запуске привело бы к тому, что вызов инструмента без projectId читал бы другой проект, чем вчера.

Порядок разрешения:

  1. JUICEBOX_PROJECT_ID (переменная окружения — это то, что задаёт необязательное поле "проект по умолчанию" в расширении для настольного приложения)

  2. JUICEBOX_VALIDATOR_PROJECT (переменная окружения — также привязывает проверку аутентификации к этому проекту)

  3. defaultProjectId в session/session-meta.json, заданный при обнаружении

Каждый инструмент также принимает явный projectId, который всегда имеет приоритет.

Идентификаторы проектов Juicebox — это ключи длиной ~20 символов, например c5PheL2fANnX6uBQVUdo — часть URL /project/<id>/. Если вы передадите UUID, сервер отклонит его с объяснением, а не будет молча переходить к несуществующему проекту.


Два правила, которые несут инструменты

  • verdictFound: falseunknown, но никогда не отрицательный. "Доказательств не найдено" и "доказательства говорят «нет»" — разные вердикты. Их объединение занижает оценку кандидата по критерию, который никто не мог проверить.

  • Широкие термины навыков размывают рейтинг. Навыки взвешиваются по ИЛИ; термин, охватывающий всё население, например "управление счетами" в поиске по успеху клиентов, раздувает пул примерно в 3,4 раза. Откажитесь от общих терминов и повысьте одно жёсткое требование до фильтра навыков.


Запуск скриптов при работающем сервере

Нельзя использовать общий профиль браузера: session/profile/ однопользовательский, и MCP-сервер удерживает его, пока работает. Второй процесс, пытающийся открыть его, не проходит проверку аутентификации — что сообщает о себе как об "истёкшем сеансе" и заставляет вас бесконечно перелогиниваться.

Для диагностики вместо этого создайте новый контекст из контрольной точки. Без блокировки, тот же сеанс:

const { chromium } = require('patchright');
const browser = await chromium.launch({ headless: true });
const context = await browser.newContext({ storageState: 'session/storage-state.json' });

Как это работает и подводные камни

Страница результатов отображается на сервере при первой загрузке, поэтому /api/profiles/results срабатывает только при взаимодействии. Клиент подталкивает пейджер, чтобы приложение выполнило собственный запрос, а затем перехватывает ответ — который содержит весь ранжированный набор, а не только видимую страницу.

Три вещи, которые укусят любого, кто редактирует client.js:

  1. Никогда не используйте addInitScript. Patchright молча игнорирует его как меру против обнаружения — без ошибок, скрипт просто не выполняется. Используйте page.on('response').

  2. linkedin_url API зашифрован (hex:hex), как и profiles[].url и profileDetails.id. Настоящие URL берутся из отображаемых карточек и сопоставляются по нормализованному full_name — измерено как 100% на живом поиске.

  3. Список очищается на середине разбиения на страницы. Нулевое значение пейджера означает "всё ещё движется", а не "сбой". Ожидание обнаружения изменения пейджера во время перехода — вот как возникли две предыдущие ошибки.


Когда это ломается

Здесь используется внутренний API Juicebox. Никаких гарантий стабильности нет, и он может измениться без предупреждения.

  • npm run check не работает → истёк сеанс: npm run login.

  • Сервер сообщает, что Chromium отсутствует → npx patchright install chromium.

  • jb_get_results возвращает source: "dom-fallback" → перехват API сломан; вы теряете matchRate и критерии. Проверьте, что RESULTS_PATH по-прежнему совпадает.

  • jb_get_results сообщает joinedLinkedInUrls: 0 → разметка карточек изменилась; пересмотрите harvestCards / rewindToFirstPage.

  • Пустой список поисков → изменилась разметка страницы проекта; см. listSavedSearches.


Требования

  • Node.js 18 или новее

  • Учётная запись Juicebox, в которую вы можете войти

  • ~500 МБ свободного места для загрузки Chromium

Лицензия

MIT. Не аффилирован с Juicebox и не одобрен ею.

Install Server
F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
1Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables Claude to perform actions on X, LinkedIn, and Reddit via a Chrome extension, such as connecting with recruiters, finding threads, and replying to posts.
    36
    36
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables job search and scraping across multiple job boards (LinkedIn, Indeed, Glassdoor, etc.) with advanced filtering, directly from Claude Desktop or other MCP clients.
    5
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables searching and evaluating job postings from LinkedIn and freehire.me directly through Claude Desktop. Provides tools to search jobs, fetch full posting details, and assess candidate fit using eligibility scans and a scoring rubric.
    MIT

View all related MCP servers

Related MCP Connectors

  • Persistent context for Claude. Your AI always knows your projects and next actions across sessions.

  • Amazon brand, seller, niche & buy-box intelligence inside your own Claude or ChatGPT.

  • Stealth scraping & search. Bypasses Cloudflare, DataDome & LinkedIn via Cyborg HITL approach.

View all MCP Connectors

Latest Blog Posts

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/jnot807/juicebox-mcp'

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