JobSpy MCP
JobSpy
MCP server that searches LinkedIn, Indeed, Glassdoor and ZipRecruiter jobs and saves results to CSV or JSON
- 4,644 ★ on the repository
- Last commit
- MIT
Broad access
Why this level
- The server visits job sites and collects data on its own. Board rules may forbid that, and the board can then block your account or IP address
- A proxy with a login and password sits in the server's environment and gives access to your proxy account
- Listings contain employer contacts and data, so saved files need protecting
Install
- Works in
In your terminal, with SkillFoxx CLI
npx skillfoxx add mcp/jobspyDetects the agents on your machine, shows the access level and pins the version.
Other ways to install
Access and checks
How we reviewBroad accessThe tool can change data, run commands or handle secrets.
- The server visits job sites and collects data on its own. Board rules may forbid that, and the board can then block your account or IP address
- A proxy with a login and password sits in the server's environment and gives access to your proxy account
- Listings contain employer contacts and data, so saved files need protecting
This is third-party code. Review the repository files before installing.
What it does
JobSpy MCP lets an agent search for jobs on several boards at once: LinkedIn, Indeed, Glassdoor, ZipRecruiter, Bayt, Naukri, BDJobs and HelloWork. The server lives in the mcp folder of the JobSpy library repository and starts with `uvx mcp-jobspy@latest`. It has two tools. The first, search_jobs, takes JobSpy's search options: keywords, location, a list of boards, results per board, posting age, remote work and job type. It returns a short view of each job with a search id and can write every record to a .csv, .json or .jsonl file. The second, get_job_details, returns the full records of chosen jobs from that search without querying the boards again.
Who it is for. For job seekers, recruiters and labour-market analysts who want to collect listings from international boards through Claude Code, Cursor or another agent.
Good fit when
- You want a batch of fresh listings from several boards for one query
- The results must be saved to CSV and reviewed in a spreadsheet
- The agent should filter jobs by remote work and posting age
- You need full descriptions for only a few shortlisted jobs
Not a fit when
- You need the Russian market: the board list has no hh.ru or other Russian sites, and the catalog has hh-mcp-pro for them
- You need jobs inside Python code: install the library with `pip install -U python-jobspy` and call `scrape_jobs` directly
- You want to apply to jobs: the server only searches and reads listings
Example request
Use jobspy to find 30 fresh remote Python developer jobs on Indeed and LinkedIn from the last 72 hours and save them to jobs.csvMCP
- Transport
- stdio
- Authentication
- not required
Environment variables
HTTPS_PROXYsecret- Proxy address for requests to the boards, may contain a login and password
Limitations
The server reads data straight from the boards' pages, and the boards limit repeated requests, so large searches can stop early. LinkedIn answers bursts of requests with a 429 for about a minute, and Glassdoor limits traffic above about two requests a second. Most boards return at most about 1000 jobs per search. Indeed also searches the listing text, so unrelated roles show up. LinkedIn is blocked in Russia. ZipRecruiter searches only the US and Canada. Running the server needs uv, and the library needs Python 3.10 or newer.
How to disable. Run `claude mcp remove jobspy` or delete the jobspy block from your client's MCP configuration.
FAQ
How do I connect JobSpy to Claude Code?
Run `claude mcp add jobspy -- uvx mcp-jobspy@latest`. For other clients add a jobspy server to the MCP configuration with the command `uvx` and the argument `mcp-jobspy@latest`.
How does search_jobs differ from get_job_details?
search_jobs queries the boards and returns a short view of jobs with a search id. get_job_details uses that id to return the full records of chosen jobs without searching again.
Can I save the results to a file?
Yes, search_jobs writes every job it finds to a .csv, .json or .jsonl file.
Which boards does the server support?
LinkedIn, Indeed, Glassdoor, ZipRecruiter, Bayt, Naukri, BDJobs and HelloWork. None of them is Russian.
Where do I put a proxy?
In the HTTPS_PROXY variable in the env block of the server configuration, so the proxy credentials never reach the chat with the agent.
Discussion
No questions or reviews yet.
Related
MCP serversHabr Career MCP server
habr-career-mcp
An MCP server for the Habr Career API: filtered vacancy search, full vacancy text, a skills lookup and a local registry of vacancies already reviewed
Linkup MCP server: real-time web search, page fetching and long research tasks with sources for an agent
Hyperbrowser MCP
Hyperbrowser MCP Server
The official MCP server for Hyperbrowser cloud browsers: page scraping and crawling, structured data, Bing search and three browser agents
A unified search MCP server: one interface to Tavily, Brave, Kagi, Exa, Linkup, Firecrawl and GitHub search
Airbnb MCP
mcp-server-airbnb
Airbnb MCP server: an agent searches stays by city, dates, guests and price and opens a listing with its amenities and house rules
MCP server for real-time web search: general and vertical search, batch queries and page content extraction
Comparison with similar tools
Cards that share the main search query, and how they differ.
| Tool | Official | Authentication | Repository stars | Main difference |
|---|---|---|---|---|
| JobSpy MCP (this card) | no | not required | 4,644 | |
| hh-mcp-pro: hh.ru via the Android app's OAuth | no | OAuth | 0 | searches jobs on hh.ru |
| Habr Career MCP server | no | not required | 0 | works with Habr Career |
README in short
The server installs the python-jobspy library with the mcp extra at the same version and runs its mcp-jobspy command. Most of the repository covers the library itself: its command line and search options.