Juicebox MCP
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
Инструменты
Инструмент | Что делает |
| Сохранённые поиски по проекту (id + имя). |
| Ранжированные кандидаты поиска — имя, LinkedIn-URL, должность, компания, местоположение, |
| Оценивает набор фильтров без выполнения поиска — примитив настройки. |
| ЗАПИСЬ. Создаёт и запускает новый поиск по запросу на естественном языке, затем возвращает его кандидатов. Оставляет сохранённый поиск видимым для всего вашего рабочего пространства — подтвердите перед использованием. |
experience[] — единственный способ увидеть прошлых работодателей: полезная нагрузка API содержит только текущего, поэтому выпускники целевой компании без него невидимы.
Какой проект читается по умолчанию
Ничего не захардкожено. При входе в систему зонд загружает /projects, который перенаправляет на проект, видимый вашим местом, и этот идентификатор сохраняется как defaultProjectId в session/session-meta.json.
Он записывается один раз и больше не трогается. Перенаправление следует за тем проектом, который приложение недавно открывало, поэтому доверие к нему при каждом запуске привело бы к тому, что вызов инструмента без projectId читал бы другой проект, чем вчера.
Порядок разрешения:
JUICEBOX_PROJECT_ID(переменная окружения — это то, что задаёт необязательное поле "проект по умолчанию" в расширении для настольного приложения)JUICEBOX_VALIDATOR_PROJECT(переменная окружения — также привязывает проверку аутентификации к этому проекту)defaultProjectIdвsession/session-meta.json, заданный при обнаружении
Каждый инструмент также принимает явный projectId, который всегда имеет приоритет.
Идентификаторы проектов Juicebox — это ключи длиной ~20 символов, например c5PheL2fANnX6uBQVUdo — часть URL /project/<id>/. Если вы передадите UUID, сервер отклонит его с объяснением, а не будет молча переходить к несуществующему проекту.
Два правила, которые несут инструменты
verdictFound: false→unknown, но никогда не отрицательный. "Доказательств не найдено" и "доказательства говорят «нет»" — разные вердикты. Их объединение занижает оценку кандидата по критерию, который никто не мог проверить.Широкие термины навыков размывают рейтинг. Навыки взвешиваются по ИЛИ; термин, охватывающий всё население, например "управление счетами" в поиске по успеху клиентов, раздувает пул примерно в 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:
Никогда не используйте
addInitScript. Patchright молча игнорирует его как меру против обнаружения — без ошибок, скрипт просто не выполняется. Используйтеpage.on('response').linkedin_urlAPI зашифрован (hex:hex), как иprofiles[].urlиprofileDetails.id. Настоящие URL берутся из отображаемых карточек и сопоставляются по нормализованномуfull_name— измерено как 100% на живом поиске.Список очищается на середине разбиения на страницы. Нулевое значение пейджера означает "всё ещё движется", а не "сбой". Ожидание обнаружения изменения пейджера во время перехода — вот как возникли две предыдущие ошибки.
Когда это ломается
Здесь используется внутренний 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 и не одобрен ею.
Maintenance
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
- AlicenseAqualityAmaintenanceEnables Claude to perform actions on X, LinkedIn, and Reddit via a Chrome extension, such as connecting with recruiters, finding threads, and replying to posts.36361MIT
- AlicenseNot gradedqualityAmaintenanceEnables job search and scraping across multiple job boards (LinkedIn, Indeed, Glassdoor, etc.) with advanced filtering, directly from Claude Desktop or other MCP clients.5MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude AI to interact with LinkedIn through browser automation, including profile reading, people and job search, company research, post publishing, and profile editing.MIT
- AlicenseNot gradedqualityCmaintenanceEnables 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
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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