LetsFG — Flights & Hotels
Search and book flights and hotels: hundreds of airlines, plus bookable hotel rates.
Indeed job listings by keyword and location, and full postings, as structured JSON.
Pick the AI app you use, then copy the settings.
Passed 5/5 checks · What you ask goes through the maker’s server (mcp.hasdata.com)
First: which AI do you use?
Pick your app and the steps appear below.
Works with Claude · about 5 min
You need a HasData Indeed key (create it on the maker’s site) · Set it up once on claude.ai or the desktop app, then use it in chat · free accounts can add 1 · on Team/Enterprise an Owner adds it
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
CustomizeConnectors
Copy each value into the field with the same name in Claude, then click Continue
HasData Indeedhttps://mcp.hasdata.com/mcp?apis=indeedUnder Request headers, add this name and value
x-api-key<paste your key here>Paste the key only into the app’s field, never into a chat or to anyone
Leave Authentication as Claude detected it, then click Add
+ConnectorsHasData Indeed
Use HasData Indeed and tell me what you can do for me, then show me one thing✓ If Claude says it is using HasData Indeed or shows a HasData Indeed tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
ChatGPT cannot connect HasData Indeed yet
HasData Indeed needs your own key to connect, but OpenAI’s help page only describes OAuth sign-in; there is no key option we could verify
A · Use an app that can connect HasData Indeed
B · Others in Travel, maps & weather that work with ChatGPT
Picked from the most used in the same category, only ones that connect by address with no key
Works with Claude Code · about 5 min
You need a HasData Indeed key (create it on the maker’s site)
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
Mac: press Command+Space and type Terminal · Windows: open PowerShell
claude mcp add --transport http --scope user indeed 'https://mcp.hasdata.com/mcp?apis=indeed' --header 'x-api-key: your-value'Replace “your-value” with your key before pressing Enter
Paste the key only into the app’s field, never into a chat or to anyone
You should see HasData Indeed listed as connected
Use HasData Indeed and tell me what you can do for me, then show me one thing✓ If Claude Code says it is using HasData Indeed or shows a HasData Indeed tool in the answer, you are connected
Menu names checked against Anthropic’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with Cursor · about 5 min
You need a HasData Indeed key (create it on the maker’s site)
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
In the HasData Indeed settings, x-api-key is empty; add your key and save
Paste the key only into the app’s field, never into a chat or to anyone
Use HasData Indeed and tell me what you can do for me, then show me one thing✓ If Cursor says it is using HasData Indeed or shows a HasData Indeed tool in the answer, you are connected
Menu names checked against Cursor’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Works with VS Code · about 5 min
You need a HasData Indeed key (create it on the maker’s site)
Open the maker’s site, sign up and create an API key for the next step. Check the maker’s site for pricing and free plans.
In the HasData Indeed settings, x-api-key is empty; add your key and save
Paste the key only into the app’s field, never into a chat or to anyone
Use HasData Indeed and tell me what you can do for me, then show me one thing✓ If VS Code says it is using HasData Indeed or shows a HasData Indeed tool in the answer, you are connected
Menu names checked against VS Code’s help page on Nov 11, 2026 · your screen may differ slightly by app version
Other apps that use MCP, such as Windsurf, Zed or Gemini CLI, each add servers differently. See how in the app list.
Address for apps that connect over the web
https://mcp.hasdata.com/mcp?apis=indeedJSON settings are under “For developers” below
Claude Code
claude mcp add --transport http --scope user indeed 'https://mcp.hasdata.com/mcp?apis=indeed' --header 'x-api-key: your-value'Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"indeed": {
"url": "https://mcp.hasdata.com/mcp?apis=indeed",
"headers": {
"x-api-key": "your-value"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"indeed": {
"type": "http",
"url": "https://mcp.hasdata.com/mcp?apis=indeed",
"headers": {
"x-api-key": "your-value"
}
}
}
}Claude Code
claude mcp add --scope user indeed --env HASDATA_API_KEY=your-value -- npx -y @hasdata/indeed-mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"indeed": {
"command": "npx",
"args": [
"-y",
"@hasdata/indeed-mcp"
],
"env": {
"HASDATA_API_KEY": "your-value"
}
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"indeed": {
"command": "npx",
"args": [
"-y",
"@hasdata/indeed-mcp"
],
"env": {
"HASDATA_API_KEY": "your-value"
}
}
}
}VS Code (mcp.json)
{
"servers": {
"indeed": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@hasdata/indeed-mcp"
],
"env": {
"HASDATA_API_KEY": "your-value"
}
}
}
}HASDATA_API_KEY secret required envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
npm: @hasdata/indeed-mcppypi: hasdata-indeed-mcpBased on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Connect over the internet in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatOpen WebUIRaycast
Run on your computer in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
Tool names and descriptions exactly as the server reported them on Nov 12, 2026. The maker wrote them, not us; we show them as plain text.
hasdata_indeed_job_getJobDetailsGet Indeed Job Details Fetches a single Indeed job posting by its viewjob URL. Returns job title, company, location, salary/compensation, employment type, full description, and benefits. Use for ATS/CRM enrichment, compensation benchmarking, resume-to-JD matching with LLMs, and s
hasdata_indeed_listing_getJobListingsGet Indeed Job Listings Searches Indeed job listings by keyword and location with sort (relevance/date), country domain targeting, date-posted (1/3/7/14 days) and remote/hybrid filters. For pagination, pass the pagination.nextPage returned by the previous page back as the nextPag
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 12, 2026
The registry name was verified against the domain hasdata.com (the registry checks domain ownership)
Code last changed 14 days ago
Uses MIT
Responded in 43 ms (HTTP 200)
No sign-in needed
Read 2 tool descriptions and found no hidden instructions to the AI
Ask, share a tip or report that it does not work. Sorted by what people marked helpful.
No posts yet. Be the first to ask or share.
Posts here are written by users, not the PopNx team.
No reviews yet
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 5 of 5 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: x-api-key, HASDATA_API_KEY
Either way works: install it on your computer or connect to the cloud version.
The GitHub repo last changed 14 days ago, and the latest version (1.0.8) reached the registry 2 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT Business and above.
In the same category: LetsFG — Flights & Hotels, Google Maps MCP Server, Mu
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Search and book flights and hotels: hundreds of airlines, plus bookable hotel rates.
18 Google Maps tools for AI agents — geocode, search, directions, weather, and more.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
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