Token导航 LogoToken导航TokenDH.com
研究检索external-serviceclawhub未标认证来源可访问clear审计通过

job-search-mcpJOB 搜索 MCP

Agent Skill

job-search-mcp 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

总安装

106,522

周安装

4,529

GitHub Stars

14

下载量

37,319
OpenClaw

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

MIT-0

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:job-search-mcp(JOB 搜索 MCP)
来源仓库:https://github.com/amoghpurohit/job-search-mcp
安装命令:
openclaw skills install job-search-mcp
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install job-search-mcp

简介

使用 JobSpy MCP 服务器在 LinkedIn、Indeed、Glassdoor、ZipRecruiter、Google Jobs、Bayt、Naukri 和 BDJobs 上搜索职位。

SKILL.md

name
Job Search MCP
description
Search for jobs across LinkedIn, Indeed, Glassdoor, ZipRecruiter, Google Jobs, Bayt, Naukri, and BDJobs using the JobSpy MCP server.
slug
job-search-mcp
tags

Job Search MCP Skill

This skill enables AI agents to search for jobs across multiple job boards using the JobSpy MCP Server. JobSpy aggregates job listings from LinkedIn, Indeed, Glassdoor, ZipRecruiter, Google Jobs, Bayt, Naukri, and BDJobs into a unified interface.

When to Use This Skill

Use this skill when the user asks you to:

  • Find job listings matching specific criteria (role, location, company, etc.)
  • Search for remote or on-site positions
  • Compare job opportunities across different platforms
  • Get salary information for job postings
  • Find recently posted jobs (within X hours)
  • Search for jobs with "Easy Apply" options

Prerequisites

  • Python 3.10+
  • Node.js 16+ (for some server implementations)
  • The JobSpy MCP server installed and configured

Installation & Setup

Option 1: Python MCP Server (Recommended)

# Install with pip
pip install mcp>=1.1.0 python-jobspy>=1.1.82 pandas>=2.1.0 pydantic>=2.0.0

# Or install with uv (faster)
uv add mcp python-jobspy pandas pydantic

Option 2: Clone a Pre-built Server

# Clone the jobspy-mcp-server repository
git clone https://github.com/chinpeerapat/jobspy-mcp-server.git
cd jobspy-mcp-server

# Install dependencies
uv sync
# or
pip install -e .

Claude Desktop Configuration

Add the following to your Claude Desktop config file (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "jobspy": {
      "command": "uv",
      "args": ["run", "jobspy-mcp-server"],
      "env": {}
    }
  }
}

Alternative configuration (Node.js server):

{
  "mcpServers": {
    "jobspy": {
      "command": "node",
      "args": ["/path/to/jobspy-mcp-server/src/index.js"],
      "env": {
        "ENABLE_SSE": "0"
      }
    }
  }
}

MCP Tool Schemas

1. scrape_jobs_tool (Primary Tool)

Search for jobs across multiple job boards with comprehensive filtering.

Parameters:

ParameterTypeRequiredDefaultDescription
search_termstring✅ Yes-Job keywords (e.g., "software engineer", "data scientist")
locationstringNo-Job location (e.g., "San Francisco, CA", "Remote")
site_namearrayNo["indeed", "linkedin", "zip_recruiter", "google"]Job boards to search
results_wantedintegerNo15Number of results (1-1000)
job_typestringNo-Employment type: fulltime, parttime, internship, contract
is_remotebooleanNofalseFilter for remote jobs only
hours_oldintegerNo-Filter by posting recency in hours
distanceintegerNo50Search radius in miles (1-100)
easy_applybooleanNofalseFilter jobs with easy apply option
country_indeedstringNo"usa"Country for Indeed/Glassdoor searches
linkedin_fetch_descriptionbooleanNofalseFetch full LinkedIn descriptions (slower)
offsetintegerNo0Pagination offset
verboseintegerNo1Logging level (0=errors, 1=warnings, 2=all)

