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:
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):
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:
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):
Then enable landed-jobs under Settings → MCP. Omit headers for the free tier.
VS Code (GitHub Copilot / Agent Mode)
Create .vscode/mcp.json:
Open the Chat view → Agent mode → the tools appear under the 🔧 picker.
Windsurf
Edit ~/.codeium/windsurf/mcp_config.json:
Cline (VS Code extension)
Open Cline → MCP Servers → Configure, or edit cline_mcp_settings.json:
Gemini CLI
Edit ~/.gemini/settings.json (or .gemini/settings.json in your project):
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:
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
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.
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
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.
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
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.
The image runs the stdio server against the hosted API.
Environment variables
Endpoints
Development
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
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