Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Beschreibung vom Entwickler (englisches Original)
Indeed job listings by keyword and location, and full postings, as structured JSON.
Diese drei werden nie zu einer Punktzahl zusammengefasst: Meinungen, Messungen und Beliebtheit sind verschiedene Dinge.
Für diesen Server haben wir noch keine Zusammenfassung in einfacher Sprache geschrieben. Unten stehen die Fakten, die wir aus der Registry gelesen haben.
Wähle die KI-App, die du nutzt, und kopiere die Einstellungen.
HASDATA_API_KEY, x-api-keyAls geheim markierte Werte sind Schlüssel zu deinem Konto. Gib sie nie weiter und füge sie nie in einen Chat ein.
Du brauchst
Welche App nutzt du?
Wähle oben deine App. Wir merken sie uns, damit der Button beim nächsten Mal „In … installieren“ anzeigt.
Diese Adresse braucht einen Schlüssel in einem Header der Anfrage, und das Menü zum Hinzufügen von Connectors kann ihn nicht setzen. Nutze stattdessen Claude Code, Cursor oder VS Code.
Öffne Claude Desktop → Settings → Developer → Edit Config und füge dies in claude_desktop_config.json ein
{
"mcpServers": {
"indeed": {
"command": "npx",
"args": [
"-y",
"@hasdata/indeed-mcp"
],
"env": {
"HASDATA_API_KEY": "your-value"
}
}
}
}Führe das in deinem Terminal aus
claude mcp add --transport http indeed 'https://mcp.hasdata.com/mcp?apis=indeed' --header 'x-api-key: your-value'claude mcp add indeed --env HASDATA_API_KEY=your-value -- npx -y @hasdata/indeed-mcpTrag die leeren Werte ein, bevor du ihn startest.
In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"indeed": {
"url": "https://mcp.hasdata.com/mcp?apis=indeed",
"headers": {
"x-api-key": "your-value"
}
}
}
}In .cursor/mcp.json in deinem Projekt oder in ~/.cursor/mcp.json einfügen
{
"mcpServers": {
"indeed": {
"command": "npx",
"args": [
"-y",
"@hasdata/indeed-mcp"
],
"env": {
"HASDATA_API_KEY": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"indeed": {
"type": "http",
"url": "https://mcp.hasdata.com/mcp?apis=indeed",
"headers": {
"x-api-key": "your-value"
}
}
}
}In .vscode/mcp.json in deinem Projekt einfügen
{
"servers": {
"indeed": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@hasdata/indeed-mcp"
],
"env": {
"HASDATA_API_KEY": "your-value"
}
}
}
}Dein Browser fragt, ob er die App öffnen darf, dann zeigt die App die Einstellungen und bittet dich um Bestätigung. Schlüsselwerte bleiben leer, damit du sie selbst einträgst.
Diese Adresse braucht einen Schlüssel in einem Header der Anfrage, und das Menü zum Hinzufügen von Connectors kann ihn nicht setzen. Nutze stattdessen Claude Code, Cursor oder VS Code.
Deine Auswahl bleibt in einem Cookie auf diesem Gerät; kein Konto nötig.
x-api-key geheim erforderlich HTTP headerDiese Einstellungen werden aus dem Registry-Eintrag des Entwicklers erzeugt. Wenn in der README etwas anderes steht, folge der README.
Die Tool-Liste dieses Servers haben wir noch nicht gelesen; wir prüfen die Endpunkte reihum.
Wir prüfen Informationen, die jeder sehen kann; den Code haben wir nicht gelesen. Checks, die nicht zutreffen, werden nicht mitgezählt. · Geprüft am 6. Nov. 2026
Der Registry-Name wurde über die Domain hasdata.com bestätigt (die Registry prüft, wem die Domain gehört)
Dieses Repo haben wir noch nicht von GitHub gelesen
Dieses Repo haben wir noch nicht von GitHub gelesen
Noch nicht geprüft; wir prüfen die Endpunkte reihum
Noch nicht geprüft; wir prüfen die Endpunkte reihum
Noch nicht geprüft; wir lesen die Tool-Liste, wenn wir den Endpunkt prüfen
Verglichen mit allen aktiven Servern dieser Kategorie in der Registry. Sterne zählen nur, wenn dem Herausgeber das Repo gehört.
Er hat 1 von 1 zutreffenden Basischecks bestanden. Den Code haben wir nicht gelesen. Bevor du einen Schlüssel oder Token hinzufügst, sieh nach, welche Zugriffe der Server verlangt, und nutze einen Schlüssel, der nur die Berechtigungen hat, die du brauchst.
Das musst du eintragen: HASDATA_API_KEY, x-api-key
Beides geht: Installiere ihn auf deinem Computer oder verbinde dich mit der Cloud-Version.
Das GitHub-Repo wurde zuletzt – geändert, und die neueste Version (1.0.8) kam vor 43 Tagen in die Registry.
Apps, die MCP unterstützen, etwa Claude Desktop, Claude Code, Cursor und VS Code. Er verbindet sich per URL, also funktionieren auch Apps, die Remote-MCP-Server akzeptieren, zum Beispiel ChatGPT im Entwicklermodus.
In derselben Kategorie: Spec Driven Development, Remote Desktop Commander, AI Deprecations
Server derselben Kategorie von anderen Entwicklern, sortiert nach Sternen.
So liest du eine Karte:★ GitHub-SterneiDrei Säulen: Bewertungen · Checks · NutzungiAktualisiert = neueste Version in der Registry veröffentlichti
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
AI model shutdown dates, replacements, change feed and webhook alerts for 8 providers.
Unverändert aus dem Repo des Entwicklers übernommen. PopNx MCP hat den Inhalt weder geprüft noch empfiehlt es ihn. HTML, Bilder und Skripte wurden entfernt. Links führen von dieser Website weg.
A hosted Indeed MCP server that gives Claude, Cursor, Windsurf and any other MCP client two read-only Indeed tools. Search job listings by keyword and location, and read a single posting in full, all as structured JSON, with no Indeed developer account and no partner approval.
It reads public job postings that a signed-out visitor can see.
1,000 free credits every month, no card required, which is 100 Indeed calls.
https://mcp.hasdata.com/mcp?apis=indeed
An MCP client and a HasData API key from the dashboard, free to create with no card, and the free tier covers about 100 calls a month at the 10-credit rate. This is a remote server, so the simplest path is a URL and an x-api-key header, with no container to run and no Indeed developer account anywhere in the flow. A client that only speaks stdio reaches it through a thin launcher, published as @hasdata/indeed-mcp on npm and hasdata-indeed-mcp on PyPI, shown below.
The server URL is the same for every client. We run it hands-on in Claude Code and Claude Desktop. The other blocks follow each client's own documented format for a remote server.
| Field | Value |
|---|---|
| URL | https://mcp.hasdata.com/mcp?apis=indeed |
| Transport | HTTP, streamable |
| Auth header | x-api-key: HASDATA_API_KEY |
Clients with OAuth support can add the same URL as a connector and sign in without putting a key in a config file.
Claude Code
claude mcp add --transport http indeed "https://mcp.hasdata.com/mcp?apis=indeed" \
--header "x-api-key: HASDATA_API_KEY"
Claude Desktop
Settings, then Connectors, then Add custom connector, then paste https://mcp.hasdata.com/mcp?apis=indeed and sign in.
For the config-file route, Claude Desktop loads only local (stdio) servers, so it reaches a remote server through a stdio launcher. The @hasdata/indeed-mcp package is that launcher, and it reads the key from the environment. Add this to claude_desktop_config.json:
{
"mcpServers": { "indeed": { "command": "npx", "args": ["-y", "@hasdata/indeed-mcp"], "env": { "HASDATA_API_KEY": "YOUR_KEY" } } } }
For Python instead of Node, swap the launcher for the PyPI package, which uvx runs without a manual install:
{
"mcpServers": { "indeed": { "command": "uvx", "args": ["hasdata-indeed-mcp"], "env": { "HASDATA_API_KEY": "YOUR_KEY" } } } }
Cursor
~/.cursor/mcp.json for every project, or .cursor/mcp.json for one:
{
"mcpServers": { "indeed": { "url": "https://mcp.hasdata.com/mcp?apis=indeed", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }
Windsurf
~/.codeium/windsurf/mcp_config.json. Windsurf calls the field serverUrl, not url:
{
"mcpServers": { "indeed": { "serverUrl": "https://mcp.hasdata.com/mcp?apis=indeed", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }
VS Code
.vscode/mcp.json in the workspace:
{
"servers": { "indeed": { "type": "http", "url": "https://mcp.hasdata.com/mcp?apis=indeed", "headers": { "x-api-key": "HASDATA_API_KEY" } } } }
Prompts, not code. Paste one in and the agent picks the tool itself. Each is annotated with the calls it takes, because every successful call costs 10 credits.
Search Indeed for "python developer" jobs in New York sorted by date, and give me the ten most recent with company and salary.
*One call, 10 credits. A listing page carries company, salary and posted date already.*
Take the top posting from that search and pull its full description and requirements.
*One call, 10 credits. The listing carries a job URL, which the details tool takes directly.*
Find "data analyst" jobs in Austin, then pull full details on the three that list a salary.
*Four calls, 40 credits. One listing, then one details call for each of the three.*
Compare the salaries posted for "registered nurse" in Chicago against Houston.
*Two calls, 20 credits, one listing per city.*
Salary is on a listing only when the posting states one, so a "jobs with salary" prompt filters on the field rather than assuming it. Paging costs a call each time, through the start offset.
| Tool | What it returns |
|---|---|
hasdata_indeed_job_getJobDetails | Job title, company, location, salary/compensation, employment type, posted date, full description, requirements/benefits, and apply URL. 10 credits a call |
hasdata_indeed_listing_getJobListings | An array of jobs with title, company, location, salary, posted date, job URL, and jobKey for the requested page. 10 credits a call |
Two tools, read-only. Samples below are trimmed from real calls, and the numbers move as Indeed updates. Read them as shapes. Each tool name links to its endpoint reference, which carries the full field list.
The samples are the payload, not the whole response. A tools/call result carries one text block, and that text is itself JSON holding url, status, text and json, with the scraped data under json. From a raw JSON-RPC response the path is result.content[0].text, parsed, then .json. A chat client unwraps that for you and code talking to the endpoint directly does not.
hasdata_indeed_listing_getJobListings
A page of search results by keyword and location.
| Parameter | Type | Required | Notes |
|---|---|---|---|
keyword | string | yes | The search term, as a candidate would type it |
location | string | yes | City and state, or any location string Indeed accepts |
sort | string | relevance by default, or date for newest first | |
domain | string | A country site such as au.indeed.com. Defaults to the US site | |
start | number | Result offset for the next page, a number and not a URL. Read the offset from pagination.nextPage in the previous response |
Returns searchInformation, a jobs array, peopleAlsoSearchFor, and pagination whose nextPage is the URL of the following page. Each job carries title, company, location, url, a short description, sponsored, the relative date and the absolute isoDate, a details array of labels like Full-time and Hybrid work, a benefits array, and a salary object when the posting states one.
A listing carries
detailsas an array of plain strings. The job-details tool below returnsdetailsas an object withjobTypeandworkSettingarrays. Same name, different shape, so read each per its own 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" } }
hasdata_indeed_job_getJobDetails
One posting in full, by its job URL.
| Parameter | Type | Required | Notes |
|---|---|---|---|
url | string | yes | A posting URL, the url field from a listing result |
Returns title, company, location, sponsored, a details object with jobType and workSetting arrays, a salary object when present, and the posting body in both description (plain text) and descriptionHtml (the same content with its list and paragraph markup kept). Use descriptionHtml when you want the structure and description when you want to feed clean text to a model.
{
"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": " Overview We are seeking a Python Developer... " }
The server ships one prompt, a ready-made workflow a client can offer instead of making the user compose a tool call.
| Prompt | What it does |
|---|---|
indeed_hiring_map | See where a role is being hired for and at what salary. |
Alongside them the server exposes 4 resources, one per parameter whose accepted values are a fixed list. Reading one is cheaper than learning the vocabulary from a rejected call, and it costs no credits. Each URI is hasdata://indeed/ .
| Parameter | Values | What it selects |
|---|---|---|
sort | 2 | The sorting option for the search results. |
domain | 62 | The domain of the Indeed site (optional). |
datePosted | 4 | Returns only jobs posted within the given number of days. |
remoteType | 2 | Returns only remote (remote) or hybrid (hybrid) jobs. In the US, Indeed ties fully remote jobs to the country rather than a city, so use a country-wide location such as United States: with a city, Indeed returns few or no remote jobs. |
Both lists are served without an API key, so a client can read them before a user has signed up.
Your client almost never sees an HTTP error code from a tool call. The MCP layer answers 200 and puts the failure inside the result, with isError set to true and the reason as text. The agent reads a message where you might expect a status line.
A wrong key surfaces as tool output, not as a failed connection. tools/list accepts any non-empty key and returns both tools, so the client completes its handshake and shows green. The first tool call then comes back with `isError: tr
Nur der Anfang wird gezeigt; den Rest findest du im Repo