mcpField
B
Blind

Blind

本地服务
github.com/dheerajjha商业与营销12 天前更新

关于 Blind

Blind 是面向求职者和薪酬研究者的 MCP 服务,可按职位级别汇总招聘信息中的薪资范围,并比较不同公司和市场。它还提供可选的 Blind 职场讨论工具,但目前这些工具受站点自动化访问限制。

主要功能

  1. 01按资历汇总薪资范围
  2. 02比较多个公司的同级职位
  3. 03查看职位及推断级别
  4. 04对照不同市场的货币薪资
  5. 05可选查询 Blind 讨论

适用场景

  1. 01估算未公布薪资的职位水平
  2. 02比较同一职位在不同市场的薪资
  3. 03核查多个雇主的同级薪酬
  4. 04查看公司的 Blind 讨论

MCP 相关

作为 MCP 服务,向客户端提供薪资范围、市场薪酬和职位查询工具。Blind 讨论工具默认不启用,且当前自动化请求会被站点拦截。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"dheerajjha-blind": {
"command": "uvx",
"args": [
"blind-mcp"
]
}
}
}
启动命令uvx blind-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiblind-mcp0.2.0

工具

8

收录的工具列表 · 更新于 2 周前

参数类型必填说明
companystring是

详细介绍

payband-mcp

tests good first issues python license

了解某个职位的实际薪酬——包括雇主没有公布薪酬的市场。

在 0.5.0 版本中从 blind-mcp 更名而来。Blind 工具仍在这里(见 下文),但这个项目用于读取已公布的薪酬 范围,因此现在的名称更贴切。旧的 GitHub URL 会重定向;旧的 PyPI 软件包会指向此处。BLIND_MCP_* 环境 变量仍可使用——推荐使用 PAYBAND_*。

科罗拉多州、加利福尼亚州、纽约州、华盛顿州和伊利诺伊州要求受监管的招聘信息注明薪酬范围。印度、新加坡和欧盟大多数地区则没有这项要求。因此,同一家公司、同一职位、同一周发布的招聘信息,在丹佛会注明薪酬范围,在班加罗尔却不会。

薪酬范围仍然存在,只是附在了另一条招聘信息上。

pay_bands(company="Databricks", role="forward deployed")

  101 matching openings · band width ratio x1.37 · 33 publish no range

  LEVEL            TYPICAL BAND        BANDS  POSTS  PRECISION
  mid              152,900–210,155         2      3  tight
  senior           182,000–250,208         1     58  tight
  lead             178,800–245,850         1      1  tight
  manager          211,800–291,300         4      5  tight
  senior_manager   232,900–320,200         1      1  tight

  steps: mid→senior +19.1% · lead→manager +18.5% · manager→sr_mgr +9.9%
  silent: Remote-India, Seoul, London, Berlin, Amsterdam

按级别划分,因为把不同资历的薪酬合在一个范围内,得出的数字没人能拿到——不划分级别时,该职位的范围是 140,400–320,200,跨度达 2.3 倍,涵盖了五种不同的工作。

typical 是众数薪酬范围。distinct_bands 与 postings 的对比才是衡量证据的可靠指标:58 条招聘信息共用一个薪酬范围,只是一条数据被公布了 58 次。precision 标示薪酬范围实际缩小了多少——Databricks 按级别公布紧凑的薪酬范围,Figma 则公布一个覆盖整个职级阶梯、跨度达 2.5 倍的薪酬范围,两者都是真实情况。

这是同一雇主、同一职位、同一时间——与任何薪酬调查相比,它都是更好的未公布薪酬参照,而且只需一次调用。

同一份工作,遍布雇主发布招聘信息的每个市场

在某个国家受薪酬透明法约束的雇主,往往也会在多个国家发布同一职位。这是最接近受控实验的对比:同一家公司、同一职位、同一周。

pay_bands(company="Anthropic", role="software engineer")

  MARKET   PUBLISHED BAND            POSTS   ≈ IN USD              vs US
  USD      405,000–485,000              78   —                     —
  GBP      325,000–390,000              10   438,206–525,847       1.08x
  EUR      235,000–295,000               2   271,165–340,399       0.69x

  fx: ECB daily reference rates, 2026-09-15

始终保留已公布的数字;换算结果会附在旁边,并注明日期。没有换算,比较就会产生误导——GitLab 在波兰公布的薪酬范围显示为 272,000–408,000,而美国的范围为 139,200–235,200,看起来像是波兰薪酬更高,但实际比例是 0.48 倍。

读取公共招聘网站 API——Greenhouse、Ashby、Lever、 SmartRecruiters 和 Workday——以及少数使用自有端点的雇主。文档齐全、专为机器使用而设计且稳定——不进行抓取。

工具

