Indeed MCP Server
Indeed MCP Server
Размещённый на хостинге сервер Model Context Protocol (MCP), который предоставляет Claude, Cursor, Windsurf и любому другому MCP-клиенту два инструмента Indeed в режиме только для чтения. Ищите объявления о вакансиях по ключевому слову и месоположению и чиайте отдельную вакансию полностю — всё в виде сруктурированного JSON, без аккаунта разработчика Indeed и без одобрения партнёра.
Он чиает публичные вакансии, коорые види посетиель без входа в сисему.
https://mcp.hasdata.com/api/mcp?apis=indeed
Содержание
Related MCP server: JobDataLake MCP Server
Что вам нужно
Вам понадобятся MCP-клиент и API-ключ HasData из панели управления — его можно создать бесплатно, без карты; пробный период покрывает около 200 вызовов по тарифу 5 кредитов. Это удалённый сервер, поэтому самый простой путь — URL и заголовок x-api-key: не нужно запускать контейнер, и во всём процессе не участвует аккаунт разработчика Indeed. Клиент, поддерживающий только stdio, подключается через тонкий лаунчер, опубликованный как @hasdata/indeed-mcp на npm и hasdata-indeed-mcp на PyPI, как показано ниже.
Быстрый старт
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" }
}
}
}Для Python вместо Node замените лаунчер на пакет 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 называе поле serverUrl, а не url:
{
"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 вакансии «pуhon develope» в Нью-Йорке, отсорированные по дае, и покажи десят самых свежих с команией и зарплаой.
Один вызо, 5 кредиов. Сраница сиска уже содери команию, зарплау и дау убликации.
Возьми первую вакансию из этого поиска и покажи её полное описание и требования.
Один вызов, 5 кредитов. В списке есть URL вакансии, который инструмент деталей принимает напрямую.
Найди вакансии «data analyst» в Остине, затем покажи полные детали по трём, где указана зарплата.
Четыре вызоа, 20 кредиов: один сисок и по одному вызоу деалей для кажой из рёх.
Сравни зарплаы, оубликованные для «egistered nurse» в Чикаго и Хьюсоне.
Два вызоа, 10 кредиов, по одному сису на ород.
Зарплаа указна в сиске только огда, когда она ес в самой вакансии, поэтому зарос «вакансии с зарплаой» фильруе по олю, а не предолаге её наличие. Перелисыеание сраниц сои по одному вызоу за раз и выолняеся через смещение start.
Инструменты
Два инструмента, только для чтения. Примеры ниже сокращены из реальных вызовов, и числа меняются по мере обновления Indeed. Воспринимайте их как структуру. Имя каждого инструмента ведёт к справочнику эндпоинта, в котором приведён полный список полей.
Примеры — это полезная нагрузка, а не весь ответ. Результат tools/call содержит один текстовый блок, и этот текст сам является JSON с полями url, status, text и json; извлечённые данные находятся в json. В сыром JSON-RPC-ответе путь выглядит как result.content[0].text, который нужно распарсить, а затем взять .json. Чат-клиент разворачивает это автоматически, а код, обращающийся к эндпоинту напрямую, — нет.
Получение сиска вакансий Indeed
hasdata_indeed_listing_getJobListings
Страница результатов поиска по ключевому слову и местоположению.
Параметр | Тип | Обязательно | Примечания |
| string | да | Поисковый запрос, как его ввёл бы соискатель |
| string | да | Город и штат или любая строка местоположения, которую принимает Indeed |
| string | По умолчанию | |
| string | Сайт для страны, например | |
| number | Смещение результата для следующей страницы; это число, а не URL. Смещение берётся из |
В списке
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, объект details с массивами jobType и workSetting, объект 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 кредитов за успешный вызов. Размер ответа не влияет на цену. Страница списка с пятьюдесятью вакансиями стоит столько же, сколько с двумя.
Бесплатный пробный период — 1 000 кредитов на 30 дней без карты, то есть 200 вызовов Indeed. После этого активный аккаунт продолжает ежедневно получать пополнение в 100 кредитов, когда баланс опускается ниже 100, поэтому агент с небольшим объёмом запросов может работать на бесплатном тарифе бессрочно.
Платные тарифы начинаются от $49 в месяц за 200 000 кредитов, то есть 40 000 вызовов. Цена за единицу снижается с ростом объёма: от $1.23 за 1 000 вызовов на начальном тарифе до $0.50 на Business, $0.42 на Growth и $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, и отдельные имена API, такие как indeed_listing. Неверно написанные имена игнорируются. Если все имена неверны, запрос завершится ошибкой 400, а в теле будут перечислены и нераспознанные значения, и все допустимые. Уберите параметр — и тот же эндпоинт откроет все 57 инструментов HasData.
How it compares
Indeed прекратил поддержку своих публичных Publisher и Job Search API, и теперь программный доступ осуществляется через одобренные партнёрства и интеграции с ATS, а не через ключ, выдаваемый самостоятельно. Для чтения публичных объявлений и вакансий по произвольным запросам открытого официального пути не существует.
Официальный доступ Indeed | Этот сервер | |
Доступ | Одобрение партнёра или ATS | Один ключ и один URL |
Охват | Что предоставляет партнёрство | Любой публичный поиск или вакансия |
Настройка | Бизнес-проверка | Не требуется |
Вывод | Зависит от интеграции | Структурированный JSON, зарплата уже извлечена |
Запись | Потоки подачи заявок для одобренных партнёров | Только чтение, только публичные данные |
Чего этот сервер не делает. Никакой подачи заявок, никакой панели работодателя, никаких данных кандидатов, никаких закрытых вакансий. Он читает только то, что видит посетитель, не выполнивший вход.
FAQ
Существует ли официальный MCP-сервер Indeed?
Indeed не публикует такого. Этот поддерживается HasData и читает публичные страницы, поэтому ему не нужен аккаунт разработчика Indeed.
Что такое MCP-сервер Indeed?
Это сервер, который предоставляет данные Indeed о вакансиях в виде инструментов, которые может вызывать ИИ-клиент. Клиент отправляет вызов инструмента через протокол 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 инструментов в одном сервере | |
Инструкции по клиентам | |
Всё остальное, что мы парсим | |
Тарифы и стоимость кредитов | |
Ключи и использование | |
Node-лаунчер на npm | |
Python-лаунчер на PyPI |
Разработка
Этот репозиторий — конфигурация и документация для удалённого сервера. Здесь нет шага сборки и нечего контейнеризовать.
Тесты в 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Этот же набор тестов запускается в CI при каждом пуше и раз в неделю по расписанию, потому что список инструментов вышестоящего сервиса может измениться без изменений в этом репозитории. Сбой означает, что список инструментов изменился, ключ перестал работать или конечная точка была недоступна, и сообщение проверки указывает, что именно.
Участие
Исправления в таблицах инструментов и примерах ответов — самый полезный вклад, потому что именно эти части расходятся. Приложите сделанный вами вызов и полученный ответ. Pull-реквесты из форков запускают набор тестов без ключа, а живые проверки пропускаются, а не становятся красными.
Лицензия
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 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