Skip to main content
Glama
jnot807

Juicebox MCP

by jnot807

Juicebox MCP

一个本地 MCP 服务器,将您的 Juicebox 寻源数据读取到 Claude 中——包括已保存的搜索及其评分结果——使用您自己已登录的 Juicebox 会话。

它完全在您的机器上运行。您的会话绝不会离开本机,每次调用都以您的身份、在您自己的席位上进行。

读取不消耗导出积分。 读取工具返回的所有内容都来自搜索结果页面已经渲染的同一免费界面。有一个工具会执行写入操作,并且会明确说明:jb_run_search 会在您的工作区中创建一个真实的已保存搜索。


安装

选项 A — 桌面扩展(最简单)

Releases 下载 juicebox-mcp.mcpb,然后双击它,或将其拖入 Claude Desktop → 设置 → 扩展

无需粘贴 API 密钥。安装后,请按照下方的一次性浏览器步骤操作。

选项 B — 从源码安装

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 的一部分——它是一次性下载,约 500MB,会放入共享缓存中(macOS 上为 ~/Library/Caches/ms-playwright)。

npm install 会通过 postinstall 步骤自动获取它。桌面扩展用户需要手动运行一次,因为扩展打包了 node_modules,但不包含该缓存:

npx patchright install chromium

如果缺少它,服务器会用通俗的语言告诉您,而不是抛出关于缺少可执行文件的堆栈跟踪。

登录

身份验证是真实的登录,而不是密钥。npm run login 会打开一个浏览器窗口;像平常一样登录 Juicebox。然后会话会存储在 session/ 目录中(已加入 gitignore,权限为 chmod 600),并在无头模式下复用。

每当 npm run check 开始失败时,请重新登录——会话会过期。


工具

工具

功能

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,它会重定向到您的席位可以访问的项目,该 ID 会保存为 session/session-meta.json 中的 defaultProjectId

它只写入一次,之后不再改动。重定向会跟随应用最近打开的项目,因此如果每次运行都信任它,那么在没有 projectId 的情况下调用工具可能会读取到与昨天不同的项目。

解析顺序:

  1. JUICEBOX_PROJECT_ID(环境变量——这是桌面扩展的可选“默认项目”字段设置的内容)

  2. JUICEBOX_VALIDATOR_PROJECT(环境变量——也会将身份验证检查固定到该项目)

  3. session/session-meta.json 中的 defaultProjectId,由发现机制设置

每个工具也接受显式的 projectId,它始终优先。

Juicebox 项目 ID 是约 20 个字符的密钥,如 c5PheL2fANnX6uBQVUdo——即 URL 中的 /project/<id>/ 部分。如果您传入 UUID,服务器会拒绝并给出解释,而不是静默导航到一个不存在的项目。


工具遵循的两条规则

  • verdictFound: falseunknown,绝不是否定。 “未找到证据”和“证据表明没有”是不同的判定。将它们混为一谈,会因一个实际上无人能检查的标准而降低候选人的评分。

  • 宽泛的技能术语会稀释排名。 技能是 OR 加权的;像“客户成功”搜索中的“客户管理”这样的大众化术语会使候选池膨胀约 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. API 的 linkedin_url 是加密的hex:hex),profiles[].urlprofileDetails.id 也是如此。真实 URL 来自渲染的卡片,并在规范化的 full_name 上连接——在实时搜索中测得为 100%。

  3. 列表在分页过程中会清空。 分页器读取为 null 表示“仍在移动”,而不是“失败”。在转换期间,基于分页器更改检测来门控任何内容,正是之前两个 bug 的根源。


出现问题时

这依赖于 Juicebox 的内部 API。没有稳定性保证,并且可能随时更改。

  • 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 账户

  • 约 500MB 可用磁盘空间用于 Chromium 下载

许可证

MIT。与 Juicebox 无关联,亦未获其认可。

-
license - not tested
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 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