Supported Values for site_name:

  • linkedin - Professional networking platform (rate limited)
  • indeed - Largest job search engine (most reliable)
  • glassdoor - Jobs with company reviews and salaries
  • zip_recruiter - Job matching for US/Canada
  • google - Aggregated job listings
  • bayt - Middle East job portal
  • naukri - India's leading job portal
  • bdjobs - Bangladesh job portal

Supported Values for job_type:

  • fulltime
  • parttime
  • internship
  • contract

2. get_supported_countries

Returns the complete list of supported countries for job searches. No parameters required.

3. get_supported_sites

Returns detailed information about all supported job board sites. No parameters required.

4. get_job_search_tips

Returns tips and best practices for effective job searching. No parameters required.


Job Post Response Schema

When jobs are returned, each job post contains the following fields:

interface JobPost {
  // Core fields (all platforms)
  title: string;                    // Job title
  company: string;                  // Company name
  company_url?: string;             // Company website URL
  job_url: string;                  // Direct link to job posting
  location: {
    country?: string;
    city?: string;
    state?: string;
  };
  is_remote: boolean;               // Whether job is remote
  description?: string;             // Job description (markdown format)
  job_type?: "fulltime" | "parttime" | "internship" | "contract";
  
  // Salary information
  salary?: {
    interval?: "yearly" | "monthly" | "weekly" | "daily" | "hourly";
    min_amount?: number;
    max_amount?: number;
    currency?: string;
    salary_source?: "direct_data" | "description";  // Parsed from posting
  };
  
  date_posted?: string;             // ISO date string
  emails?: string[];                // Contact emails if available
  
  // LinkedIn specific
  job_level?: string;               // Seniority level
  
  // LinkedIn & Indeed specific
  company_industry?: string;
  
  // Indeed specific
  company_country?: string;
  company_addresses?: string[];
  company_employees_label?: string;
  company_revenue_label?: string;
  company_description?: string;
  company_logo?: string;
  
  // Naukri specific
  skills?: string[];
  experience_range?: string;
  company_rating?: number;
  company_reviews_count?: number;
  vacancy_count?: number;
  work_from_home_type?: string;
}

Example Prompts → MCP Calls → Outputs

Example 1: Basic Job Search

User Prompt:

"Find me 10 software engineer jobs in San Francisco"

MCP Tool Call:

{
  "tool": "scrape_jobs_tool",
  "params": {
    "search_term": "software engineer",
    "location": "San Francisco, CA",
    "results_wanted": 10,
    "site_name": ["indeed", "linkedin"]
  }
}

Expected Output:

{
  "jobs": [
    {
      "title": "Software Engineer",
      "company": "TechCorp Inc.",
      "location": { "city": "San Francisco", "state": "CA" },
      "job_url": "https://indeed.com/viewjob?jk=abc123",
      "salary": { "min_amount": 120000, "max_amount": 180000, "interval": "yearly" },
      "job_type": "fulltime",
      "is_remote": false
    }
    // ... more jobs
  ],
  "total_found": 10
}

Example 2: Remote Jobs Search

User Prompt:

"Search for remote Python developer positions from Indeed and ZipRecruiter"

MCP Tool Call:

{
  "tool": "scrape_jobs_tool",
  "params": {
    "search_term": "Python developer",
    "location": "Remote",
    "is_remote": true,
    "site_name": ["indeed", "zip_recruiter"],
    "results_wanted": 20
  }
}

Example 3: Recent Jobs with Filters

User Prompt:

"Find data scientist jobs in Boston posted in the last 24 hours"

MCP Tool Call:

{
  "tool": "scrape_jobs_tool",
  "params": {
    "search_term": "data scientist",
    "location": "Boston, MA",
    "hours_old": 24,
    "site_name": ["linkedin", "glassdoor", "indeed"],
    "linkedin_fetch_description": true
  }
}

Example 4: Entry-Level with Easy Apply

User Prompt:

"Look for entry-level marketing jobs in New York with easy apply options"

MCP Tool Call:

{
  "tool": "scrape_jobs_tool",
  "params": {
    "search_term": "junior marketing",
    "location": "New York, NY",
    "job_type": "fulltime",
    "easy_apply": true,
    "site_name": ["indeed", "zip_recruiter"],
    "results_wanted": 30
  }
}

Example 5: International Job Search

User Prompt:

"Find software jobs in Germany on Indeed"

MCP Tool Call:

{
  "tool": "scrape_jobs_tool",
  "params": {
    "search_term": "software developer",
    "location": "Berlin",
    "country_indeed": "germany",
    "site_name": ["indeed"],
    "results_wanted": 15
  }
}

Example 6: Getting Helper Information

User Prompt:

"What job sites are supported?"

MCP Tool Call:

{
  "tool": "get_supported_sites",
  "params": {}
}

Expected Output:

{
  "sites": [
    { "name": "indeed", "description": "Largest job search engine, most reliable" },
    { "name": "linkedin", "description": "Professional networking platform, rate limited" },
    { "name": "glassdoor", "description": "Jobs with company reviews and salaries" },
    { "name": "zip_recruiter", "description": "Job matching for US/Canada" },
    { "name": "google", "description": "Aggregated job listings" },
    { "name": "bayt", "description": "Middle East job portal" },
    { "name": "naukri", "description": "India's leading job portal" },
    { "name": "bdjobs", "description": "Bangladesh job portal" }
  ]
}

Error Handling Examples

Error 1: Rate Limiting

Scenario: LinkedIn returns a rate limit error.

Error Response:

{
  "error": "RateLimitError",
  "message": "LinkedIn rate limit exceeded. Try again later or use different sites.",
  "suggestion": "Switch to Indeed or ZipRecruiter which have more lenient rate limits."
}

How to Handle:

  • Reduce results_wanted to a smaller number (10-15)
  • Remove linkedin from site_name temporarily
  • Add delays between searches
  • Use proxy configuration if available

Error 2: No Results Found

Scenario: Search returns empty results.

Error Response:

{
  "jobs": [],
  "total_found": 0,
  "message": "No jobs found matching your criteria"
}

How to Handle:

  • Broaden search terms (e.g., "engineer" instead of "senior principal software engineer")
  • Increase distance radius
  • Remove restrictive filters like hours_old or job_type
  • Try different site_name options
  • Check if location spelling is correct

Error 3: Invalid Country Code

Scenario: User specifies an unsupported country for Indeed.

Error Response:

{
  "error": "ValidationError",
  "message": "Invalid country_indeed value. Use get_supported_countries to see valid options."
}

How to Handle:

  • Call get_supported_countries to get valid country codes
  • Use the exact country name (e.g., "usa" not "US", "united kingdom" not "UK")

Error 4: Platform-Specific Limitation Conflict

Scenario: User tries to use conflicting filters.

Known Limitations:

  • Indeed: Only ONE of these can be used: hours_old, job_type & is_remote, easy_apply
  • LinkedIn: Only ONE of these can be used: hours_old, easy_apply

How to Handle:

  • Inform user of the limitation
  • Prioritize the most important filter
  • Run separate searches if multiple filters are needed

Anti-Patterns (What NOT to Do)

❌ DO NOT: Request Excessive Results

// BAD - Will likely timeout or get rate limited
{
  "search_term": "engineer",
  "results_wanted": 1000,
  "site_name": ["linkedin", "indeed", "glassdoor", "zip_recruiter", "google"]
}

Why: Requesting too many results from too many sites simultaneously will trigger rate limits and cause timeouts.

✅ DO INSTEAD:

{
  "search_term": "software engineer",
  "results_wanted": 20,
  "site_name": ["indeed", "linkedin"]
}

❌ DO NOT: Use LinkedIn Extensively

// BAD - LinkedIn is heavily rate limited
{
  "search_term": "developer",
  "site_name": ["linkedin"],
  "results_wanted": 100,
  "linkedin_fetch_description": true
}

