Landed

io.github.landedjobs由 GitHub 帳號 landedjobs 發布v0.1.1更新於 Nov 2, 2026

Search AI-native jobs, inspect application forms, and fetch free interview-prep resources.

已驗證Streamable HTTP可網頁執行效率與工作流知識與記憶

概覽

AI 產生的概覽

Landed 是託管型 MCP 伺服器,讓助理搜尋 AI 相關職缺、查看申請表單並取得免費的面試準備資源。

可以做什麼
  • 依職務、技能、資歷、薪酬、工作型態與地點資格等結構化條件搜尋即時 AI 職缺庫,取得排序並附適配分數的候選清單
  • 取得指定職缺的申請表單,依標準、篩選問答與 EEO 欄位分組,方便在投遞前先擬好答案
  • 取得免費精選學習資源,包括面試準備儲存庫、作品集專案目錄與職務路線圖,可依主題、職務或類別篩選
  • 使用內建提示詞引導搜尋並整理候選清單、準備申請資料以及規劃職務學習順序
適用情境
適合正在尋找 AI 相關職務的人,讓助理直接檢索職缺、準備申請答案或整理面試複習資料,不必把求職網站內容貼進對話。
執行需求
遠端 Streamable HTTP 端點,不需安裝或本機執行環境。匿名使用有每日共用免費額度;選用的 Authorization Bearer 權杖(在 Landed 設定中產生)可獲得無限且個人化的搜尋。自架需要 Node.js 20 以上、pnpm,以及 LANDED_API_BASE 與 LANDED_INTERNAL_SECRET 變數。
安裝前請注意
匿名使用依 IP 加上核發的匿名權杖計量,額度每日重置,大量搜尋會觸及上限。Authorization Bearer 權杖屬於憑證,應妥善保管。搜尋請求與個人資料或求職偏好會傳送到 Landed 的託管 API。表單工具只回傳欄位供準備使用,助理不會代為送出申請。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Landed,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.landedjobs%2Flanded/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "landed": {
      "type": "http",
      "url": "https://mcp.landed.jobs/mcp"
    }
  }
}

README

[Landed]

[Landed MCP Server]

[License: MIT] [Model Context Protocol] [smithery badge] [Works with Claude] [Works with Cursor]

Search AI-native jobs, prepare applications, and study for interviews — from any MCP client. A public Model Context Protocol server giving Claude, Cursor, VS Code, and any MCP-capable agent live access to Landed's ranked, fit-scored job corpus.

Maintained by Landed — daily AI-native job matches, agent help with every application, and mock-interview prep.


What is this?

Landed MCP connects your AI assistant to a curated, continuously-updated corpus of AI-native roles (AI Engineer, ML Engineer, RAG Engineer, AI PM, GTM Engineer, and more). Instead of copy-pasting job boards into a chat, your agent can:

  • 🔎 Search jobs — ranked and fit-scored against a structured brief (role, skills, seniority, remote, compensation, industries…), or from a plain-English description.
  • 📝 Prepare applications — pull a job's real application form, grouped into standard / screening / EEO fields, so the agent can auto-fill and draft answers before you apply.
  • 🎓 Study for interviews — fetch free, curated interview-prep, portfolio, and roadmap resources.

It speaks Streamable HTTP and works with any MCP client. Use the hosted server in seconds, or self-host this repo against your own Landed API.

Free to start. Anonymous callers get a shared free budget — no signup, no key. Add an API token for unlimited, personalized results.


Quick start (hosted)

The hosted server lives at:

https://mcp.landed.jobs/mcp

Pick your client below. Everything works anonymously out of the box — just omit the Authorization header. Add Authorization: Bearer lnd_live_… (mint one at Landed → Settings → API tokens) for unlimited, brief-personalized search.

Claude Code

The one-liner (CLI):

bash
# 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"

Then in a session: /mcp to confirm it's connected, and try the find_jobs prompt.

Claude Desktop

Open Settings → Developer → Edit Config (this opens claude_desktop_config.json), then add:

jsonc
{  "mcpServers": {    "landed-jobs": {      "command": "npx",      "args": [        "-y", "mcp-remote", "https://mcp.landed.jobs/mcp",        "--header", "Authorization: Bearer lnd_live_your_token_here"      ]    }  }}

Restart Claude Desktop. Drop the --header line for the free anonymous tier.