薪酬
工具功能
pay_bands(company, role, board=, max_lookups=)按资历划分的已公布薪酬范围,以及该职位发布时使用的每种货币和换算结果
market_rate(role, companies, level=)多家雇主中处于同一级别的职位,按中点排序
job_openings(company, role=, with_pay_only=)相关招聘信息,并推断级别
文化——默认不注册
工具功能
find(company, keyword, limit=, page=)按关键词搜索公司的 Blind 帖子
research(company, question, max_posts=)选择主题,根据问题为帖子排序,并完整返回
company_topics / company_posts / read_post帖子列表和单个帖子

除非你主动启用,否则这五个工具都处于关闭状态(PAYBAND_ENABLE_BLIND=1)。 工具列表是模型在决定如何行动前会读取的内容,而目前这五个条目只会增加上下文成本,还可能引向死胡同。代码和测试均未改动,因此启用此标志即可立即恢复这些工具。

⚠️ Blind 大约从 2026 年 9 月起开始对所有自动化请求返回 403。 这是网站范围内的机器人防护,并非针对本项目的封锁:curl 和空的 User-Agent 也会被拒绝,只有浏览器 User-Agent 能通过。 robots.txt 仍允许访问 /company/,但 WAF 不允许。

我们不会伪装成浏览器来绕过限制——这属于规避访问控制,而且也是他们下一步升级防护时最先封堵的做法。现在,Blind 工具会抛出 BlindBlocked 并说明原因,而不是返回空结果,让人误以为“没有找到相关讨论”。

薪酬工具不受影响。请参阅 #12。

覆盖范围

数据来自实际测量,而非估算:

公司招聘平台开放职位发布了薪酬范围的职位
公司招聘平台开放职位发布了薪酬范围的职位
------------
DatabricksGreenhouse880471(54%)
AnthropicGreenhouse595525(88%)
RampAshby148141(95%)
MonzoGreenhouse6655(83%)
NotionAshby12783(65%)
FigmaGreenhouse156101(65%)
GitLabGreenhouse22494(42%)
StripeGreenhouse64822(3%)
FreshworksSmartRecruiters139按需查询
NVIDIAWorkday1,693按需查询
Cisco · Adobe · Salesforce · HPE · eBayWorkday—按需查询
Atlassian自托管287122(43%)

SmartRecruiters 和 Workday 标为按需查询,因为它们将薪酬范围放在每个职位详情中,而不是职位列表里。系统会先按职位名称筛选,只有筛选后的职位才会被获取,因此查询 NVIDIA 的问题大约需要 40 次请求,而非 1,693 次。max_lookups 用于设置请求上限,超出部分会记为 not_checked_count,绝不会被表述为雇主没有公布薪酬范围。

系统通过读取 Workday 租户的 robots.txt 来查找租户,其中的 Sitemap 行会列出公开的招聘网站。如果租户名称与公司名称不同,请粘贴招聘网址或传入 board="workday:<tenant>/<site>"。

SmartRecruiters 的公司 ID 来自 careers.smartrecruiters.com/<company-id>,也会根据公司名称推测。如果 ID 不同,请传入 board="smartrecruiters:<company-id>"。

Atlassian 使用自托管平台,可通过名称访问其专属端点。其美国职位会公布三个地理区域(Zone A/B/C),系统会将它们分别报告为独立薪酬区间,而不是合并;三者合并后的范围相差 1.6 倍,并不代表任何人的实际录用薪酬。

未覆盖的公司: Google、Meta、Amazon、Apple,以及大多数总部位于印度的公司。我们探测过 Amazon 和 Netflix,两者都会返回干净的 JSON,但其中完全没有薪酬信息——它们的薪酬范围仅存在于渲染后的 HTML 中。Apple 返回 401。BoardNotFound 会说明原因,而不是直接失败。

如果某家公司确实在这些招聘平台上,但对应标识无法推测,请从其招聘网址中读取标识并直接传入:

pay_bands("Some Rebranded Co", "engineer", board="greenhouse:theirslug")

印度的自托管雇主仍在待支持列表中,详见 #13。

安装

uv sync

在 Claude Code 中注册:

uv tool install --editable .          # puts `payband-mcp` on PATH
claude mcp add --scope user payband -- payband-mcp

或者在 claude_desktop_config.json 中:

{
  "mcpServers": {
    "payband": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/payband-mcp", "payband-mcp"]
    }
  }
}

我需要登录吗?

不需要,而且你可能不该登录。 这是经过实测的结论,而非假设:

  • 帖子正文、完整评论串、Blind 的 AI 评论摘要、公司列表、话题页面、评价和薪资页面,匿名访问时均返回 HTTP 200,且没有访问限制。
  • 使用自动化操作经过身份验证的会话,浏览约 6 个页面后就触发了 Blind 的异常检测:Automatic Logout — we noticed a login from a new device or location (code 2009),随后重定向到 /session-out。

