关于 hiresignal
hiresignal 是一个 MCP 服务,将实时招聘信息转化为面向 B2B 销售和 GTM 团队的招聘意向信号。它结合职位搜索与市场分析工具,并维护来自所选公司 ATS 的职位时间序列语料。
主要功能
- 01按职位、技能、地点和时效搜索招聘信息
- 02跟踪公司招聘速度和部门构成
- 03分析技能需求和薪资范围
- 04比较最多五家公司的招聘情况
- 05轮询新职位并查看服务状态
- 06使用第一方语料中的职位时间序列
适用场景
- 01发现招聘相关职位的目标客户
- 02比较潜在客户公司的招聘势头
- 03跟踪某项技能的需求与薪资估算
- 04在 Agent 循环中检查新职位
MCP 相关
通过 SSE 向 MCP 客户端提供 8 个工具,支持托管远程端点和 API 密钥认证。工具涵盖职位搜索、招聘与技能趋势、薪资估算、公司比较、职位提醒和服务状态。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://hiresignal-mcp-production-d4d9.up.railway.app/sseclaude mcp add --transport sse iusmuchandra-hiresignal https://hiresignal-mcp-production-d4d9.up.railway.app/sse{"mcpServers":{"iusmuchandra-hiresignal":{"type":"sse","url":"https://hiresignal-mcp-production-d4d9.up.railway.app/sse"}}}在 Cursor 中打开{"servers":{"iusmuchandra-hiresignal":{"type":"sse","url":"https://hiresignal-mcp-production-d4d9.up.railway.app/sse"}}}在 VS Code 中打开{"mcpServers":{"iusmuchandra-hiresignal":{"type":"sse","url":"https://hiresignal-mcp-production-d4d9.up.railway.app/sse"}}}{"mcpServers":{"iusmuchandra-hiresignal":{"serverUrl":"https://hiresignal-mcp-production-d4d9.up.railway.app/sse"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
HireSignal — 面向 B2B 销售的招聘意向信号
将实时职位发布转化为 AI Agent 可调用的购买信号。

针对托管实例的实时演示 — 使用 node scripts/demo.mjs 亲自运行。
当一家公司发布 VP Sales、RevOps Manager 或 Data Security Analyst 的职位时,这说明它存在痛点,且已获批预算——通常会早于开始调研供应商 60–90 天。HireSignal 是一款 MCP 服务,可呈现这些招聘信号,让你的销售/GTM Agent 找到正在寻求解决方案的客户、为其评分并把握联系时机。
将它接入 Claude、Cursor、Cline 或 Windsurf,然后询问:
- “过去 7 天内,哪些金融科技公司发布了 RevOps 或 Sales Ops 职位?” (→ 表明正在寻找 CRM/销售工具)
- “Stripe 目前是在扩充还是冻结数据团队?” (→ 客户扩张 = 预算解锁)
- “比较这 5 个目标客户的招聘势头。”
- “本月哪些公司开始招聘 Snowflake 相关职位?” (→ 表明有意购买周边数据工具)
它也适用于招聘情报、薪酬基准分析和市场研究——但它是以销售为先构建的。
该服务通过 SSE 使用 Model Context Protocol,因此可托管在远程位置(Railway、Fly 或任何支持 HTTPS 的平台)。
即刻试用(托管演示)
当前有一个在线实例在运行,使用共享且受速率限制的演示密钥。将任意 MCP 客户端指向:
URL: https://hiresignal-mcp-production-d4d9.up.railway.app/sse
Header: Authorization: Bearer hs_demo_0b25932234553fd38b571f12c1439bfd
演示密钥的速率限制非常严格,且共享有限的月度数据配额——繁忙时段可能会遇到
QUOTA_EXHAUSTED。如需限制更宽松的专属密钥,请联系我们。
工具
| 工具 | 功能 |
|---|---|
search_jobs | 按职位/技能、地点和近期时间范围查找实时职位发布。 |
company_hiring_velocity | 查询单家公司职位总数、过去 7 天/30 天新增职位数、部门构成,以及增长/稳定/收缩信号。 |
skill_demand_pulse | 查询某项技能的逐周需求趋势、公开薪资均值和招聘职位最多的公司。 |
market_salary_estimate | 按职位名称、地点和资历查询 p25 / 中位数 / p75 薪资,以及远程办公溢价。 |
industry_hiring_heatmap | 查询某个行业垂直领域各部门的开放职位数和变化百分比。 |
competitor_talent_intel | 并排比较最多 5 家公司的开放职位、热门职位名称和增长信号。 |
job_alert_check | 检查过去 N 小时内发布的新职位。专为 cron / Agent 循环设计。 |
get_server_status | 健康状态快照:版本、运行时间、已配置的数据提供方、语料库统计信息、缓存大小。 |
第一方语料库(数据护城河)
对于经过筛选的一组高价值客户,HireSignal 不会转售聚合数据,而是直接抓取每家公司的自有 ATS(Greenhouse / Ashby / Lever / Workday),并在本地 SQLite 文件中存储每条职位发布的时间序列。因此,company_hiring_velocity 能提供真实信号(职位会随时间新增和关闭,并使用公司实际发布的日期),返回 data_source: "first_party_ats",每次查询无需付费;而且由于价值来自不断积累的历史记录,竞争对手无法事后补齐这项数据。
npm run build && npm run ingest # ~50 companies, ~12k open roles, ~$0
服务可以自行保持数据最新(设置 INGEST_INTERVAL_HOURS 和持久化的
HIRESIGNAL_CORPUS_PATH)。语料库以外的公司会自动回退到聚合数据源。完整设计、架构和添加公司的方法见:CORPUS.md。
配置
在服务器上设置这些环境变量(Railway → Variables,或在本地设置 .env):
SERPAPI_KEY=... # https://serpapi.com — used by search_jobs, job_alert_check
JSEARCH_RAPIDAPI_KEY=... # https://rapidapi.com/letscrape-6bRBa3QguO5/api/jsearch
HIRESIGNAL_API_KEYS=k1,k2 # comma-separated allowlist of client keys
PORT=3000 # default
# First-party corpus (optional but recommended — see CORPUS.md)
HIRESIGNAL_CORPUS_PATH=./data/corpus.db # SQLite corpus location (use a volume in prod)
INGEST_INTERVAL_HOURS=6 # if set, server self-ingests on boot + interval
必须有可用的数据源:可以是已导入的语料库(npm run ingest),也可以是提供商密钥。get_server_status 会在语料库处于活动状态或已设置密钥时报告 "ok",两者都没有时则报告 "degraded"。
HIRESIGNAL_API_KEYS 接受一个或多个以逗号分隔的密钥(单个密钥也可以使用 HIRESIGNAL_API_KEY)。如果两者均未设置,服务器将以开放模式运行——它会记录启动警告并接受未经身份验证的调用。这种模式适合本地开发,但不得用于任何暴露在网络上的部署。
在本地运行
npm install
cp .env.example .env # fill in keys
npm run dev # tsx watch
# → http://localhost:3000/sse
# → http://localhost:3000/health
生产构建:
npm run build
npm start
部署到 Railway
npm install -g @railway/cli
railway login
railway init
railway up
# then set SERPAPI_KEY and JSEARCH_RAPIDAPI_KEY in the Railway dashboard
railway.json 配置了 Nixpacks、npm ci && npm run build 步骤,以及用于健康检查的 /health。
连接 MCP 客户端
Claude Desktop
Claude Desktop 的稳定版配置原生支持 stdio MCP 服务,也可通过 mcp-remote 桥接远程(SSE)服务。编辑 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"hiresignal": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://your-hiresignal.up.railway.app/sse",
"--header",
"Authorization: Bearer YOUR_HIRESIGNAL_API_KEY"
]
}
}
}
重启 Claude Desktop。8 个 HireSignal 工具将显示在工具菜单中。
Cursor
打开 Cursor → Settings → MCP → “Add new MCP server”:
{
"mcpServers": {
"hiresignal": {
"url": "https://your-hiresignal.up.railway.app/sse",
"headers": {
"Authorization": "Bearer YOUR_HIRESIGNAL_API_KEY"
}
}
}
}
Cline / Windsurf
两者都支持远程 SSE MCP 服务。将它们指向 https://your-hiresignal.up.railway.app/sse,并使用相同的 Authorization: Bearer … 标头。
本地 stdio 备用方案
大多数客户端只需使用上面的 SSE URL。如果客户端要求使用 stdio,请按 Claude Desktop 示例将其指向 mcp-remote 桥接程序。
身份验证与限制的工作方式
- API 密钥:服务器从
Authorization: Bearer …、x-api-key或?api_key=…读取密钥(建议使用标头——查询参数会出现在代理/访问日志中)。服务器会对所提交的密钥进行 SHA-256 摘要计算,并以恒定时间与HIRESIGNAL_API_KEYS中每个密钥的摘要进行比较。未知或缺失的密钥会返回401和{"code": "AUTH_FAILED"}。日志中只记录摘要的前 16 个十六进制字符,绝不记录密钥本身。/messagesPOST 端点会在每次调用时重新检查密钥;如果密钥与开启会话时使用的密钥不同,则会拒绝请求。因此,仅泄露sessionId不足以接管会话。 - 速率限制:每个 API 密钥每分钟最多调用工具 30 次(内存中的令牌桶)。超出限制时,工具会返回
{ "code": "RATE_LIMITED", "retry_after_seconds": N }。 - 缓存:每个
(query, location, date_posted)元组的职位搜索结果会缓存 15 分钟,以保护上游配额。job_alert_check始终绕过缓存。 - 配额错误:上游返回 429 或表示配额耗尽时,工具会返回
{ "code": "QUOTA_EXHAUSTED", "retry_after_seconds": N, "hint": "hiresignal.io/pricing" }。
测试
npm test # vitest run with mocked upstream APIs
npm run typecheck
许可证
MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。