Indeed MCP Server
Indeed MCP Server
Claude, Cursor, Windsurf 및 기타 모든 MCP 클라이언트에 두 개의 읽기 전용 Indeed 도구를 제공하는 호스팅형 Model Context Protocol(MCP) 서버입니다. 키워드와 위치로 채용 공고를 검색하고 단일 공고를 전체 내용으로 읽을 수 있으며, 모든 결과는 구조화된 JSON으로 제공됩니다. Indeed 개발자 계정이나 파트너 승인은 필요 없습니다.
로그아웃한 방문자도 볼 수 있는 공개 채용 공고를 읽습니다.
https://mcp.hasdata.com/api/mcp?apis=indeed
목차
Related MCP server: Indeed Skills
필요한 것
MCP 클라이언트와 대시보드에서 발급받은 HasData API 키가 필요합니다. 키 생성은 무료이며 카드가 필요 없고, 평가판은 5크레딧 요율로 약 200회 호출을 포함합니다. 이 서버는 원격 서버이므로 가장 간단한 방법은 URL과 x-api-key 헤더를 사용하는 것이며, 실행할 컨테이너도, 전체 흐름에 Indeed 개발자 계정도 필요 없습니다. stdio만 지원하는 클라이언트는 가벼운 런처를 통해 이 서버에 연결합니다. 이 런처는 npm에 @hasdata/indeed-mcp로, PyPI에 hasdata-indeed-mcp로 게시되어 있으며, 아래에서 확인할 수 있습니다.
빠른 시작
서버 URL은 모든 클라이언트에서 동일합니다. Claude Code와 Claude Desktop에서 직접 실행해 보았습니다. 나머지 블록은 각 클라이언트가 원격 서버용으로 문서화한 형식을 따릅니다.
필드 | 값 |
URL |
|
전송 방식 | HTTP, streamable |
인증 헤더 |
|
OAuth를 지원하는 클라이언트는 동일한 URL을 커넥터로 추가하고 로그인할 수 있어, 구성 파일에 키를 넣을 필요가 없습니다.
claude mcp add --transport http indeed "https://mcp.hasdata.com/api/mcp?apis=indeed" \
--header "x-api-key: HASDATA_API_KEY"설정, 그다음 커넥터, 그다음 사용자 지정 커넥터 추가를 차례로 선택한 다음 https://mcp.hasdata.com/api/mcp?apis=indeed를 붙여넣고 로그인합니다.
구성 파일 방식의 경우, Claude Desktop은 로컬(stdio) 서버만 로드하므로 원격 서버에는 stdio 런처를 통해 연결합니다. @hasdata/indeed-mcp 패키지가 바로 그 런처이며, 환경 변수에서 키를 읽습니다. claude_desktop_config.json에 다음을 추가하세요:
{
"mcpServers": {
"indeed": {
"command": "npx",
"args": ["-y", "@hasdata/indeed-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}Node 대신 Python을 사용한다면 런처 대신 PyPI 패키지로 바꾸세요. uvx가 수동 설치 없이 실행합니다:
{
"mcpServers": {
"indeed": {
"command": "uvx",
"args": ["hasdata-indeed-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}모든 프로젝트에 적용하려면 ~/.cursor/mcp.json에, 단일 프로젝트에만 적용하려면 .cursor/mcp.json에 둡니다:
{
"mcpServers": {
"indeed": {
"url": "https://mcp.hasdata.com/api/mcp?apis=indeed",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}~/.codeium/windsurf/mcp_config.json 경로에 둡니다. Windsurf는 필드 이름이 url이 아니라 serverUrl입니다:
{
"mcpServers": {
"indeed": {
"serverUrl": "https://mcp.hasdata.com/api/mcp?apis=indeed",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}작업 영역의 .vscode/mcp.json에 둡니다:
{
"servers": {
"indeed": {
"type": "http",
"url": "https://mcp.hasdata.com/api/mcp?apis=indeed",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}예시 프롬프트
코드가 아닌 프롬프트입니다. 하나를 붙여넣으면 에이전트가 도구를 스스로 선택합니다. 각 프롬프트에는 필요한 호출 횟수가 표시되어 있습니다. 성공적인 호출마다 5크레딧이 들기 때문입니다.
Indeed에서 뉴욕의 "python developer" 채용 공고를 날짜순으로 검색하고, 회사와 급여와 함께 가장 최근 10개를 알려줘.
호출 1회, 5크레딧. 목록 페이지에는 회사, 급여, 게시 날짜가 이미 포함되어 있습니다.
그 검색 결과에서 첫 번째 공고를 가져와 전체 설명과 요구 사항을 추출해 줘.
호출 1회, 5크레딧. 목록에 포함된 채용 URL을 상세 도구가 직접 사용합니다.
오스틴에서 "data analyst" 채용 공고를 찾고, 급여가 명시된 세 개 공고의 전체 상세 정보를 가져와 줘.
호출 4회, 20크레딧. 목록 1회, 그 후 세 개 각각에 대해 상세 호출 1회씩입니다.
시카고에 게시된 "registered nurse" 급여를 휴스턴과 비교해 줘.
호출 2회, 10크레딧. 도시마다 목록 1회씩입니다.
급여는 공고에 명시된 경우에만 목록에 포함됩니다. 따라서 "급여 포함 채용" 프롬프트는 급여가 있다고 가정하지 않고 해당 필드로 필터링합니다. 페이지 이동은 start 오프셋을 통해 매번 호출 1회가 소요됩니다.
도구
두 개의 읽기 전용 도구입니다. 아래 샘플은 실제 호출 결과에서 일부를 발췌한 것이며, 수치는 Indeed가 업데이트됨에 따라 달라집니다. 형태를 참고하세요. 각 도구 이름은 전체 필드 목록이 포함된 엔드포인트 문서로 연결됩니다.
샘플은 페이로드이지 전체 응답이 아닙니다. tools/call 결과에는 텍스트 블록 하나가 포함되고, 그 텍스트 자체가 url, status, text, json을 담은 JSON이며, 스크레이핑된 데이터는 json 아래에 있습니다. 원시 JSON-RPC 응답에서는 result.content[0].text 경로를 파싱한 다음 .json을 읽습니다. 채팅 클라이언트는 이를 자동으로 풀어 주지만, 엔드포인트에 직접 통신하는 코드는 직접 처리해야 합니다.
Indeed 채용 목록 가져오기
hasdata_indeed_listing_getJobListings
키워드와 위치로 검색한 결과 페이지입니다.
파라미터 | 타입 | 필수 | 설명 |
| string | 예 | 지원자가 입력할 방식의 검색어 |
| string | 예 | 도시와 주, 또는 Indeed가 인식하는 임의의 위치 문자열 |
| string | 기본값은 | |
| string |
| |
| number | 다음 페이지의 결과 오프셋으로, URL이 아닌 숫자입니다. 이전 응답의 |
searchInformation, jobs 배열, peopleAlsoSearchFor, 그리고 다음 페이지의 URL인 nextPage를 가진 pagination을 반환합니다. 각 공고에는 title, company, location, url, 짧은 description, sponsored, 상대 날짜 date와 절대 날짜 isoDate, Full-time, Hybrid work 같은 레이블로 구성된 details 배열, benefits 배열, 그리고 공고에 급여가 명시된 경우 salary 객체가 포함됩니다.
목록에서
details는 일반 문자열 배열입니다. 아래의 채용 상세 도구는details를jobType및workSetting배열을 가진 객체로 반환합니다. 이름은 같지만 형태가 다르므로 각 도구의 형식에 맞게 읽으세요.
{
"title": "Hedge Fund Application Developer",
"company": "TBA",
"location": "Stamford, CT 06901",
"url": "https://www.indeed.com/pagead/clk?...",
"sponsored": true,
"date": "30+ days ago",
"isoDate": "2025-06-03T17:22:54.869Z",
"details": ["Full-time", "Hybrid work"],
"benefits": ["Health insurance", "401(k)", "401(k) matching"],
"salary": { "min": 80000, "max": 150000, "type": "YEARLY" }
}Indeed 채용 상세 정보 가져오기
hasdata_indeed_job_getJobDetails
채용 URL 하나로 공고 하나를 전체 내용으로 가져옵니다.
파라미터 | 타입 | 필수 | 설명 |
| string | 예 | 공고 URL. 목록 결과의 |
title, company, location, sponsored, jobType 및 workSetting 배열을 가진 details 객체, 급여가 있을 때의 salary 객체, 그리고 공고 본문을 description(일반 텍스트)과 descriptionHtml(목록과 문단 마크업이 유지된 동일한 콘텐츠) 두 형태로 반환합니다. 구조가 필요하면 descriptionHtml을, 모델에 깨끗한 텍스트를 넣고 싶다면 description을 사용하세요.
{
"title": "Python Developer",
"company": "Think IT Technologies",
"location": "New York, NY 10114",
"sponsored": false,
"details": { "jobType": ["Contract"], "workSetting": ["In-person"] },
"salary": { "min": 60.5, "max": 65, "type": "HOURLY" },
"description": "Overview\nWe are seeking a Python Developer...",
"descriptionHtml": "<p><b>Overview</b></p><p>We are seeking a Python Developer...</p>"
}오류 및 실패 경로
도구 호출에서 클라이언트가 HTTP 오류 코드를 보는 경우는 거의 없습니다. MCP 레이어는 200으로 응답하고 실패 내용을 결과 안에 넣으며, isError는 true로, 사유는 텍스트로 제공합니다. 에이전트는 상태 줄이 있을 법한 위치에서 메시지를 읽습니다.
잘못된 키는 연결 실패가 아니라 도구 출력으로 드러납니다. tools/list는 비어 있지 않은 키를 모두 받아들이고 두 도구를 반환하므로, 클라이언트는 핸드셰이크를 완료하고 정상 상태를 표시합니다. 그러다 첫 번째 도구 호출에서 isError: true와 HasData API error: 401 Unauthorized 텍스트가 돌아옵니다. 흐름 중 그 이전에는 어떤 것도 문제를 알려 주지 않으므로 이 문자열을 주의하세요.
키가 없는 경우만 실제 HTTP 오류입니다. 인증은 모든 도구보다 먼저 실행되며, 연결 자체가 401로 실패합니다. CORS 헤더가 포함되어 있으므로 브라우저 클라이언트는 불투명한 네트워크 실패가 아닌 상태 코드를 읽습니다.
도구 스키마에 어긋나는 인수는 스크레이핑으로 이어지기 전에 거부됩니다. 서버는 isError: true와 MCP error -32602: Input validation error 텍스트로 응답하며, 문제가 되는 필드를 지목합니다. 아무것도 가져오지 않으며 요금도 부과되지 않습니다.
일치하는 결과가 없는 검색은 오류가 아니라 빈 jobs 배열이 담긴 성공 결과를 반환합니다. 채용 공고가 없는 키워드·위치 조합도 requestMetadata.status가 ok로 설정된 채 돌아옵니다. 반복하기 전에 배열 길이를 확인하세요.
내려간 공고는 400을 반환하며 requestMetadata.status는 error로 설정됩니다. Indeed는 목록을 빠르게 만료시키므로 오래된 검색의 URL은 사라질 수 있습니다.
데이터가 담긴 결과에는 지원 문의에서 인용할 만한 requestMetadata.id도 포함됩니다.
요금, 무료 등급 및 한도
각 Indeed 도구는 성공적인 호출당 5크레딧이 소요됩니다. 응답 크기에 따라 요금이 달라지지 않습니다. 채용 공고 50개가 있는 목록 페이지도 2개뿐인 페이지와 비용이 같습니다.
무료 평가판은 카드 없이 30일간 1,000크레딧으로, Indeed 호출 200회에 해당합니다. 이후 활성 계정은 잔액이 100 미만으로 내려갈 때마다 매일 100크레딧이 충전되므로, 사용량이 적은 에이전트는 무료 등급으로 무기한 실행됩니다.
유료 요금제는 200,000크레딧(40,000회 호출)에 월 $49부터 시작합니다. 단가는 볼륨이 커질수록 낮아져서, 엔트리 요금제의 1,000회 호출당 $1.23에서 Business $0.50, Growth $0.42, 그리고 가장 큰 대용량 요금제의 $0.37까지입니다.
요금제는 동시 실행 수도 결정합니다. 무료 평가판은 한 번에 1개 요청, Startup 15개, Business 30개, Growth 50개를 허용하며, 대용량 요금제는 200~1,500개를 지원합니다. 무인으로 실행되는 환경에서는 오버플로 상황을 방어적으로 처리하세요.
200이 아닌 상태로 돌아온 요청은 청구되지 않습니다. 결과를 찾지 못한 성공적인 호출도 여전히 호출입니다.
도구 선택
apis 쿼리 파라미터는 에이전트에 표시되는 도구를 결정합니다. 도구가 적을수록 도구 정의에 쓰이는 컨텍스트가 줄고, 모델이 잘못된 도구를 선택할 가능성도 줄어듭니다.
?apis=indeed the two tools in this repo
?apis=indeed,glassdoor add Glassdoor jobs
?apis=indeed,google_serp add Google search이 파라미터는 indeed 같은 제공자 이름과 indeed_listing 같은 개별 API 이름을 받습니다. 철자가 틀린 이름은 무시됩니다. 모든 이름이 틀리면 요청이 400으로 실패하며, 본문에는 인식하지 못한 이름과 모든 유효한 값이 함께 나열됩니다. 파라미터를 생략하면 동일한 엔드포인트가 57개의 HasData 도구를 모두 노출합니다.
비교
Indeed는 공개 Publisher 및 Job Search API를 중단했으며, 프로그래밍 방식의 접근은 이제 셀프 서비스 키가 아닌 승인된 파트너십과 ATS 통합을 통해 이루어집니다. 임의의 검색에서 공개 목록과 채용 공고를 읽을 수 있는 공식적으로 개방된 경로는 없습니다.
공식 Indeed 접근 | 이 서버 | |
접근 | 파트너 또는 ATS 승인 | 키 하나와 URL 하나 |
범위 | 파트너십이 허용하는 범위 | 모든 공개 검색 또는 채용 공고 |
설정 | 비즈니스 심사 | 없음 |
출력 | 통합 방식에 따라 다름 | 구조화된 JSON, 급여 사전 파싱 |
쓰기 | 승인된 파트너를 위한 지원 흐름 | 읽기 전용, 공개 데이터만 |
이 서버가 하지 않는 일. 지원서 제출, 고용주 대시보드, 후보자 데이터, 비공개 채용 공고는 없습니다. 로그아웃한 방문자가 볼 수 있는 것만 읽습니다.
FAQ
공식 Indeed MCP 서버가 있나요?
Indeed는 공식 서버를 제공하지 않습니다. 이 서버는 HasData가 유지 관리하며 공개 페이지를 읽으므로 Indeed 개발자 계정이 필요 없습니다.
Indeed MCP 서버란 무엇인가요?
Indeed 채용 데이터를 AI 클라이언트가 호출할 수 있는 도구로 노출하는 서버입니다. 클라이언트는 Model Context Protocol을 통해 도구 호출을 보내고, 서버는 데이터를 가져와 구조화된 JSON을 반환하며, 모델은 그 결과를 가지고 작업합니다. 이 서버는 두 가지 도구를 노출하며 원격으로 실행됩니다.
Indeed API 키나 파트너 계정이 필요한가요?
아니요. 유일한 자격 증명은 HasData 키입니다. 신청할 Publisher 계정은 없습니다. 도구가 공개 Indeed 페이지를 읽기 때문입니다.
결과가 한 화면 이상일 때 페이지를 어떻게 넘기나요?
목록 도구에 start 오프셋을 URL이 아닌 숫자로 전달하세요. 응답은 pagination.nextPage를 반환하며, 여기에 포함된 start 값이 다음 페이지의 오프셋이므로 URL을 넣지 말고 그 숫자를 읽어 다시 전달하세요.
급여가 때때로 누락되는 이유는 무엇인가요?
채용 공고에 급여가 명시되어 있지 않기 때문입니다. salary 객체는 Indeed가 금액을 표시할 때만 존재합니다. 값이 없을 수 있으니 방어적으로 처리하세요.
다른 HasData API와 함께 사용할 수 있나요?
네. apis 매개변수는 목록을 받으며, ?apis=indeed,glassdoor는 에이전트에게 Indeed와 Glassdoor를 함께 제공합니다. 매개변수를 빼면 모든 것을 얻을 수 있습니다.
규정 준수 및 개인 데이터
HasData는 공개적으로 이용 가능한 데이터에만 접근합니다. 플랫폼의 이용 약관이 자동 접근을 제한할 수 있으며, 규정 준수에 대한 책임은 사용자에게 있습니다. 수집하는 데이터에 개인 정보가 포함된 경우 GDPR, CCPA 또는 해당 관할 구역의 동등한 규정에 따라 법적 근거를 확보해야 합니다.
HasData 링크
제품 페이지 및 요청 빌더 | |
서버 문서 | |
하나의 서버에 담긴 57개 도구 전체 | |
클라이언트 둘러보기 | |
그 외 우리가 스크레이핑하는 모든 것 | |
요금제 및 크레딧 비용 | |
키 및 사용량 | |
npm의 Node 런처 | |
PyPI의 Python 런처 |
개발
이 저장소는 원격 서버의 구성과 문서입니다. 빌드 단계가 없고 컨테이너화할 것도 없습니다.
test/의 테스트는 도구 계약, 즉 이 저장소에 커밋이 없어도 깨질 수 있는 부분을 검증합니다. 테스트는 ?apis=indeed가 정확히 두 개의 도구를 반환하는지, 모든 도구가 여전히 필수 매개변수를 선언하는지, 어떤 이름도 변경되지 않았는지, 사용 중인 키가 실제로 승인되는지 확인합니다. 마지막 검사는 실제로 도구를 호출하며 5크레딧이 듭니다. 올바른 이유로 실패할 수 있는 카나리아에게 치르는 비용입니다.
# macOS and Linux
HASDATA_API_KEY=your_key_here npm test
# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test동일한 스위트는 모든 푸시마다, 그리고 예약에 따라 주 1회 CI에서 실행됩니다. 아무도 이 저장소를 건드리지 않아도 업스트림 도구 목록이 변경될 수 있기 때문입니다. 실패는 도구 목록이 변경되었거나, 키가 작동을 멈췄거나, 엔드포인트에 연결할 수 없음을 의미하며, 검증 메시지가 어떤 경우인지 알려줍니다.
기여
도구 표와 응답 샘플에 대한 수정이 가장 유용한 기여입니다. 변하기 쉬운 부분이기 때문입니다. 수행한 호출과 받은 응답을 포함하세요. 포크에서 온 풀 리퀘스트는 키 없이 스위트를 실행하며, 라이브 검사는 실패로 표시되는 대신 건너뜁니다.
라이선스
MIT. LICENSE를 참조하세요.
Available Tools
2 toolshasdata_indeed_job_getJobDetailsindeed_job: GET /AInspect
Get Indeed Job Details
Fetches a single Indeed job posting by its viewjob URL. Returns job title, company, location, salary/compensation, employment type, posted date, full description, requirements/benefits, and apply URL. Use for ATS/CRM enrichment, compensation benchmarking, resume-to-JD matching with LLMs, and structured archival of postings discovered via the Indeed Listing endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The URL of the job vacancy to retrieve details for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It states what is returned but does not mention side effects, error handling, rate limits, or any read-only guarantees. The 'Fetches' wording implies a safe GET, but transparency is limited.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first states the core function, second lists return fields and use cases. It is concise, well-structured, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (one parameter, no output schema), the description fully covers what the tool does, what it returns, and when to use it. The relationship to the listing sibling is clarified, and no critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter 'url' is clearly described in the schema as 'The URL of the job vacancy to retrieve details for.' The tool description reinforces this with 'viewjob URL,' leaving no ambiguity about what input is expected.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it fetches a single Indeed job posting by viewjob URL, lists the returned fields, and distinguishes itself from the listing sibling by focusing on a single posting. The verb 'Fetches' and resource 'Indeed job posting' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit use cases (ATS/CRM enrichment, compensation benchmarking, resume-to-JD matching, structured archival) and references the Indeed Listing endpoint as the discovery source, implying this tool is for postings already found. Does not explicitly contrast with Glassdoor job details, but the context is sufficient for most agents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hasdata_indeed_listing_getJobListingsindeed_listing: GET /AInspect
Get Indeed Job Listings
Searches Indeed job listings by keyword and location with sort (relevance/date), country domain targeting, and offset-based pagination (start). Returns an array of jobs with title, company, location, salary, posted date, job URL, and jobKey for the requested page. Use for job-market dashboards, role/geo hiring-trend analysis, sourcing pipelines, and generating URL lists to feed into the Indeed Job endpoint.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | The sorting option for the search results. | |
| start | No | The starting index of the results to retrieve (optional). | |
| domain | No | The domain of the Indeed site (optional). Provide one exact documented value (62 allowed), e.g. `ar.indeed.com`, `au.indeed.com`. | |
| keyword | Yes | The keyword used to search for job listings. | |
| location | Yes | The location to search for job listings. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It implies a read-only search operation (GET) but does not explicitly state side effects, rate limits, or authentication requirements. The behavior is mostly transparent but lacks explicit safety language.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and readable but contains slight redundancy, repeating the search criteria and return format in consecutive sentences. It remains concise and to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Since there is no output schema, the description adequately explains the return format (array of jobs with listed fields). It also covers pagination and domain selection, giving sufficient context for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All five parameters have descriptions, covering required and optional fields. The description adds context by explaining sort options, domain examples, and offset-based pagination, which goes beyond the schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool retrieves Indeed job listings by keyword and location, with sorting and pagination options. It also distinguishes from the sibling tool by mentioning generating URL lists for the Indeed Job endpoint, implying a listing vs. detail perspective.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit use cases such as job-market dashboards, hiring-trend analysis, and sourcing pipelines. It doesn't explicitly contrast with the sibling tool, but the intended scenarios are clear enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v1.0.0- First observed
hasdata_indeed_job_getJobDetails - First observed
hasdata_indeed_listing_getJobListings
TDQS
Scored across 2 tools
The two tools have clearly distinct roles: one searches/fetchs the listing index while the other fetches full details for a specific job. There is no meaningful overlap or ambiguity in selecting between them.
Both tool names follow the same hasdata_indeed_<resource>_get<Action> pattern, with consistent snake_case prefixing and camelCase action suffixes. The naming is predictable and coherent across the set.
Two tools is on the low end for an MCP server, though the pair covers the essential list-and-detail retrieval flow for Indeed job data. The server feels minimal but not unreasonable for its focused purpose.
The server provides the core job-search workflow: get listings, then fetch details for a chosen URL. Minor gaps exist, such as no direct fetch by jobKey and no batch/company-level tools, but agents can accomplish the primary intended use case without dead ends.
Maintenance
Related MCP Connectors
Search job postings across Indeed, LinkedIn, and more from one request - titles, companies
DISCONTINUED 2026-05-23. Indeed.com Cloudflare + DataDome anti-bot returns HTTP 403 on all scraping
Hibrit iş ilanı arama MCP sunucusu — anahtarsız resmî ATS board API'leri (Greenhouse, Lever,…
Job search for Switzerland. Searches current listings on funkyjobs.ch by keyword, place with radius, workload, category and publishing date, and fetches a single listing with employer, location, workload and salary where stated. Read-only, no account needed. Docs: https://www.funkyjobs.ch/mcp-connector
Related MCP Servers
AlicenseAqualityAmaintenanceDirect access to 40+ scraping and search tools. Extract structured data from Google (Search, Maps, Trends), Amazon, Airbnb, Social Media, and any web page directly into your AI agent.6320MIT- AlicenseNot gradedqualityDmaintenanceLive Indeed job-postings data for AI agents via the RolesAPI REST API: search listings by keyword and location, and fetch role details, salary, description, company, and benefits. Available as drop-in agent skills or a hosted remote MCP server.1MIT No Attribution
- FlicenseNot gradedqualityBmaintenanceEnables searching real job listings from multiple job boards (Indeed, LinkedIn, Glassdoor, Google Jobs, etc.) through a single MCP tool, designed for use as a custom connector in Claude Cowork.-
- FlicenseNot gradedqualityDmaintenanceEnables searching and fetching HiringCafe job listings through MCP, using public HTML pages without authentication or browser automation.60 npm-