Claude Desktop bridges remote HTTP servers through mcp-remote. If your build has native Custom Connectors (Settings → Connectors → Add custom connector), you can instead paste https://mcp.landed.jobs/mcp directly.

Cursor

Create .cursor/mcp.json in your project (or ~/.cursor/mcp.json globally):

jsonc
{  "mcpServers": {    "landed-jobs": {      "url": "https://mcp.landed.jobs/mcp",      "headers": { "Authorization": "Bearer lnd_live_your_token_here" }    }  }}

Then enable landed-jobs under Settings → MCP. Omit headers for the free tier.

VS Code (GitHub Copilot / Agent Mode)

Create .vscode/mcp.json:

jsonc
{  "servers": {    "landed-jobs": {      "type": "http",      "url": "https://mcp.landed.jobs/mcp",      "headers": { "Authorization": "Bearer lnd_live_your_token_here" }    }  }}

Open the Chat view → Agent mode → the tools appear under the 🔧 picker.

Windsurf

Edit ~/.codeium/windsurf/mcp_config.json:

jsonc
{  "mcpServers": {    "landed-jobs": {      "serverUrl": "https://mcp.landed.jobs/mcp",      "headers": { "Authorization": "Bearer lnd_live_your_token_here" }    }  }}

Cline (VS Code extension)

Open Cline → MCP Servers → Configure, or edit cline_mcp_settings.json:

jsonc
{  "mcpServers": {    "landed-jobs": {      "type": "streamableHttp",      "url": "https://mcp.landed.jobs/mcp",      "headers": { "Authorization": "Bearer lnd_live_your_token_here" }    }  }}

Gemini CLI

Edit ~/.gemini/settings.json (or .gemini/settings.json in your project):

jsonc
{  "mcpServers": {    "landed-jobs": {      "httpUrl": "https://mcp.landed.jobs/mcp",      "headers": { "Authorization": "Bearer lnd_live_your_token_here" }    }  }}

Restart gemini and run /mcp to see the tools. Omit headers for the free tier.

Any other MCP client

Point it at https://mcp.landed.jobs/mcp using the Streamable HTTP transport. Pass Authorization: Bearer <token> if you have one. Quick sanity check from a terminal:

bash
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"}'

Registries

Landed is listed on the Official MCP Registry as io.github.landedjobs/landed, and on Smithery as landedjobs/landed. Clients that read either registry can discover and install it without any manual configuration.


Tools

ToolWhat it doesAnonymous cost
search_jobsRanked, fit-scored jobs. Supports physical city/country labels plus canonical remote-eligibility country/region codes; free text is parsed server-side.1 unit / job returned
get_job_formApplication form for a jobId, grouped standard / screening / eeo for answer prep.free
get_learning_contentCurated interview-prep, portfolio, and roadmap resources.free

Prompts (guided workflows)

MCP prompts are reusable, user-invocable skills that teach the agent how to chain the tools and present results as a clean shortlist — never raw JSON. In most clients they show up as slash-commands.

PromptArgsWhat it guides
find_jobsdescribe?Search, then present a ranked, fit-scored shortlist + next steps.
prepare_applicationjobIdFetch the form; auto-fill standard, draft screening, leave EEO to the user.
prep_for_rolerole?Pull learning resources for a role and suggest a study order.

The server also ships always-on instructions (tool overview, presentation rules, freemium behavior) that compliant clients load automatically.

Location parameters

Location eligibility is structured rather than keyword-matched:

  • locations: physical cities/countries, with country included for ambiguous cities, e.g. ["Bengaluru, India"]
  • countryCodes: ISO alpha-2 remote/base eligibility, e.g. ["IN"]
  • regionCodes: apac, emea, or americas
  • workAuthorizationCountryCodes: ISO alpha-2 work-authorization countries
  • remote: work mode (remote, hybrid, or onsite)

The hosted API resolves human city labels to stable place identities. Callers must not invent place IDs. The legacy regions field remains accepted for compatibility.


Auth & pricing

TierHowWhat you get
AnonymousNo headerA free budget of job-units that resets every day at 00:00 UTC. Metered by a hybrid of your IP and an issued X-Landed-Anon token (echoed on every response — resend it to keep your budget across sessions).
AuthenticatedAuthorization: Bearer lnd_live_…Unlimited search, personalized to your saved brief + profile. Mint a token at Landed → Settings → API tokens.

Every result carries a freemium block so your agent can see how much budget is left and how to lift the cap.