因此,Cookie 不会带来额外的读取权限,却会损害会话稳定性。它唯一能解锁的是公司内部频道,而这些频道仅限该公司的已验证员工访问。

如果你仍想使用,请将 BLIND_COOKIE 设置为你的会话 Cookie 请求头(可在已登录浏览器的 DevTools 中复制请求头)。没有登录流程——服务只会重放你提供的 Cookie,在启动时读取一次,并附加到每个请求中。默认情况下它处于关闭状态;如果 Blind 使 Cookie 失效,客户端会立即报错,而不是悄悄返回已退出登录的 HTML。

Cookie 本身绝不会写入磁盘,但使用它获取的响应会缓存在单独的 auth/ 目录中,因此经过身份验证和匿名获取的结果绝不会互相混用。请勿提交 Cookie。

做个负责任的使用者

Blind 的 robots.txt 禁止所有 user-agent 访问 /search/,因此此服务没有搜索工具,并会拒绝获取该路径。它还会:

  • 使用如实的 User-Agent(不冒充浏览器——Blind 仍会向其返回 200)
  • 将每个响应缓存在磁盘上 6 小时,因此重复查询不会产生请求
  • 将请求间隔设为约 1.5 秒
  • 首先获取 robots.txt,如果无法读取则拒绝访问

通过 PAYBAND_CACHE_DIR、PAYBAND_CACHE_TTL、PAYBAND_MIN_INTERVAL、PAYBAND_USER_AGENT 进行配置。

招聘网站也会受到同样的处理。SmartRecruiters 和 Workday 需要为每个职位发布请求一次才能读取一个范围,因此请求会在由四个工作线程共享的锁保护下间隔 250 毫秒发送——工作线程可以并行处理网站的延迟,但绝不会提高请求速率——并且每个问题的查询次数都有上限。Workday 网站发现流程会读取 robots.txt,并以其规定为准来判断哪些内容是公开的,包括绝不将 Disallow 禁止的路径视为招聘网站。汇率会缓存一天,因为欧洲央行每个工作日只发布一次汇率。

Blind 的服务条款限制自动化访问。本工具以符合人工浏览节奏的速度读取公开页面,用于个人研究;批量抓取既违反服务条款,也会损害隐私,因为 Blind 的价值正是建立在匿名之上。不要创建将帖子与雇主和昵称关联起来的数据集。

阅读输出

输出中有四项容易被忽略的信息:

  • distinct_bands 与 postings——58 个职位发布共享同一薪资范围,意味着同一个数据点被发布了 58 次。
  • precision——wide 表示雇主为多个级别公布了同一个范围,因此几乎不能缩小范围。
  • not_checked_count——这些职位发布的薪资范围尚未查询;它们与雇主确实未填写薪资范围的职位发布分开统计。请提高 max_lookups。
  • on_target_earnings_excluded——销售岗位经常公布 OTE,即基本工资加佣金。这些数据会单独报告,绝不会计入基本工资范围的平均值。

换算后的数字是基于标注日期的汇率估算得出的,既未调整生活成本,也未考虑税费。以原货币公布的数字才是事实;换算只是为了让比较不至于毫无意义。

Blind 上的内容是匿名且未经验证的。请根据评论者的雇主(每条评论中的 company)评估其说法,并将单个高声量的发言视为一个数据点。在测试中,关于 Roku India RTO 的回答得到了两位彼此独立的评论者以及一条无关的 Glassdoor 评价佐证——这才值得信任。

贡献

这是个小型项目,很容易参与贡献。最有价值的改动是我们还无法访问的招聘平台——每个适配器都能让工具突然覆盖一整类雇主,而最近三次发布中有两次正是由外部贡献者完成的。非美国雇主尤其重要,因为不公开薪酬信息的市场正是这个项目的目标。

其次有价值的是:薪酬区间有误。看起来权威却并不准确的数字,是这个项目最严重的问题,而目前所有严重 Bug 都属于这一类。此类问题的优先级高于新增覆盖范围。

维护者请参阅 MAINTAINING.md。

请从适合新手的议题开始,然后阅读 CONTRIBUTING.md。议题会按规模标记(size: XS 表示耗时不到 30 分钟),mentored 表示可以在讨论串中提问,我们会带你完成。请在评论中认领一个议题,以免其他人也开始处理。 我们会在 48 小时内进行首次审查——通过实际运行来审查,而不只是阅读代码。

CONTRIBUTING 中说明了两条严格规则:不要提交抓取的 Blind 页面(测试样例会自动生成),以及不要为了提速而放宽 robots、缓存或限流规则。

发布

mcp-name: io.github.dheerajjha/payband-mcp

请参阅 RELEASING.md。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。