
An MCP (Model Context Protocol) server that scrapes live job postings from LinkedIn, Indeed, Glassdoor, ZipRecruiter, Google Jobs, Bayt, Naukri, and BDJobs using python-jobspy. Built on FastMCP 3.
概览
An MCP (Model Context Protocol) server that scrapes live job postings from LinkedIn, Indeed, Glassdoor, ZipRecruiter, Google Jobs, Bayt, Naukri, and BDJobs using python-jobspy. Built on FastMCP 3.x against the current MCP spec (2025-11-25). Job boards aggressively block datacenter IPs, and JobSpy depends on tls-client (a native binary). Running the server on your own machine over stdio gives the best scrape success rate. Streamable HTTP mode is available behind a flag if you want to host it (bring your own proxies). Download jobspy-mcp-server.mcpb (rolling build from main) and open it with Claude Desktop, or drag the file onto the app. Versioned files live on Releases. The host's UV runtime installs Python and dependencies on first launch — you do not need a local Python toolchain. Optional install-time settings: proxies and a CA certificate bundle (for proxied HTTPS). See PRIVACY.md. CI packs and publishes the bundle on every push to main.
README
以下为原文 README 节选,完整内容请查看原文。
JobSpy MCP Server
An MCP (Model Context Protocol) server that scrapes live job postings from LinkedIn, Indeed, Glassdoor, ZipRecruiter, Google Jobs, Bayt, Naukri, and BDJobs using python-jobspy. Built on FastMCP 3.x against the current MCP spec (2025-11-25).
Why local?
Job boards aggressively block datacenter IPs, and JobSpy depends on tls-client (a native binary). Running the server on your own machine over stdio gives the best scrape success rate. Streamable HTTP mode is available behind a flag if you want to host it (bring your own proxies).
Installation
Claude Desktop (MCPB, one-click)
Download jobspy-mcp-server.mcpb (rolling build from main) and open it with Claude Desktop, or drag the file onto the app. Versioned files live on Releases. The host’s UV runtime installs Python and dependencies on first launch — you do not need a local Python toolchain.
Optional install-time settings: proxies and a CA certificate bundle (for proxied HTTPS). See PRIVACY.md.
CI packs and publishes the bundle on every push to main. To pack locally:
bash scripts/build-mcpb.sh
# → dist/jobspy-mcp-server-.mcpb
# → dist/jobspy-mcp-server.mcpb
From source (stdio)
Requires Python 3.10+ and uv.
git clone && cd jobspy-mcp-server
uv sync
Note: python-jobspy is pinned to a GitHub commit ahead of the PyPI release (which is missing LinkedIn/Naukri fixes), so git must be on your PATH during install.
Usage
Claude Desktop (manual stdio)
If you are not using the MCPB, add this to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%/Claude/claude_desktop_config.json (Windows):
{
"mcpServers": {
"jobspy": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/jobspy-mcp-server", "jobspy-mcp-server"]
}
}
}
Tip: Claude Desktop launches with a limited PATH that usually excludes ~/.local/bin, so you may need the absolute path to uv (e.g. /Users/you/.local/bin/uv) in command. (Thanks to @VennieSo in #1.)
Cursor / other MCP clients
Any stdio-capable client works with the same command:
uv run --directory /absolute/path/to/jobspy-mcp-server jobspy-mcp-server
HTTP mode (optional)
uv run jobspy-mcp-server --http --port 8000
# MCP endpoint: http://127.0.0.1:8000/mcp
Set JOBSPY_HTTP_TOKEN to require a bearer token; without it the endpoint is unauthenticated and should stay on localhost.
--stateless (HTTP only, opt-in)
安装
npx @modelcontextprotocol/inspector uv run jobspy-mcp-server # interactive testing配置
{
"mcpServers": {
"jobspy": {
"command": "uv",
"args": ["run", "--directory", "/absolute/path/to/jobspy-mcp-server", "jobspy-mcp-server"]
}
}
}