Architecture

This repository is a thin, self-hostable proxy. It speaks MCP and forwards to the hosted Landed API — it holds no database, no ranking engine, and no job data.

   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│ └─────────────┘           └────────────────────────┘          └────────────────────────┘

The proxy resolves nothing itself: it forwards the caller's API token (or an anonymous id) to the Landed API, which validates it, runs the search, meters usage, and returns results plus a freemium block the proxy relays verbatim. The get_learning_content catalog is static and lives in this repo (src/mcp/catalog/learning.ts) — that tool works with no backend at all.


Self-host

Run your own proxy against the Landed API (or your own deployment of it).

Prerequisites

  • Node.js ≥ 20
  • pnpm (npm i -g pnpm)
  • A Landed API base URL and its shared internal secret

Run

bash
git clone [email protected]:landedjobs/landed-mcp.gitcd landed-mcppnpm installcp .env.example .env       # then fill in the values belowpnpm dev                   # hot-reload dev server# → [mcp] listening on :8090 — POST /mcp → https://api.landed.jobs/api/v1

For production: pnpm start.

Stdio and Docker

For clients that start the server as a process, pnpm start:stdio speaks MCP over stdio instead of HTTP. Set LANDED_API_TOKEN to use your own API token; without it you get the anonymous free budget.

bash
docker build -t landed-mcp .docker run -i --rm landed-mcp

The image runs the stdio server against the hosted API.

Environment variables

VariableRequiredDefaultDescription
LANDED_API_BASE✓http://localhost:8000/api/v1Hosted Landed API base, including the /api/v1 prefix.
LANDED_INTERNAL_SECRET✓—Shared secret authenticating this proxy to the API (must match the server's INTERNAL_SERVICE_SECRET).
PORT8090HTTP port to listen on.
CORS_ORIGINS*Comma-separated allowlist of origins, or *.
RATE_LIMIT_PER_MIN60Per-IP first-line request cap. The API's freemium meter is the real economic cap.

Endpoints

MethodPathPurpose
POST/mcpMCP Streamable HTTP endpoint (stateless).
GET/healthzLiveness probe ({ "ok": true }).

Development

bash
pnpm dev           # watch + reloadpnpm check-types   # tsc --noEmitpnpm test          # deterministic input-contract testspnpm start         # run once

The repository includes official MCP Registry metadata in server.json. It describes the public Streamable HTTP endpoint but does not imply that the server has been submitted to or accepted by any external registry.

Project layout

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

Stack: TypeScript · Express · @modelcontextprotocol/sdk · Zod. No database, no build step (runs on tsx).


Contributing

Issues and PRs welcome — bug fixes, new client setup guides, and learning-catalog additions especially. Please run pnpm check-types and pnpm test before opening a PR. For private vulnerability reports, follow SECURITY.md.

License

MIT © Landed

來源:README.md,提交 d5e0340

工具

3

search_jobs

Search jobs

Search Landed's live job corpus for AI-native roles and get a ranked, fit-scored shortlist. Fill the structured fields (role, skills, work mode, physical locations, remote-eligibility countries/regions, seniority, comp, industries…) from the user's request — they drive the ranking. Physical locations are resolved to stable places; use ISO country codes and canonical region codes when known. You may also pass a free-text "query"; it's parsed into the same filters and used as a semantic nudge. Free tier: up to a shared budget of jobs for anonymous callers (each returned job counts). Authenticated callers (Authorization: Bearer <API token>) get unlimited, brief-personalized results.

輸入參數roleavoidlimitqueryremoteskillsminCompregionscurrencylocationsseniorityindustries另有 4 個

get_job_form

Get job application form

Get the application form for a job (by the jobId returned from search_jobs), so you can prepare answers before the user applies. Fields are grouped: "standard" (auto-fillable from a candidate profile via mapsTo), "screening" (free-text questions to draft from the résumé/experience), and "eeo" (leave to the user). Always free — a job's form is only reachable once you've already found the job via search_jobs.

輸入參數jobId必填

get_learning_content

Get learning content

Get Landed's free learning content to help the user prepare — curated interview-prep repos (real questions, company guides, worked system designs), portfolio-project catalogs, and role roadmaps from the landedjobs GitHub org. Filter by topic, role, and/or category. Always free, for any caller.

輸入參數roletopiccategory

版本歷史

1
  1. v0.1.1最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分