# freehire

Searches the company-board catalogue and tracks applications from inside the chat. Handy when opening a browser for another vacancy feels like too much.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 12
- Author: strelov1
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/strelov1/freehire-mcp
- Updated: 2026-10-24
- HTML: https://affpapa.org/en/nevibecode/mcp/freehire

## What it does

The server wraps the freehire.me API and gives the agent tools for a job hunt. Postings come straight off company career pages: 3.3M+ roles at 294K companies, normalised into one schema and tagged by stack, seniority, region and work mode.

A read-only endpoint needs no install and no key. With an `fhk_…` key from the account you also get application tracking, notes and stages, plus CV tailoring. The token resolves from `FREEHIRE_TOKEN`, otherwise the server reads `~/.freehire/creds.json`, the same file the CLI uses. It never writes that file: signing in stays with the CLI.

\`region`, `country` and `city` behave as a single OR group, so `region: ["eu"]` plus `country: ["IT"]` returns Europe and Italy together. A misspelled filter does not fail the query, it widens it, and the key shows up in `ignored`. Without a token the tools answer with an auth error, while the server itself still starts. Any claim in a CV must point at an `evidence_id` from `experience_list`, or `cv_edit` rejects the edit.

## Requirements
- Needs: Node.js (commands run via npx)
- Remote server: `https://freehire.me/api/v1/mcp`
- Environment variables: `FREEHIRE_TOKEN`, `FREEHIRE_API_URL` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

1. **Platform CLI: remote server**
```bash
claude mcp add --transport http freehire https://freehire.me/api/v1/mcp
```

2. **Platform CLI**
```bash
claude mcp add --env FREEHIRE_TOKEN=<FREEHIRE_TOKEN> --env FREEHIRE_API_URL=<FREEHIRE_API_URL> --transport stdio freehire -- npx -y freehire-mcp
```
Replace <…> with your own values

### Codex

1. **Platform CLI: remote server**
```bash
codex mcp add freehire --url https://freehire.me/api/v1/mcp
```

2. **Platform CLI**
```bash
codex mcp add freehire --env FREEHIRE_TOKEN=<FREEHIRE_TOKEN> --env FREEHIRE_API_URL=<FREEHIRE_API_URL> -- npx -y freehire-mcp
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "freehire": {
            "url": "https://freehire.me/api/v1/mcp"
        }
    }
}
```
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "freehire": {
            "command": "npx",
            "args": [
                "-y",
                "freehire-mcp"
            ],
            "env": {
                "FREEHIRE_TOKEN": "<FREEHIRE_TOKEN>",
                "FREEHIRE_API_URL": "<FREEHIRE_API_URL>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "freehire": {
            "type": "http",
            "url": "https://freehire.me/api/v1/mcp"
        }
    }
}
```
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "freehire": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "freehire-mcp"
            ],
            "env": {
                "FREEHIRE_TOKEN": "<FREEHIRE_TOKEN>",
                "FREEHIRE_API_URL": "<FREEHIRE_API_URL>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

1. **Platform CLI: remote server**
```bash
gemini mcp add -t http freehire https://freehire.me/api/v1/mcp
```

2. **Platform CLI**
```bash
gemini mcp add -e FREEHIRE_TOKEN=<FREEHIRE_TOKEN> -e FREEHIRE_API_URL=<FREEHIRE_API_URL> freehire npx -y freehire-mcp
```
Replace <…> with your own values

## When to use it
- find roles by stack, seniority and work mode
- score a skill set against live demand
- rewrite a CV for a specific vacancy
- keep stages and notes for each application
- render a tailored CV as a PDF

## Example prompts
- List the skill facets, then find Python roles in Europe.
- Score my stack — Python, PostgreSQL, Kubernetes — where do I have gaps?
- Start tailoring my CV for that vacancy and show the gaps to close.

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
