mcpField
M
mcp-gtm-job-discovery

mcp-gtm-job-discovery

Local
github.com/mambalabsdevBusiness & Marketing0Updated 1w ago

About mcp-gtm-job-discovery

An MCP server that searches job postings for role keywords and enriches each posting with company firmographics and a LinkedIn URL. It is a thin Apify actor client for teams identifying companies hiring for target roles.

Key features

  1. 01Search postings by role keywords
  2. 02Search across configurable job sources
  3. 03Filter by country, date, size, and remote status
  4. 04Exclude staffing agencies and freelance marketplaces
  5. 05Enrich companies with firmographics and LinkedIn URLs

Use cases

  1. 01Find companies hiring for target roles
  2. 02Build company lists for sales prospecting
  3. 03Track new postings between runs

MCP support

Exposes the `monitor_job_postings` tool to MCP clients. It forwards inputs to an Apify actor and returns its output.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"com-mambabuilt-mcp-gtm-job-discovery": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-gtm-job-discovery"
],
"env": {
"APIFY_TOKEN": "<APIFY_TOKEN>"
}
}
}
}
Run commandnpx -y @mambalabsdev/mcp-gtm-job-discovery
Environment variables to set
APIFY_TOKENSecretApify API token from https://console.apify.com/account/integrations

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@mambalabsdev/mcp-gtm-job-discovery1.5.0

Tools

1

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
countrystringNoGeographic filter, e.g. United States, United Kingdom, Canada. Default: "United States".
sourcesarrayNoWhich job boards to search, run as an ordered chain. Tier 0 needs no key and runs every keyword: jobicy, remotive, arbeitnow, themuse, remoteok, weworkremotely, himalayas. Tier 1 is adzuna (needs adzuna_app_id and adzuna_app_key). Tier 2 runs only on keywords the earlier tiers left short: jobspipe and theirstack (each needs its key, billed by the provider per job returned) and google_jobs (needs serpapi_key). A posting on two boards is deduplicated and counted once. Default: ["google_jobs"].
keywordsarrayYesRole titles to search for across job boards, one per entry, for example ["account executive", "revops manager"]. Each keyword runs through the source chain separately.
countriesarrayNoLoop these countries inside one run; overrides country when set. Metered sources query each country separately; keyless remote boards are global and run once. Use the names Google Jobs accepts, for example United States, United Kingdom, Canada.
max_resultsintegerNoUpper bound on raw postings pulled from the discovery source before filtering. Higher values cost more. Default: 100.
remote_onlybooleanNoOnly return remote / work-from-home postings. Default: false.
serpapi_keystringNoSerpAPI key used for Google Jobs discovery (get a free key at serpapi.com, 250 searches/month, no card). Required to produce results unless a SERPAPI_KEY environment variable is set on the actor.
jobspipe_keystringNoYour JobsPipe Bearer key (jp_live_...) for the jobspipe source. JobsPipe bills one credit per job returned. The actor's JOBSPIPE_KEY environment variable is used when this is empty.
adzuna_app_idstringNoYour Adzuna application id for the adzuna source. It travels in the tool call; the actor's ADZUNA_APP_ID environment variable is used when this is empty.
lookback_daysintegerNoOnly return postings newer than this many days. Default: 30.
max_companiesintegerNoCap on unique companies enriched per run (firmographics + LinkedIn). Bounds sub-actor cost. Default: 40.
adzuna_app_keystringNoYour Adzuna application key for the adzuna source. The actor's ADZUNA_APP_KEY environment variable is used when this is empty.
theirstack_keystringNoYour TheirStack API key for the theirstack source. TheirStack bills one credit per job returned. The actor's THEIRSTACK_KEY environment variable is used when this is empty.
metered_run_capintegerNoCeiling per metered source per country per run: searches for SerpAPI, calls for Adzuna, jobs for JobsPipe and TheirStack. Default: 50.
company_size_maxintegerNoOptional. Drop companies larger than this (only applied when company size is known).
company_size_minintegerNoOptional. Drop companies with fewer employees than this (only applied when company size is known).
previous_run_datestringNoOptional ISO date (e.g. 2026-06-01) of your last run. Only postings newer than this are emitted, on top of the built-in cross-run delta cache.
metered_window_daysintegerNoOnly ask the metered sources (jobspipe, theirstack) for postings this many days old or newer. They bill per job returned, seen before or not, so a narrow window is the biggest credit saver. 1 to 7. Default: 2.
freelance_marketplacesarrayNoCompany names treated as freelance marketplaces and excluded when the toggle above is on. Defaults shown; override or extend as needed. Default: ["Upwork", "Fiverr", "Freelancer", "Toptal", "PeoplePerHour", "Guru", "99designs"].
exclude_staffing_agenciesbooleanNoFilter out staffing and recruitment agency postings using name and job-description heuristics. Default: true.
exclude_freelance_marketplacesbooleanNoFilter out postings where the company is a freelance marketplace (Upwork, Fiverr, etc.), which are noise for direct outreach. Default: true.
enough_new_companies_per_keywordintegerNoStop the source chain for a keyword once this many distinct new companies have been found for it this run. Later, metered tiers run only on keywords still below this. Default: 3.