Why: LinkedIn has the strictest rate limits. Using linkedin_fetch_description: true multiplies requests.

✅ DO INSTEAD:

  • Use Indeed as primary source
  • Limit LinkedIn to 10-15 results
  • Only enable linkedin_fetch_description when specifically needed

❌ DO NOT: Use Conflicting Filters

// BAD - Indeed limitation: only one filter group allowed
{
  "search_term": "developer",
  "site_name": ["indeed"],
  "hours_old": 24,
  "job_type": "fulltime",
  "is_remote": true
}

Why: Indeed only supports one of: hours_old, job_type & is_remote, or easy_apply.

✅ DO INSTEAD:

// Either filter by recency
{
  "search_term": "developer",
  "site_name": ["indeed"],
  "hours_old": 24
}

// OR filter by job type
{
  "search_term": "developer",
  "site_name": ["indeed"],
  "job_type": "fulltime",
  "is_remote": true
}

❌ DO NOT: Make Vague Searches Without Context

// BAD - Too generic, will return irrelevant results
{
  "search_term": "job"
}

Why: Vague searches return poor quality results and waste API calls.

✅ DO INSTEAD:

  • Always include specific job titles or skills
  • Include location when known
  • Use filters to narrow results

❌ DO NOT: Ignore Error Responses

Why: Rate limits, network issues, and invalid parameters require appropriate handling.

✅ DO INSTEAD:

  • Check for error responses before processing results
  • Implement retry logic with backoff for rate limits
  • Provide helpful messages to users when searches fail

❌ DO NOT: Use Wrong Country Codes

// BAD - Wrong country code format
{
  "search_term": "developer",
  "country_indeed": "UK"  // Wrong! Use "united kingdom"
}

✅ DO INSTEAD:

  • Use get_supported_countries to verify valid country codes
  • Common codes: "usa", "united kingdom", "canada", "germany", "india"

Rate Limiting & Best Practices

Platform Reliability Ranking

  1. Indeed - Most reliable, good for large searches
  2. ZipRecruiter - Reliable for US/Canada
  3. Google Jobs - Good aggregation, stable
  4. Glassdoor - Reliable with company insights
  5. LinkedIn - Most restrictive, use sparingly

Recommended Approach

  1. Start Small: Begin with 10-15 results to test filters
  2. Use Indeed First: Most reliable for job data
  3. Be Specific: Use targeted search terms
  4. Filter Wisely: Use one filter group at a time for Indeed/LinkedIn
  5. Paginate: Use offset for getting more results instead of high results_wanted

Supported Countries

Call get_supported_countries for the complete list. Common countries include:

CountryCode for country_indeed
USAusa
United Kingdomunited kingdom
Canadacanada
Germanygermany
Francefrance
Indiaindia
Australiaaustralia
Singaporesingapore
Japanjapan
Netherlandsnetherlands

Troubleshooting

"Browser/Chromium not installed"

Run: playwright install chromium (some scrapers use Playwright)

"No module named 'jobspy'"

Run: pip install python-jobspy>=1.1.82

"Rate limit exceeded"

  • Reduce results_wanted
  • Remove LinkedIn from site_name
  • Wait 60 seconds before retrying
  • Consider using a proxy

Quick Reference

User IntentKey Parameters
Find jobs in a specific citysearch_term, location
Remote jobs onlyis_remote: true
Recent postingshours_old: 24 (or 48, 72)
Full-time onlyjob_type: "fulltime"
Quick apply jobseasy_apply: true
Search specific platformsite_name: ["indeed"]
International searchcountry_indeed: "germany"
More resultsresults_wanted: 25
Paginate resultsoffset: 25 (after first 25)

适合场景

01

OpenClaw 用户查找和安装 Skill 时

02

用户想查找某类 Agent Skill 时

03

需要根据任务场景推荐可安装能力包时

04

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

补充不同宿主或平台的使用分布数据

能力 5

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

OpenClaw

78.26%
按下载量换算29,206

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

未展示

权限和风险

external-service

该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills