关于 Landed
Landed 是面向求职者的 MCP 服务,可搜索经过匹配评分的 AI 相关职位、查看真实申请表并获取面试准备资源。它连接 Landed 的持续更新职位库,也提供可自托管的代理服务。
主要功能
- 01按条件搜索并匹配职位
- 02获取职位申请表字段
- 03提供面试与作品集资源
- 04可复用的求职工作流提示词
- 05支持匿名访问和令牌认证
适用场景
- 01按职位、技能和地点筛选工作
- 02为目标职位准备申请答案
- 03获取特定角色的面试学习材料
MCP 相关
提供 Streamable HTTP 远程 MCP 服务,向客户端开放职位搜索、申请表和学习资源工具,以及引导式提示词。仓库也可自托管为代理,转发请求至 Landed API。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.landed.jobs/mcpclaude mcp add --transport http landedjobs-landed https://mcp.landed.jobs/mcp{"mcpServers":{"landedjobs-landed":{"type":"http","url":"https://mcp.landed.jobs/mcp"}}}在 Cursor 中打开{"servers":{"landedjobs-landed":{"type":"http","url":"https://mcp.landed.jobs/mcp"}}}在 VS Code 中打开{"mcpServers":{"landedjobs-landed":{"type":"http","url":"https://mcp.landed.jobs/mcp"}}}{"mcpServers":{"landedjobs-landed":{"serverUrl":"https://mcp.landed.jobs/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
3| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| role | string | 否 | 目标职位或职称类别,例如 "AI Engineer"、"RAG Engineer"、"Data Scientist"。 |
| avoid | array | 否 | 要避开的公司或行业。 |
| limit | integer | 否 | 要返回的职位数量。 |
| query | string | 否 | 用用户自己的措辞描述理想工作的自由文本。服务器端会将其解析为结构化筛选条件;也会用作语义提示。 |
| remote | enum | 否 | 工作模式偏好。remote | hybrid | onsite |
| skills | array | 否 | 该职位应涉及的核心技能/技术,例如 ["RAG", "LangChain", "Python"]。 |
| minComp | number | 否 | 可接受的最低基本薪酬(数值)。 |
| regions | array | 否 | 旧版的远程工作资格地区/国家(人类可读),例如 ["APAC", "India"]。已知时优先使用 regionCodes/countryCodes。 |
| currency | string | 否 | minComp 的货币,例如 "USD"。 |
| locations | array | 否 | 偏好的实际工作城市/国家,使用精确名称;对于名称有歧义的城市,请注明国家,例如 ["Bengaluru, India", "London, UK"]。服务器端会将其解析为稳定的地点 ID。 |
| seniority | string | 否 | 目标资历级别,例如 "junior"、"mid"、"senior"、"staff"、"lead"。 |
| industries | array | 否 | 偏好的公司行业/领域。 |
| regionCodes | array | 否 | 规范的远程工作资格地区。 |
| countryCodes | array | 否 | ISO 3166-1 alpha-2 国家代码,表示职位可能所在或符合远程工作资格的国家,例如 ["IN"]。 |
| companyStages | array | 否 | 偏好的公司发展阶段,例如 ["seed", "series-a", "public"]。 |
| workAuthorizationCountryCodes | array | 否 | 候选人获准工作的国家代码(ISO 格式)。 |
详细介绍
通过任意 MCP 客户端搜索 AI 原生职位、准备申请并备战面试。 一个公开的 Model Context Protocol 服务,让 Claude、Cursor、VS Code 和任何支持 MCP 的 Agent 实时访问 Landed 中经过排名和匹配度评分的职位库。
由 Landed 维护——每日推荐 AI 原生职位,Agent 为每份申请提供帮助,并提供模拟面试准备。
这是什么?
Landed MCP 将你的 AI 助手连接到一个经过筛选且持续更新的 AI 原生职位库 (AI 工程师、ML 工程师、RAG 工程师、AI 产品经理、GTM 工程师等)。你的 Agent 无需将招聘网站上的内容复制粘贴到聊天中,就可以:
- 🔎 搜索职位 — 根据结构化条件(职位、技能、资历、远程办公、薪酬、行业……)进行排名和匹配度评分,也可以根据自然语言描述搜索。
- 📝 准备申请 — 获取职位的真实申请表,并按常规/筛选/EEO 字段分类,以便 Agent 在你申请前自动填写表单并起草回答。
- 🎓 备战面试 — 获取免费的精选面试准备、作品集和路线图资源。
它使用 Streamable HTTP,兼容任何 MCP 客户端。几秒钟即可使用托管服务,也可以将此代码库连接到你自己的 Landed API 进行自托管。
免费开始。 匿名调用者共享免费额度——无需注册,也无需密钥。添加 API 令牌即可获取无限制、个性化的结果。
快速开始(托管服务)
托管服务地址:
https://mcp.landed.jobs/mcp
选择下方的客户端。所有功能开箱即用,无需身份验证——只需省略 Authorization 请求头。添加 Authorization: Bearer lnd_live_…(在
Landed → Settings → API tokens 中创建)即可进行无限制、根据个人条件定制的搜索。
Claude Code
一行命令(CLI):
# Anonymous (free tier)
claude mcp add --transport http landed-jobs https://mcp.landed.jobs/mcp
# Authenticated (unlimited, personalized)
claude mcp add --transport http landed-jobs https://mcp.landed.jobs/mcp \
--header "Authorization: Bearer lnd_live_your_token_here"
然后在会话中输入:/mcp 确认已连接,并尝试 find_jobs 提示词。
Claude Desktop
打开 Settings → Developer → Edit Config(这会打开 claude_desktop_config.json),然后添加:
{
"mcpServers": {
"landed-jobs": {
"command": "npx",
"args": [
"-y", "mcp-remote", "https://mcp.landed.jobs/mcp",
"--header", "Authorization: Bearer lnd_live_your_token_here"
]
}
}
}
重启 Claude Desktop。免费匿名使用时,请删除 --header 行。
Claude Desktop 通过
mcp-remote转接远程 HTTP 服务。 如果你的版本支持原生 Custom Connectors(Settings → Connectors → Add custom connector),也可以 直接粘贴https://mcp.landed.jobs/mcp。
Cursor
在项目中创建 .cursor/mcp.json(或在全局路径 ~/.cursor/mcp.json 创建):
{
"mcpServers": {
"landed-jobs": {
"url": "https://mcp.landed.jobs/mcp",
"headers": { "Authorization": "Bearer lnd_live_your_token_here" }
}
}
}
然后在 Settings → MCP 下启用 landed-jobs。免费使用时,请省略 headers。
VS Code(GitHub Copilot / Agent Mode)
创建 .vscode/mcp.json:
{
"servers": {
"landed-jobs": {
"type": "http",
"url": "https://mcp.landed.jobs/mcp",
"headers": { "Authorization": "Bearer lnd_live_your_token_here" }
}
}
}
打开 Chat 视图 → Agent 模式 → 工具会显示在 🔧 选择器中。
Windsurf
编辑 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"landed-jobs": {
"serverUrl": "https://mcp.landed.jobs/mcp",
"headers": { "Authorization": "Bearer lnd_live_your_token_here" }
}
}
}
Cline(VS Code 扩展)
打开 Cline → MCP Servers → Configure,或编辑 cline_mcp_settings.json:
{
"mcpServers": {
"landed-jobs": {
"type": "streamableHttp",
"url": "https://mcp.landed.jobs/mcp",
"headers": { "Authorization": "Bearer lnd_live_your_token_here" }
}
}
}
Gemini CLI
编辑 ~/.gemini/settings.json(或项目中的 .gemini/settings.json):
{
"mcpServers": {
"landed-jobs": {
"httpUrl": "https://mcp.landed.jobs/mcp",
"headers": { "Authorization": "Bearer lnd_live_your_token_here" }
}
}
}
重启 gemini 并运行 /mcp 查看工具。免费版可省略 headers。
其他 MCP 客户端
使用 Streamable HTTP 传输方式连接到 https://mcp.landed.jobs/mcp。如果有令牌,请传入
Authorization: Bearer <token>。可在终端中快速验证:
curl -s -X POST https://mcp.landed.jobs/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
注册表
Landed 已列入 Official MCP Registry,名称为
io.github.landedjobs/landed;也已列入 Smithery,名称为
landedjobs/landed。支持读取上述任一注册表的客户端都可以发现并安装它,无需任何
手动配置。
工具
| 工具 | 功能 | 匿名使用成本 |
|---|---|---|
search_jobs | 按排名和匹配度评分筛选职位。支持实际城市/国家标签,以及用于远程工作资格的规范国家/地区代码;自由文本由服务端解析。 | 每返回 1 个职位消耗 1 个单位 |
get_job_form | 获取 jobId 对应的申请表,按 standard/screening/eeo 分组,便于准备答案。 | 免费 |
get_learning_content | 提供精选的面试准备、作品集和学习路线图资源。 | 免费 |
提示词(引导式工作流)
MCP 提示词是可重复使用、由用户调用的技能,能指导 Agent 如何串联工具,并将结果整理成清晰的职位候选列表,而不是原始 JSON。在大多数客户端中,它们会显示为斜杠命令。
| 提示词 | 参数 | 引导内容 |
|---|---|---|
find_jobs | describe? | 搜索并呈现按排名和匹配度评分的候选列表,以及后续步骤。 |
prepare_application | jobId | 获取申请表;自动填写标准问题、起草筛选问题答案,并将 EEO 部分留给用户填写。 |
prep_for_role | role? | 获取相关职位的学习资源并建议学习顺序。 |
服务还提供始终启用的 instructions(工具概览、呈现规则、免费增值行为),兼容的客户端会自动加载。
位置参数
位置资格采用结构化数据,而非关键词匹配:
locations:实际城市/国家;对于有歧义的城市,应包含国家,例如["Bengaluru, India"]countryCodes:符合远程工作/工作地点资格的 ISO alpha-2 代码,例如["IN"]regionCodes:apac、emea或americasworkAuthorizationCountryCodes:工作许可国家的 ISO alpha-2 代码remote:工作模式(remote、hybrid或onsite)
托管 API 会将人类可读的城市标签解析为稳定的地点标识。调用方不得自行编造地点
ID。为兼容性,仍接受旧版 regions 字段。
身份验证与定价
| 套餐 | 方式 | 可用内容 |
|---|---|---|
| 匿名 | 不带请求头 | 免费职位单位额度,每天 00:00 UTC 重置。根据 IP 和签发的 X-Landed-Anon 令牌综合计量(每个响应都会返回此令牌;重新发送该令牌即可在不同会话间保留额度)。 |
| 已认证 | Authorization: Bearer lnd_live_… | 无限搜索,并根据你保存的职位需求简述和个人资料进行个性化定制。在 Landed → Settings → API tokens 创建令牌。 |
每条结果都包含 freemium 数据块,让 Agent 可以查看剩余额度以及如何提高额度上限。
架构
此仓库是一个轻量、可自托管的代理。它使用 MCP 并转发请求至托管的 Landed API——它不包含数据库、排名引擎或职位数据。
MCP client landed-mcp (this repo) Landed API
┌─────────────┐ HTTP ┌────────────────────────┐ HTTPS ┌────────────────────────┐
│ Claude / │ ───────▶ │ • MCP protocol + tools │ ──────▶ │ • search engine │
│ Cursor / │ /mcp │ • forwards caller creds│ │ • job corpus + forms │
│ VS Code … │ ◀─────── │ • local learning list │ ◀────── │ • auth · freemium meter│
└─────────────┘ └────────────────────────┘ └────────────────────────┘
代理本身不进行解析:它会将调用方的 API 令牌(或匿名 ID)转发至 Landed API,由后者验证令牌、执行搜索、计量用量,并返回结果和 freemium
数据块,代理会原样转发该数据块。get_learning_content 目录是静态的,保存在此仓库中
(src/mcp/catalog/learning.ts)——此工具无需任何后端即可使用。
自托管
运行自己的代理,连接 Landed API(或你自行部署的 Landed API)。
前提条件
- Node.js ≥ 20
- pnpm(
npm i -g pnpm) - Landed API 基础 URL 和对应的共享内部密钥
运行
git clone [email protected]:landedjobs/landed-mcp.git
cd landed-mcp
pnpm install
cp .env.example .env # then fill in the values below
pnpm dev # hot-reload dev server
# → [mcp] listening on :8090 — POST /mcp → https://api.landed.jobs/api/v1
生产环境请运行:pnpm start。
Stdio 和 Docker
对于将服务器作为进程启动的客户端,pnpm start:stdio 使用 stdio 而非 HTTP 传输 MCP。设置 LANDED_API_TOKEN 即可使用你自己的 API 令牌;如果不设置,则可使用匿名免费额度。
docker build -t landed-mcp .
docker run -i --rm landed-mcp
该镜像会运行 stdio 服务,并连接托管的 API。
环境变量
| 变量 | 必填 | 默认值 | 描述 |
|---|---|---|---|
LANDED_API_BASE | ✓ | http://localhost:8000/api/v1 | 托管的 Landed API 基础 URL,必须包含 /api/v1 前缀。 |
LANDED_INTERNAL_SECRET | ✓ | — | 用于验证此代理与 API 身份的共享密钥(必须与服务器的 INTERNAL_SERVICE_SECRET 一致)。 |
PORT | 8090 | 监听的 HTTP 端口。 | |
CORS_ORIGINS | * | 以逗号分隔的来源许可列表,或 *。 | |
RATE_LIMIT_PER_MIN | 60 | 每个 IP 的第一道请求频率上限。API 的免费增值额度才是真正的经济上限。 |
端点
| 方法 | 路径 | 用途 |
|---|---|---|
POST | /mcp | MCP Streamable HTTP 端点(无状态)。 |
GET | /healthz | 存活探针({ "ok": true })。 |
开发
pnpm dev # watch + reload
pnpm check-types # tsc --noEmit
pnpm test # deterministic input-contract tests
pnpm start # run once
仓库在 server.json 中包含官方 MCP Registry 元数据。该文件描述公开的 Streamable HTTP 端点,但不代表此服务器已提交至或被任何外部注册表接受。
项目布局
src/
├── index.ts # bootstrap: start the HTTP server
├── config/ # env → typed config
├── http/ # express shell + per-IP rate limiter
├── services/api-client.ts # typed fetch client → Landed API
├── types.ts # the API response contract (owned here)
└── mcp/
├── server.ts # instructions + tool/prompt registration
├── prompts.ts # find_jobs / prepare_application / prep_for_role
├── catalog/learning.ts # static, public learning resources
└── tools/ # search_jobs · get_job_form · get_learning_content
技术栈:TypeScript · Express · @modelcontextprotocol/sdk · Zod。无需数据库,也无需构建步骤(使用 tsx 运行)。
贡献
欢迎提交问题和 PR,尤其欢迎修复错误、新增客户端设置指南和补充学习目录。
提交 PR 前,请运行 pnpm check-types 和 pnpm test。如需私下报告漏洞,
请参阅 SECURITY.md。
许可证
MIT © Landed
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
