A side-by-side look at the Freehire and Nextrole MCP Proxy MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Freehire for workplace & productivity work as a local process; choose Nextrole MCP Proxy for workplace & productivity as a local process. You can also run both side by side in one mcpServers block.
FREEHIRE_TOKEN, FREEHIRE_API_URL.whoami, facets, search.get_pricing, get_credits, place_order.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Workplace & Productivity | Workplace & Productivity |
| Quality signal | 61/100 · Good | 52/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | FREEHIRE_TOKENFREEHIRE_API_URL | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 3 | 0 |
| Directory activity | 1 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 32 | 3 |
| Full listing | View Freehire | View Nextrole MCP Proxy |
whoamiReturn the authenticated freehire user (verifies the API key). Call this to confirm auth before other tools.facetsList the market's filter vocabulary: every facet's live values with a vacancy count each, plus the skills list and numeric ranges. Call this FIRST to discover real values for `search` and `market_fit` — do not invent facet values. A filter key the API does not recognise is ignored rather than refused, so a result wrapped as {data, ignored} counted a broader market than the one asked for — retry with the suggested name before quoting any number from it.searchSearch open jobs by keyword with optional facet filters. Each result carries the job's FULL description as markdown alongside title, company, location and public_slug, plus the total match count — so you can screen a whole result set without calling `job` per hit. Use the returned slug with `job`, `apply`, `save`, etc. Two traps worth knowing. Geography (region/country/city) is ONE OR-group: passing region AND country widens rather than narrows, so drop the region to search a single country. And a filter param the API does not recognize is ignored rather than refused — the search still runs, just broader — so when a result carries an `ignored` list, its `total` answers a wider question than the one asked; retry with the suggested name before reporting the number.market_fitScore a skill list against the live open-vacancy market for a filtered role: headline coverage (% of vacancies listing ≥1 skill), must-have skills held, and the missing skills that unlock the most vacancies. Here `skills` is the MEASURED set, not a filter — use facet params to define the role. One skill probes that skill's demand.jobFetch a single job's full content by slug (title, company, location, posting URL, description).companyFetch a company and its open jobs by company slug.applyMark a job as applied for the authenticated user. Idempotent.saveBookmark a job for later. Idempotent.unsaveRemove a job's bookmark. A no-op if it was not saved.stageSet a job's application stage. The server validates the value; valid stages are applied/screening/responded/interview/offer/accepted/rejected/withdrawn.noteAttach a free-text note to a tracked job (overwrites the existing note).myList the caller's tracked jobs (viewed/saved/applied) with their stage and note. Filter narrows the set.get_pricingGet the available career-level tiers and their product IDs. Different products are designed for different career phases, so the customer should pick the tier that best matches where they are in their career. You must call this before placing an order to get the correct productId.get_creditsCheck how many credits a customer has remaining. Each order to tailor a CV and cover letter costs 1 credit.place_orderPlace an order for a tailored CV and cover letter. The order typically takes about 15 minutes to complete. The customer will receive an SMS confirming their order and another SMS when their documents are ready to download. Costs 1 credit per order.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"freehire": {
"command": "npx",
"args": [
"-y",
"freehire-mcp"
],
"env": {
"FREEHIRE_TOKEN": "YOUR_FREEHIRE_TOKEN_HERE",
"FREEHIRE_API_URL": "YOUR_FREEHIRE_API_URL_HERE"
}
}
}
}
{
"mcpServers": {
"nextrole-mcp-proxy": {
"command": "npx",
"args": [
"nextrole-mcp-proxy"
]
}
}
}