Indeed MCP Server
Indeed MCP Server
Ein gehosteter MCP-Server (Model Context Protocol), der Claude, Cursor, Windsurf und jedem anderen MCP-Client zwei schreibgeschützte Indeed-Tools bereitstellt. Suchen Sie Stellenanzeigen nach Stichwort und Ort und lesen Sie eine einzelne Anzeige vollständig – alles als strukturiertes JSON, ohne Indeed-Entwicklerkonto und ohne Partnerfreigabe.
Er liest öffentliche Stellenanzeigen, die ein nicht angemeldeter Besucher sehen kann.
https://mcp.hasdata.com/api/mcp?apis=indeed
Inhalt
Related MCP server: JobDataLake MCP Server
Was Sie brauchen
Ein MCP-Client und ein HasData-API-Schlüssel vom Dashboard, kostenlos und ohne Karte erstellbar; die Testversion deckt etwa 200 Aufrufe zum 5-Credit-Tarif ab. Dies ist ein Remote-Server, daher ist der einfachste Weg eine URL und ein x-api-key-Header – ohne Container, den Sie ausführen müssen, und ohne Indeed-Entwicklerkonto im gesamten Ablauf. Ein Client, der nur stdio spricht, erreicht ihn über einen schlanken Launcher, der als @hasdata/indeed-mcp auf npm und hasdata-indeed-mcp auf PyPI veröffentlicht ist, wie unten gezeigt.
Schnellstart
Die Server-URL ist für jeden Client dieselbe. Wir haben sie in Claude Code und Claude Desktop praktisch ausprobiert. Die anderen Blöcke folgen dem jeweils dokumentierten Format der Clients für einen Remote-Server.
Feld | Wert |
URL |
|
Transport | HTTP, streamable |
Auth-Header |
|
Clients mit OAuth-Unterstützung können dieselbe URL als Connector hinzufügen und sich anmelden, ohne einen Schlüssel in eine Konfigurationsdatei einzutragen.
claude mcp add --transport http indeed "https://mcp.hasdata.com/api/mcp?apis=indeed" \
--header "x-api-key: HASDATA_API_KEY"Einstellungen, dann Connectors, dann Add custom connector, dann https://mcp.hasdata.com/api/mcp?apis=indeed einfügen und anmelden.
Für den Weg über die Konfigurationsdatei lädt Claude Desktop nur lokale (stdio) Server, daher erreicht es einen Remote-Server über einen stdio-Launcher. Das Paket @hasdata/indeed-mcp ist dieser Launcher und liest den Schlüssel aus der Umgebung. Fügen Sie dies zu claude_desktop_config.json hinzu:
{
"mcpServers": {
"indeed": {
"command": "npx",
"args": ["-y", "@hasdata/indeed-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}Für Python statt Node tauschen Sie den Launcher gegen das PyPI-Paket, das uvx ohne manuelle Installation ausführt:
{
"mcpServers": {
"indeed": {
"command": "uvx",
"args": ["hasdata-indeed-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}~/.cursor/mcp.json für jedes Projekt oder .cursor/mcp.json für ein einzelnes Projekt:
{
"mcpServers": {
"indeed": {
"url": "https://mcp.hasdata.com/api/mcp?apis=indeed",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}~/.codeium/windsurf/mcp_config.json. Windsurf nennt das Feld serverUrl, nicht url:
{
"mcpServers": {
"indeed": {
"serverUrl": "https://mcp.hasdata.com/api/mcp?apis=indeed",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}.vscode/mcp.json im Workspace:
{
"servers": {
"indeed": {
"type": "http",
"url": "https://mcp.hasdata.com/api/mcp?apis=indeed",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}Beispiel-Prompts
Prompts, kein Code. Fügen Sie einen ein, und der Agent wählt das Tool selbst aus. Jeder Prompt ist mit den Aufrufen annotiert, die er benötigt, denn jeder erfolgreiche Aufruf kostet 5 Credits.
Suchen Sie auf Indeed nach „python developer"-Jobs in New York, sortiert nach Datum, und nennen Sie mir die zehn neuesten mit Unternehmen und Gehalt.
Ein Aufruf, 5 Credits. Eine Listenseite enthält bereits Unternehmen, Gehalt und Veröffentlichungsdatum.
Nehmen Sie die oberste Anzeige aus dieser Suche und rufen Sie ihre vollständige Beschreibung und Anforderungen ab.
Ein Aufruf, 5 Credits. Die Auflistung enthält eine Job-URL, die das Details-Tool direkt übernimmt.
Finden Sie Jobs als „data analyst" in Austin und rufen Sie dann vollständige Details zu den drei ab, die ein Gehalt angeben.
Vier Aufrufe, 20 Credits. Eine Auflistung, dann ein Details-Aufruf für jeden der drei.
Vergleichen Sie die veröffentlichten Gehälter für „registered nurse" in Chicago mit denen in Houston.
Zwei Aufrufe, 10 Credits, eine Auflistung pro Stadt.
Ein Gehalt steht in einer Auflistung nur dann, wenn die Anzeige eines angibt. Ein Prompt wie „jobs with salary" filtert also nach dem Feld, statt es vorauszusetzen. Das Blättern kostet jedes Mal einen Aufruf über den start-Offset.
Tools
Zwei Tools, schreibgeschützt. Die Beispiele unten sind aus echten Aufrufen gekürzt, und die Zahlen ändern sich, wenn Indeed aktualisiert. Betrachten Sie sie als Strukturbeispiele. Jeder Tool-Name verlinkt auf seine Endpunkt-Referenz, die die vollständige Feldliste enthält.
Die Beispiele sind die Payload, nicht die gesamte Antwort. Ein tools/call-Ergebnis enthält einen Textblock, und dieser Text ist selbst JSON und enthält url, status, text und json, wobei die gescrapten Daten unter json liegen. Bei einer rohen JSON-RPC-Antwort ist der Pfad result.content[0].text, geparst, dann .json. Ein Chat-Client packt das für Sie aus; Code, der direkt mit dem Endpunkt spricht, tut das nicht.
Indeed-Jobangebote abrufen
hasdata_indeed_listing_getJobListings
Eine Seite mit Suchergebnissen nach Stichwort und Ort.
Parameter | Typ | Erforderlich | Hinweise |
| string | ja | Der Suchbegriff, wie ihn ein Bewerber eingeben würde |
| string | ja | Stadt und Bundesstaat oder eine beliebige Ortsangabe, die Indeed akzeptiert |
| string |
| |
| string | Eine Länderseite wie | |
| number | Ergebnis-Offset für die nächste Seite, eine Zahl und keine URL. Lesen Sie den Offset aus |
Gibt searchInformation, ein jobs-Array, peopleAlsoSearchFor und pagination zurück, dessen nextPage die URL der folgenden Seite ist. Jeder Job enthält title, company, location, url, eine kurze description, sponsored, das relative date und das absolute isoDate, ein details-Array mit Bezeichnungen wie Full-time und Hybrid work, ein benefits-Array sowie ein salary-Objekt, wenn die Anzeige eines angibt.
Eine Auflistung enthält
detailsals Array aus einfachen Zeichenketten. Das Job-Details-Tool unten gibtdetailsals Objekt mitjobType- undworkSetting-Arrays zurück. Gleicher Name, andere Form – lesen Sie also jedes gemäß seinem eigenen Tool.
{
"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-Jobdetails abrufen
hasdata_indeed_job_getJobDetails
Eine einzelne Anzeige vollständig anhand ihrer Job-URL.
Parameter | Typ | Erforderlich | Hinweise |
| string | ja | Eine Anzeigen-URL, das |
Gibt title, company, location, sponsored, ein details-Objekt mit jobType- und workSetting-Arrays, ein salary-Objekt, falls vorhanden, sowie den Anzeigentext sowohl als description (Klartext) als auch als descriptionHtml (derselbe Inhalt mit beibehaltenem Listen- und Absatz-Markup) zurück. Verwenden Sie descriptionHtml, wenn Sie die Struktur möchten, und description, wenn Sie einem Modell sauberen Text zuführen möchten.
{
"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>"
}Fehler und Fehlerpfade
Ihr Client sieht bei einem Tool-Aufruf fast nie einen HTTP-Fehlercode. Die MCP-Schicht antwortet mit 200 und legt den Fehler in das Ergebnis, mit isError auf true und dem Grund als Text. Der Agent liest eine Nachricht, wo Sie eine Statuszeile erwarten würden.
Ein falscher Schlüssel erscheint als Tool-Ausgabe, nicht als fehlgeschlagene Verbindung. tools/list akzeptiert jeden nicht-leeren Schlüssel und gibt beide Tools zurück, sodass der Client seinen Handshake abschließt und Grün anzeigt. Der erste Tool-Aufruf kommt dann mit isError: true und dem Text HasData API error: 401 Unauthorized zurück. Achten Sie auf diese Zeichenkette, denn nichts früher im Ablauf meldet das Problem.
Ein fehlender Schlüssel ist der einzige echte HTTP-Fehler. Die Autorisierung erfolgt vor jedem Tool, und die Verbindung selbst schlägt mit 401 fehl. CORS-Header sind vorhanden, und ein Browser-Client liest den Status statt eines undurchsichtigen Netzwerkfehlers.
Ein Argument, das das Schema eines Tools verletzt, wird abgelehnt, bevor es zu einem Scrape kommt. Der Server antwortet mit isError: true und dem Text MCP error -32602: Input validation error und nennt das fehlerhafte Feld. Es wird nichts abgerufen und nichts berechnet.
Eine Suche ohne Treffer liefert ein erfolgreiches Ergebnis mit einem leeren jobs-Array, keinen Fehler. Eine Kombination aus Stichwort und Ort ohne offene Stellen kommt weiterhin mit requestMetadata.status auf ok zurück. Prüfen Sie die Länge des Arrays, bevor Sie iterieren.
Eine Anzeige, die entfernt wurde, gibt 400 mit requestMetadata.status auf error zurück. Indeed lässt Anzeigen schnell verfallen, daher kann eine URL aus einer alten Suche nicht mehr verfügbar sein.
Ergebnisse mit Daten enthalten außerdem eine requestMetadata.id, die es wert ist, im Support angegeben zu werden.
Preise, kostenlose Stufe und Limits
Jedes Indeed-Tool kostet 5 Credits pro erfolgreichem Aufruf. Die Antwortgröße ändert den Preis nicht. Eine Listenseite mit fünfzig Jobs kostet dasselbe wie eine mit zwei.
Die kostenlose Testversion umfasst 1.000 Credits über 30 Tage ohne Karte, also 200 Indeed-Aufrufe. Danach erhält ein aktives Konto weiterhin jeden Tag 100 Credits aufgeladen, sobald sein Guthaben unter 100 fällt. Ein Agent mit geringem Volumen läuft so dauerhaft auf der kostenlosen Stufe.
Bezahlte Pläne beginnen bei 49 $ pro Monat für 200.000 Credits, also 40.000 Aufrufe. Der Stückpreis sinkt mit dem Volumen: von 1,23 $ pro 1.000 Aufrufen im Einstiegsplan über 0,50 $ bei Business und 0,42 $ bei Growth bis 0,37 $ bei den größten High-Volume-Plänen.
Ihr Plan legt auch die Parallelität fest. Die kostenlose Testversion erlaubt 1 Anfrage gleichzeitig, Startup 15, Business 30, Growth 50, und die High-Volume-Pläne reichen von 200 bis 1.500. Behandeln Sie den Überlauf-Fall bei allem, was unbeaufsichtigt läuft, defensiv.
Eine Anfrage, die nicht mit 200 zurückkommt, wird nicht berechnet. Ein erfolgreicher Aufruf ohne Treffer ist trotzdem ein Aufruf.
Tool-Auswahl
Der apis-Query-Parameter entscheidet, welche Tools Ihr Agent sieht. Weniger Tools bedeutet weniger Kontext für Tool-Definitionen und weniger Gelegenheiten für das Modell, zum falschen zu greifen.
?apis=indeed the two tools in this repo
?apis=indeed,glassdoor add Glassdoor jobs
?apis=indeed,google_serp add Google searchDer Parameter akzeptiert Providernamen wie indeed und einzelne API-Namen wie indeed_listing. Falsch geschriebene Namen werden ignoriert. Wenn jeder Name falsch ist, schlägt die Anfrage mit 400 fehl, und der Body listet sowohl das, was er nicht erkannt hat, als auch jeden gültigen Wert auf. Wenn Sie den Parameter weglassen, legt derselbe Endpunkt alle 57 HasData-Tools offen.
Vergleich
Indeed hat seine öffentlichen Publisher- und Job-Search-APIs eingestellt, und der programmatische Zugriff läuft jetzt über genehmigte Partnerschaften und ATS-Integrationen statt über einen Self-Service-Schlüssel. Für das Lesen öffentlicher Einträge und Anzeigen bei beliebigen Suchanfragen gibt es keinen offenen offiziellen Weg.
Offizieller Indeed-Zugriff | Dieser Server | |
Zugriff | Partner- oder ATS-Genehmigung | Ein Schlüssel und eine URL |
Umfang | Was die Partnerschaft gewährt | Beliebige öffentliche Suche oder Anzeige |
Einrichtung | Business-Review | Keine |
Ausgabe | Hängt von der Integration ab | Strukturiertes JSON, salary vorab geparst |
Schreibzugriff | Bewerbungsabläufe für genehmigte Partner | Nur lesend, nur öffentliche Daten |
Was dieser Server nicht tut. Keine Bewerbungseinreichung, kein Arbeitgeber-Dashboard, keine Kandidatendaten, keine privaten Stellenausschreibungen. Er liest, was ein nicht angemeldeter Besucher sehen kann.
FAQ
Gibt es einen offiziellen Indeed-MCP-Server?
Indeed veröffentlicht keinen. Dieser wird von HasData gepflegt und liest öffentliche Seiten, weshalb er kein Indeed-Entwicklerkonto benötigt.
Was ist ein Indeed-MCP-Server?
Ein Server, der Indeed-Jobdaten als Tools bereitstellt, die ein KI-Client aufrufen kann. Der Client sendet einen Tool-Aufruf über das Model Context Protocol, der Server ruft die Daten ab und gibt strukturiertes JSON zurück, und das Modell arbeitet mit dem Ergebnis. Dieser Server stellt zwei Tools bereit und läuft remote.
Brauche ich einen Indeed-API-Schlüssel oder ein Partnerkonto?
Nein. Die einzige Anmeldeinformation ist Ihr HasData-Schlüssel. Es gibt kein Publisher-Konto, für das Sie sich bewerben müssen, da die Tools öffentliche Indeed-Seiten lesen.
Wie blättere ich durch mehr als eine Ergebnisseite?
Übergeben Sie den start-Offset als Zahl an das Listing-Tool, nicht als URL. Die Antwort gibt pagination.nextPage zurück, dessen eigener start-Wert der Offset für die nächste Seite ist. Lesen Sie also diese Zahl und geben Sie sie zurück, anstatt die URL einzusetzen.
Warum fehlt manchmal ein Gehalt?
Weil die Anzeige kein Gehalt angibt. Das salary-Objekt ist nur vorhanden, wenn Indeed einen Betrag anzeigt. Lesen Sie es defensiv.
Kann ich das zusammen mit anderen HasData-APIs verwenden?
Ja. Der Parameter apis akzeptiert eine Liste, und ?apis=indeed,glassdoor versorgt Ihren Agenten mit Indeed und Glassdoor. Lassen Sie den Parameter weg und Sie erhalten alles.
Compliance und personenbezogene Daten
HasData greift ausschließlich auf öffentlich verfügbare Daten zu. Die Nutzungsbedingungen einer Plattform können den automatisierten Zugriff einschränken, und Sie sind für Ihre eigene Compliance verantwortlich. Soweit die von Ihnen erhobenen Daten personenbezogene Informationen enthalten, stellen Sie sicher, dass Sie eine rechtmäßige Grundlage dafür nach DSGVO, CCPA oder den entsprechenden Regelungen Ihrer Rechtsordnung haben.
HasData-Links
Produktseite und Request-Builder | |
Server-Dokumentation | |
Alle 57 Tools in einem Server | |
Client-Anleitungen | |
Alles andere, was wir scrapen | |
Pläne und Credit-Kosten | |
Schlüssel und Nutzung | |
Node-Launcher auf npm | |
Python-Launcher auf PyPI |
Entwicklung
Dieses Repository ist Konfiguration und Dokumentation für einen Remote-Server. Es gibt keinen Build-Schritt und nichts zu containerisieren.
Die Tests in test/ prüfen den Tool-Vertrag, also den Teil, der ohne einen Commit hier brechen kann. Sie prüfen, dass ?apis=indeed genau zwei Tools zurückgibt, dass jedes Tool weiterhin seine erforderlichen Parameter deklariert, dass sich kein Name geändert hat und dass der verwendete Schlüssel tatsächlich akzeptiert wird. Dieser letzte Check ruft ein Tool tatsächlich auf und kostet 5 Credits – das ist der Preis eines Kanarienvogels, der aus dem richtigen Grund fehlschlagen kann.
# macOS and Linux
HASDATA_API_KEY=your_key_here npm test
# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm testDieselbe Testsuite läuft in CI bei jedem Push und einmal pro Woche planmäßig, weil sich die Upstream-Tool-Liste ändern kann, ohne dass jemand dieses Repository anfasst. Ein Fehler bedeutet, dass sich die Tool-Liste geändert hat, der Schlüssel nicht mehr funktioniert oder der Endpunkt nicht erreichbar war – die Assertion-Meldung sagt, welcher Fall vorliegt.
Mitwirken
Korrekturen an den Tool-Tabellen und den Antwortbeispielen sind der nützlichste Beitrag, weil dies die Teile sind, die abweichen. Geben Sie den von Ihnen gemachten Aufruf und die erhaltene Antwort an. Pull Requests aus Forks führen die Suite ohne Schlüssel aus, und die Live-Checks werden übersprungen, statt rot zu werden.
Lizenz
MIT. Siehe 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 responsibility: it clearly frames the operation as a read-only 'fetches' and enumerates all returned data. It could have added notes on invalid URLs or availability limits, but for a simple GET-style tool the behavior is adequately disclosed.
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 compact and front-loaded, but the opening line 'Get Indeed Job Details' repeats what the next sentence and the title already cover. The rest is focused and useful.
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?
There is no output schema, but the description compensates by listing the main returned sections: title, company, location, salary, employment type, posted date, requirements, benefits, and apply URL. It does not address error/edge behavior, but with one parameter this is a minor gap.
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?
Schema coverage is 100%, so the parameter is already documented. The description adds signifficant extra meaning by saying the URL must be the 'viewjob URL' and implying the source is the Indeed endpoint result set, which goes beyond the generic parameter text.
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 states a specific verb and resource: it fetches a single Indeed job posting by its viewjob URL. It also differentiates from the sibling endpoint by noting that these are postings discovered via the Indeed Listing endpoint.
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 explicitly lists intended use cases such as ATS/CRM enrichment, compensation benchmarking, and resume-to-JD matching. It indirectly positions the tool as the detailed single-listing complement to the listing endpoint, though it does not crank out exact when-not-to-use rules.
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 full burden. It clearly states this is a search/read operation that returns an array of job objects with specific fields, and explains the offset-pagination behavior of start. It does not mention authorization, request limits, or error behavior, but the core visible behavior is well covered.
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 starts with a direct summary ('Searches Indeed job listings by keyword and location'), then lists the relevant search controls and return payload, then names end-use contexts. There is no filler or unnecessary repetition.
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?
Although there is no output schema, the description explicitly enumerates the returned fields and page be behavior. It also explains how the resulting URLs can be consumed by the details endpoint, giving the agent enough situational context to select it for the right work.
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 input schema already covers 100% of parameters, so baseline is a 3. The description adds context such as relevance/date sorting, country-domain targeting, and offset-based pagination, which aligns with the schema but does not need to carry the same burden given the schema's completeness.
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 states a specific verb and resource ('Searches Indeed job listings') and details the output fields (title, company, location, salary, posted date, job URL, jobKey. It clearly distinguishes this listing tool from the sibling getJobDetails by describing list-level search and URL generation for the details endpoint.
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 names concrete use cases — job-market dashboards, hiring-trend analysis, sourcing pipelines — and says the output can generate URL lists to feed into the Indeed Job endpoint. It implies when to use the listing tool versus the details sibling, but does not explicitly state when not to use it or include a direct alternative-comparison sentence.
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. Dates show when Glama detected each change.
2 tool updates
v1.0.0- First observed
hasdata_indeed_job_getJobDetails - First observed
hasdata_indeed_listing_getJobListings
TDQS
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
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,…
Live job postings from 30+ ATS feeds and job boards, one schema. Live results need a Bearer key.
Google Jobs listings with direct apply links via the Apify Google Jobs Scraper, hosted MCP.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables users to search LinkedIn's public job listings with advanced filters like location, salary, and experience level. It allows MCP-compatible clients to retrieve real-time job opportunities without requiring LinkedIn authentication or API keys.12MIT
- AlicenseAqualityBmaintenanceEnables searching over 1 million enriched job listings from 20,000+ companies directly from MCP-compatible AI tools. Provides tools for job search, company profiles, and AI-powered similar job recommendations with real-time data updates.4722MIT
- AlicenseNot gradedqualityBmaintenanceLive 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.MIT 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.-
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/HasData/indeed-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server