Juicebox MCP
Juicebox MCP
Ein lokaler MCP-Server, der deine Juicebox-Sourcing-Daten in Claude einliest – gespeicherte Suchen und ihre bewerteten Ergebnisse – und dabei deine eigene angemeldete Juicebox-Sitzung verwendet.
Läuft vollständig auf deinem Rechner. Deine Sitzung verlässt ihn nie, und jeder Aufruf erfolgt als du, auf deinem eigenen Sitzplatz.
Lesevorgänge kosten keine Export-Credits. Alles, was die Lese-Tools zurückgeben, stammt von derselben freien Oberfläche, die auch die Suchergebnisseite bereits rendert. Ein Tool schreibt, und sagt das auch: jb_run_search erstellt eine echte gespeicherte Suche in deinem Workspace.
Installation
Option A – Desktop-Erweiterung (am einfachsten)
Lade juicebox-mcp.mcpb von Releases herunter und doppelklicke dann darauf, oder ziehe es in Claude Desktop → Einstellungen → Erweiterungen.
Es gibt keinen API-Schlüssel zum Einfügen. Nach der Installation führe die einmaligen Browser-Schritte unten aus.
Option B – aus dem Quellcode
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 headlessRegistriere es dann bei Claude Code:
claude mcp add -s user juicebox -- node "$(pwd)/server.js"-s user macht es in jeder Sitzung verfügbar; ohne diese Option ist die Registrierung auf das Verzeichnis beschränkt, in dem du es zufällig ausgeführt hast.
Der einmalige Browser-Download
Dies treibt ein echtes Chromium an, und diese Binärdatei ist nicht Teil von node_modules – es ist ein einmaliger Download von etwa 500 MB in einen gemeinsamen Cache (~/Library/Caches/ms-playwright auf macOS).
npm install lädt es automatisch über einen Postinstall-Schritt herunter. Benutzer der Desktop-Erweiterung müssen es einmal von Hand ausführen, da eine Erweiterung node_modules bündelt, aber nicht diesen Cache:
npx patchright install chromiumWenn es fehlt, teilt dir der Server das in einfacher Sprache mit, anstatt einen Stack-Trace über eine fehlende ausführbare Datei zu werfen.
Anmelden
Die Authentifizierung ist eine echte Anmeldung, kein Schlüssel. npm run login öffnet ein Browserfenster; melde dich wie gewohnt bei Juicebox an. Die Sitzung wird dann in session/ gespeichert (gitignored, chmod 600) und headless wiederverwendet.
Melde dich erneut an, wenn npm run check fehlschlägt – Sitzungen laufen ab.
Tools
Tool | Was es tut |
| Gespeicherte Suchen auf einem Projekt (ID + Name). |
| Die bewerteten Kandidaten einer Suche – Name, LinkedIn-URL, Titel, Firma, Standort, |
| Größe eines Filtersatzes bestimmen, ohne eine Suche auszuführen – die Abstimmungs-Primitive. |
| SCHREIBT. Erstellt und führt eine neue Suche aus einer natürlichsprachlichen Eingabe aus und gibt dann deren Kandidaten zurück. Hinterlässt eine gespeicherte Suche, die für deinen gesamten Workspace sichtbar ist – bestätige, bevor du sie verwendest. |
experience[] ist der einzige Weg, vergangene Arbeitgeber zu sehen: Die API-Payload enthält nur den aktuellen, daher sind Alumni eines Zielunternehmens ohne sie unsichtbar.
Welches Projekt es standardmäßig liest
Nichts ist fest verdrahtet. Bei der Anmeldung lädt eine Sonde /projects, was in ein Projekt umleitet, das dein Sitzplatz sehen kann, und diese ID wird als defaultProjectId in session/session-meta.json gespeichert.
Es wird einmal geschrieben und dann in Ruhe gelassen. Die Weiterleitung folgt dem Projekt, das die App zuletzt geöffnet hatte. Wenn man ihr bei jedem Lauf vertrauen würde, würde ein Tool-Aufruf ohne projectId ein anderes Projekt lesen als gestern.
Auflösungsreihenfolge:
JUICEBOX_PROJECT_ID(Umgebungsvariable – das ist es, was das optionale Feld „Standardprojekt“ der Desktop-Erweiterung setzt)JUICEBOX_VALIDATOR_PROJECT(Umgebungsvariable – pinnt auch die Authentifizierungsprüfung auf dieses Projekt)defaultProjectIdinsession/session-meta.json, durch Erkennung gesetzt
Jedes Tool akzeptiert auch eine explizite projectId, die immer gewinnt.
Juicebox-Projekt-IDs sind ~20 Zeichen lange Schlüssel wie c5PheL2fANnX6uBQVUdo – der /project/<id>/-Teil einer URL. Wenn du eine UUID übergibst, lehnt der Server sie mit einer Erklärung ab, anstatt still zu einem Projekt zu navigieren, das nicht existiert.
Zwei Regeln, die die Tools mit sich tragen
verdictFound: false→unknown, niemals eine Verneinung. „Keine Beweise gefunden“ und „Beweise sagen nein“ sind unterschiedliche Bewertungen. Sie zusammenzufassen bewertet einen Kandidaten für ein Kriterium schlechter, das niemand tatsächlich prüfen konnte.Breite Skill-Begriffe verwässern das Ranking. Skills sind ODER-gewichtet; ein bevölkerungsweiter Begriff wie „Account Management“ bei einer Customer-Success-Suche bläht den Pool um etwa das 3,4-fache auf. Entferne die generischen Begriffe und befördere die eine harte Anforderung zu einem Skill-Filter.
Skripte ausführen, während der Server läuft
Du kannst das Browserprofil nicht teilen: session/profile/ ist Single-Writer, und der MCP-Server hält es, wann immer er läuft. Ein zweiter Prozess, der es öffnen will, schlägt bei der Authentifizierungsprüfung fehl – die sich selbst als „Sitzung abgelaufen“ meldet und dich im Kreis herum zum erneuten Anmelden schickt.
Für Diagnosen erstelle stattdessen einen frischen Kontext aus dem Checkpoint. Keine Sperre, dieselbe Sitzung:
const { chromium } = require('patchright');
const browser = await chromium.launch({ headless: true });
const context = await browser.newContext({ storageState: 'session/storage-state.json' });Wie es funktioniert und die Fallstricke
Die Ergebnisseite wird beim ersten Laden serverseitig gerendert, daher feuert /api/profiles/results nur bei Interaktion. Der Client stößt den Pager an, damit die App ihre eigene Anfrage auslöst, und erfasst dann die Antwort – die den gesamten bewerteten Satz enthält, nicht nur die sichtbare Seite.
Drei Dinge, die jeden beißen werden, der client.js bearbeitet:
Verwende niemals
addInitScript. Patchright ignoriert es still als Anti-Erkennungsmaßnahme – kein Fehler, das Skript läuft einfach nie. Verwendepage.on('response').Die
linkedin_urlder API ist verschlüsselt (hex:hex), ebenso wieprofiles[].urlundprofileDetails.id. Echte URLs kommen von den gerenderten Karten und werden über normalisiertesfull_nameverknüpft – gemessen bei 100 % bei einer Live-Suche.Die Liste wird mitten in der Paginierung leer. Ein null-Pager-Wert bedeutet „bewegt sich noch“, nicht „fehlgeschlagen“. Etwas an die Pager-Änderungserkennung während eines Übergangs zu koppeln, ist die Ursache für zwei frühere Fehler.
Wenn es kaputtgeht
Dies reitet auf der internen API von Juicebox. Es gibt keinen Stabilitätsvertrag, und sie kann sich ohne Vorankündigung ändern.
npm run checkschlägt fehl → Sitzung abgelaufen:npm run login.Der Server sagt, Chromium fehlt →
npx patchright install chromium.jb_get_resultsgibtsource: "dom-fallback"zurück → die API-Erfassung ist kaputt; du verlierstmatchRateund Kriterien. Prüfe, obRESULTS_PATHnoch übereinstimmt.jb_get_resultsmeldetjoinedLinkedInUrls: 0→ das Karten-Markup hat sich geändert; überarbeiteharvestCards/rewindToFirstPage.Leere Suchliste → das Projektseiten-Markup hat sich geändert; siehe
listSavedSearches.
Anforderungen
Node.js 18 oder neuer
Ein Juicebox-Konto, bei dem du dich anmelden kannst
~500 MB freier Speicherplatz für den Chromium-Download
Lizenz
MIT. Nicht verbunden mit oder unterstützt von Juicebox.
This server cannot be installed
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 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