Details

From the project README

Job Posting Monitor MCP Server

Smithery Glama score MCP Registry npm version npm downloads license mcpservers.org

Gtm Job Discovery MCP server

MCP server for the Mamba Labs Job Posting Monitor actor on Apify.

Give it a list of role keywords and it returns the companies currently advertising those roles, one flat row per posting, each enriched with firmographics and the company LinkedIn URL.

Install

npx -y @mambalabsdev/mcp-gtm-job-discovery
Claude Desktop
{
  "mcpServers": {
    "mamba-gtm-job-discovery": {
      "command": "npx",
      "args": ["-y", "@mambalabsdev/mcp-gtm-job-discovery"],
      "env": { "APIFY_TOKEN": "your-apify-token" }
    }
  }
}

Get an Apify token at console.apify.com/account/integrations.

Tool

monitor_job_postings

Give it a list of role keywords and it returns the companies currently advertising those roles, one flat row per posting, each enriched with firmographics and the company LinkedIn URL.

InputTypeRequiredNotes
keywordsarrayyesRole titles to search for, one per entry. Each keyword runs through the source chain separately.
sourcesarraynoJob boards, run as an ordered chain. Tier 0, no key: jobicy, remotive, arbeitnow, themuse, remoteok, weworkremotely, himalayas. Tier 1: adzuna (needs adzuna_app_id and adzuna_app_key). Tier 2, only for keywords still short: jobspipe, theirstack (each needs its key) and google_jobs (needs serpapi_key). A posting on two boards is counted once. Default ["google_jobs"].
countrystringnoGeographic filter, for example United States, United Kingdom, Canada. Default United States.
countriesarraynoLoop these countries in one run. Overrides country when set.
lookback_daysintegernoOnly return postings newer than this many days. Default 30.
company_size_minintegernoDrop companies with fewer employees than this (applied only when company size is known).
company_size_maxintegernoDrop companies larger than this (applied only when company size is known).
exclude_staffing_agenciesbooleannoFilter out staffing and recruitment agency postings. Default true.
exclude_freelance_marketplacesbooleannoFilter out postings where the company is a freelance marketplace (Upwork, Fiverr, and others). Default true.
freelance_marketplacesarraynoCompany names treated as freelance marketplaces. Default ["Upwork", "Fiverr", "Freelancer", "Toptal", "PeoplePerHour", "Guru", "99designs"].
remote_onlybooleannoOnly return remote postings. Default false.
previous_run_datestringnoISO date of your last run, for example 2026-06-01. Only newer postings are emitted, on top of the built in cross run delta cache.
max_resultsintegernoUpper bound on raw postings pulled before filtering. Higher values cost more. Default 100.
max_companiesintegernoCap on unique companies enriched per run (firmographics and LinkedIn). Default 40.
serpapi_keystringnoYour SerpAPI key for the google_jobs source (free key at serpapi.com, 250 searches a month).
adzuna_app_idstringnoYour Adzuna application id for the adzuna source.
adzuna_app_keystringnoYour Adzuna application key for the adzuna source.
jobspipe_keystringnoYour JobsPipe key for the jobspipe source. Billed by JobsPipe per job returned.
theirstack_keystringnoYour TheirStack key for the theirstack source. Billed by TheirStack per job returned.
metered_window_daysintegernoAsk the metered sources only for postings this many days old or newer, 1 to 7. Default 2.
enough_new_companies_per_keywordintegernoStop the chain for a keyword once this many new companies are found. Default 3.
metered_run_capintegernoCeiling per metered source per country per run. Default 50.
max_charge_usdnumbernoOptional cost cap in USD for this run. The actor stops before an item that could take its charges past this amount. Omit to rely on the maximum cost per run set in Apify.

Keys passed as inputs travel in the tool call and stay in the chat transcript.

Billing

You are charged per result row returned, plus a small actor start fee. Filtered postings are free.

Price per event on the Apify FREE plan, from the live pricing record; paid Apify plans pay less per event.

EventPrice (USD)
Actor Start (apify-actor-start)0.00005
result (apify-default-dataset-item)0.02

Pricing is on the actor's Apify page. Running this server consumes Apify credits.

What this server does and does not do

It is a thin client for the Apify actor. It passes your input through and returns the actor's output unchanged. Every behavior described above lives in the actor, not here.

Errors are surfaced, never swallowed. An invalid input, an invalid token, an exhausted balance, a timeout, or a run that returns anything other than a dataset all come back as an explicit tool error rather than as an empty result.

Source

The actor is on the Apify Store. This wrapper is MIT licensed.

Built by Mamba Labs

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.