Skip to main content
Glama

JobGPT MCP Server

The official MCP server for JobGPT — auto apply & search jobs, generate and manage custom tailored resumes, and track applications directly from Claude, Cursor, Windsurf, and any MCP-compatible AI tool.

What You Can Do

Ask your AI assistant things like:

  • "Find remote senior React jobs paying over $150k"

  • "Auto-apply to the top 5 matches from my job hunt"

  • "Generate a tailored resume for this Google application"

  • "Apply to this job for me - <job_url from company website, greenhouse workday or linkedin, etc>"

  • "Show my application stats for the last 7 days"

  • "Find recruiters for this job and draft an outreach email"

The MCP server connects your AI assistant to the full JobGPT platform — 34 tools covering job search, applications, resumes, outreach, and more.

Related MCP server: Shortlist MCP Server

Quick Start

There are two ways to connect, depending on your AI tool:

  • Browser login (recommended) — no API key, no JSON, no Node.js. Just add the server URL and sign in to 6figr in your browser. Works with Claude Desktop, Claude Code, Codex CLI (codex mcp login), and ChatGPT Web (Developer Mode).

  • API key — for the ChatGPT Desktop app, Cursor, Windsurf, Cline, Continue, and manual config. Paste a key into the tool's config.

Get an API Key (only for the API-key method)

  1. Go to 6figr.com/account

  2. Scroll to MCP Integrations

  3. Click Generate API Key

  4. Copy the key (starts with sk_)

The browser-login method does not need this — it fetches your key for you after you sign in.


Setup by Client

Claude Desktop

Recommended — browser login (no API key, no JSON):

  1. Open Settings → Connectors → Add custom connector

  2. Name it JobGPT and enter the URL https://mcp.6figr.com/mcp

  3. Click Connect — your browser opens a 6figr sign-in page

  4. Sign in and click Approve. Done — the JobGPT tools appear in Claude.

No terminal, no config file, no Node.js. This uses OAuth, so your API key never touches Claude's config — Claude gets a scoped token instead.

Alternative — API key via mcp-remote (for older Claude Desktop builds that don't show Connectors; requires Node.js 18+):

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "jobgpt": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.6figr.com/mcp",
        "--header",
        "Authorization:${AUTH_HEADER}"
      ],
      "env": {
        "AUTH_HEADER": "Bearer your-api-key-here"
      }
    }
  }
}

Claude Code (CLI)

Recommended — browser login (no API key): add the server, then authenticate in your browser:

claude mcp add jobgpt -t http -u https://mcp.6figr.com/mcp

Then run /mcp inside Claude Code, select jobgpt → Connect, and sign in to 6figr when the browser opens. Claude Code stores a scoped OAuth token — no API key needed.

Option A: One-liner with an API key (claude mcp add):

claude mcp add jobgpt -t http -u https://mcp.6figr.com/mcp --header "Authorization: your-api-key-here"

Option B: Edit settings.json manually

Add to ~/.claude/settings.json:

{
  "mcpServers": {
    "jobgpt": {
      "type": "http",
      "url": "https://mcp.6figr.com/mcp",
      "headers": {
        "Authorization": "your-api-key-here"
      }
    }
  }
}

Codex CLI (ChatGPT)

Recommended — browser login (no API key): add the server, then authenticate in your browser:

codex mcp add jobgpt --url https://mcp.6figr.com/mcp
codex mcp login jobgpt

codex mcp login opens a browser to sign in to 6figr and approve access; Codex stores a scoped OAuth token (OAuth 2.1 + PKCE). No API key needed.

Alternative — API key via header:

codex mcp add jobgpt --url https://mcp.6figr.com/mcp --header "Authorization: Bearer your-api-key-here"

ChatGPT

ChatGPT connects two different ways depending on where you add the server:

ChatGPT Desktop app — API key. Open Settings → Connectors → Advanced/Developer → Connect to a custom MCP and fill in:

  • Name: JobGPT

  • Type: Streamable HTTP

  • URL: https://mcp.6figr.com/mcp

  • Headers → Add header: Key Authorization, Value Bearer your-api-key-here

The desktop dialog authenticates by header (there's no browser-login button), so use your sk_ key here. Leave the env-var fields blank.

ChatGPT Web (Developer Mode) — browser login (OAuth). On the web app, enable Settings → Connectors → Advanced → Developer mode, then Add custom connector, name it JobGPT, and enter the URL https://mcp.6figr.com/mcp. ChatGPT runs the OAuth flow: sign in to 6figr in the popup and approve. No API key needed. (Developer mode is available on Plus, Pro, Business, Enterprise, and Edu plans.)

Cursor

Go to Settings > MCP > Add new MCP server, or add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "jobgpt": {
      "type": "http",
      "url": "https://mcp.6figr.com/mcp",
      "headers": {
        "Authorization": "your-api-key-here"
      }
    }
  }
}

Windsurf

Go to Settings > Cascade > MCP > Add Server > Add custom server, or add to ~/.codeium/windsurf/mcp_config.json:

{
  "mcpServers": {
    "jobgpt": {
      "type": "http",
      "url": "https://mcp.6figr.com/mcp",
      "headers": {
        "Authorization": "your-api-key-here"
      }
    }
  }
}

Cline (VS Code)

Open the Cline MCP settings in VS Code and add:

{
  "mcpServers": {
    "jobgpt": {
      "type": "http",
      "url": "https://mcp.6figr.com/mcp",
      "headers": {
        "Authorization": "your-api-key-here"
      }
    }
  }
}

Continue (VS Code / JetBrains)

Add to your Continue config (~/.continue/config.yaml):

mcpServers:
  - name: jobgpt
    type: http
    url: https://mcp.6figr.com/mcp
    headers:
      Authorization: "your-api-key-here"

Alternative: Run Locally

If you prefer to run the server on your machine (requires Node.js 18+):

{
  "mcpServers": {
    "jobgpt": {
      "command": "npx",
      "args": ["-y", "jobgpt-mcp-server"],
      "env": {
        "JOBGPT_API_KEY": "your-api-key-here"
      }
    }
  }
}

Available Tools

Tool

Description

search_jobs

Search jobs with filters — titles, locations, companies, skills, salary, remote, H1B sponsorship

match_jobs

Get new job matches from a saved job hunt (only unseen jobs)

get_job

Get full details of a specific job posting

Profile & Salary

Tool

Description

get_profile

View your profile — skills, experience, work history, education, work authorization, notice period

update_profile

Update name, headline, location, skills, experience

get_salary

Get your current compensation details

update_salary

Update base salary, stocks, bonus, target salary

get_currencies

List supported currencies (for salary updates)

get_credits

Check your remaining credits balance

Job Hunts

Tool

Description

list_job_hunts

List your job hunts (active, archived, or all) with optional per-hunt application counts and your credits balance

create_job_hunt

Create a new job hunt with search filters and auto-apply settings

get_job_hunt

Get details of a specific job hunt

update_job_hunt

Update filters (merged into the saved ones), auto-apply mode, daily limits, status

Applications

Tool

Description

get_application_stats

Aggregated stats — counts by status, auto-apply metrics

list_applications

List applications filtered by job hunt, status, or a company/title search

get_application

Get full application details

update_application

Update status or notes

apply_to_job

Trigger auto-apply for an application

add_job_to_applications

Save a job from search results to your applications

import_job_by_url

Import a job from any URL (LinkedIn, Greenhouse, Lever, Workday, etc.)

Resume

Tool

Description

list_resumes

List your uploaded resumes

get_resume

Get resume details and download URL

delete_resume

Delete an alternate resume

upload_resume

Upload a resume from URL (PDF, DOC, DOCX)

list_generated_resumes

List AI-tailored resumes created for applications

get_generated_resume

Get a generated resume's download URL

generate_resume_for_job

Tailor your resume for one job (a saved application or a job ID from search) with your own asks, keywords and sections; optional downloadable PDF

calculate_match_score

Calculate resume-to-job match score with skill analysis

Outreach

Tool

Description

get_job_recruiters

Find recruiters associated with a job

get_job_referrers

Find potential referrers at a company

get_application_recruiters

Get recruiters for a saved application

get_application_referrers

Find referrers for a saved application

list_outreaches

List your sent outreach emails

send_outreach

Send an outreach email to a recruiter or referrer, for a saved application or straight from a job ID


Environment Variables

Variable

Required

Default

Description

JOBGPT_API_KEY

Yes

—

Your API key from 6figr.com/account

JOBGPT_API_URL

No

https://6figr.com

API base URL

DEBUG

No

false

Enable debug logging to stderr

Troubleshooting

"JOBGPT_API_KEY environment variable is required"

Your API key isn't being passed to the server. Make sure it's in the env block of your MCP config.

Tool calls failing with "API Error (401)"

Your API key is invalid or expired. Generate a new one at 6figr.com/account.

"You have run out of credits"

Some operations (auto-apply, resume generation) consume credits. Purchase more at 6figr.com/jobgpt.

Server not appearing in your AI tool

  1. Make sure Node.js 18+ is installed (node --version)

  2. Restart your AI tool after editing the config file

  3. Try running manually to check for errors: JOBGPT_API_KEY=your-key npx jobgpt-mcp-server

Debug mode

Add "DEBUG": "true" to your env config to see detailed API request/response logs in stderr.

Development

git clone https://github.com/6figr-com/jobgpt-mcp-server.git
cd jobgpt-mcp-server
npm install
cp .env.example .env   # add your API key

npm run dev:local       # run stdio server locally
npm run build           # compile TypeScript
npm run dev:worker      # run Cloudflare Worker locally
npm run deploy          # deploy to Cloudflare Workers

Testing with MCP Inspector

npx @modelcontextprotocol/inspector

License

MIT

Available Tools

35 tools
add_job_to_applicationsA

Add a job from search results to your applications. Use this when a user wants to save/track a job they found.

Inputs: jobId (required), jobHuntId (required).

apply_to_jobA

Trigger auto-apply for a job application. This will automatically fill and submit the job application form. You can optionally specify a specific resume to use for this application.

Inputs: id (required), resumeUri.

create_job_huntB

Create a new job hunt to start tracking and applying to jobs. A job hunt defines what jobs you want to find based on titles, locations, skills, salary, etc. You need at least one job hunt to use match_jobs or add_job_to_applications.

Inputs: name (required), config (required), autoMode, dailyLimit, +2 more.

delete_resumeA

Delete an uploaded resume from your profile. Note: You cannot delete your primary resume, only alternate resumes.

Inputs: id (required).

generate_resume_for_jobA

Generate an AI-optimized resume tailored for a specific job application. This creates a customized version of your resume highlighting relevant skills and experience for the job. Returns JSON resume data.

Inputs: applicationId (required), modifications, keywords, sections, +1 more.

get_applicationA

Get details of a specific job application by ID. Optionally include the full job listing (description, salary, skills, etc.).

Inputs: id (required), includeJobListing.

get_application_recruitersA

Get recruiters for a job application you have saved. Returns contact info for reaching out.

Inputs: applicationId (required).

get_application_referrersA

Find potential referrers for a job application. Returns people at the company who might refer you.

Inputs: applicationId (required), limit.

get_application_statsA

Get aggregated stats for your job applications — total counts by status and auto-apply metrics. Much faster than paginating through list_applications.

Inputs: jobHuntId, dateOffset.

get_creditsA

Get your current credit balance and usage information

Inputs: no named parameters.

get_currenciesA

Get the list of supported currencies with their codes, symbols, and units. Use this to look up the correct currency code before updating salary.

Inputs: no named parameters.

get_generated_resumeA

Get details of a specific AI-generated resume including the download URL.

Inputs: id (required).

get_industriesA

Get the list of valid company industries. Use these values for the "industries" filter in search_jobs, create_job_hunt, or update_job_hunt.

Inputs: no named parameters.

get_jobA

Get detailed information about a specific job listing/posting by its job listing ID (not application ID). Use this to view the full job posting details including description, salary, skills, and company info. For job application details, use get_application instead.

Inputs: id (required).

get_job_huntA

Get details of a specific job hunt by ID

Inputs: id (required).

get_job_recruitersA

Get recruiters who posted or are associated with a specific job. Returns contact info including email and LinkedIn.

Inputs: jobId (required).

get_job_referrersB

Find potential referrers at a company for a specific job. Returns people who might be able to refer you based on your network and the job.

Inputs: jobId (required), limit.

get_profileA

Get your user profile including personal info, skills, experience, and work history

Inputs: no named parameters.

get_resumeB

Get details of a specific uploaded resume including download URL.

Inputs: id (required), includeRawTxt.

get_salaryA

Get your current salary/compensation details including base, stocks, bonus, and total compensation

Inputs: no named parameters.

import_job_by_urlA

Import a job from a URL (e.g., LinkedIn, Greenhouse, Lever, Workday) and add it to your applications. Optionally trigger auto-apply immediately. Use this when a user has a direct link to a job posting.

Inputs: url (required), jobHuntId (required), autoApply.

list_applicationsB

List your job applications, optionally filtered by job hunt or status

Inputs: jobHuntId, status, page, limit.

list_generated_resumesA

List AI-generated custom resumes. These are resumes that were automatically tailored for specific job applications.

Inputs: jobApplicationId, manualTrigger.

list_interviewsA

List job interviews that are being actively tracked by JobGPT (detected from email confirmations). Use upcoming=true to get scheduled/rescheduled interviews. Can also filter by application ID or status.

Inputs: jobApplicationId, status, upcoming, page, +1 more.

list_job_huntsA

List your saved job hunts (job searches). Also returns your current credits balance.

Inputs: page, limit.

list_outreachesA

List your outreach emails that have been sent to recruiters and referrers.

Inputs: jobApplicationId, page, limit.

list_resumesA

List your uploaded resumes. Returns all resumes you have uploaded to your profile, including your primary resume and any alternate versions.

Inputs: includeRawTxt.

match_jobsA

Get new job matches based on a saved job hunt configuration. Uses the filters saved in your job hunt (titles, locations, skills, salary, etc.) and only returns jobs you have not already seen, applied to, or rejected. To change filters, use update_job_hunt first.

Inputs: jobHuntId (required), limit, page.

search_jobsC

Search for jobs with filters like titles, locations, companies, skills, salary, and remote options. Returns a list of matching job postings.

Inputs: titles, locations, countries, companies, +12 more.

send_outreachA

Send an outreach email to a recruiter or referrer for a job application. The email will be sent from your configured email.

Inputs: applicationId (required), contactId (required), subject (required), body (required).

update_applicationA

Update a job application status or notes

Inputs: id (required), status, notes.

update_job_huntA

Update job hunt settings and search filters. Use this to change what jobs are matched. IMPORTANT: When updating config, you must pass the ENTIRE config object as it replaces the existing config (not a partial merge). Use get_job_hunt first to see current config, then include all fields you want to keep.

Inputs: id (required), name, autoMode, dailyLimit, +4 more.

update_profileC

Update your user profile fields

Inputs: fullName, headline, location, skills, +1 more.

update_salaryC

Update your salary/compensation details

Inputs: currency, base, stocks, bonus, +2 more.

upload_resumeA

Upload a resume as base64 file content. Supported formats: PDF, DOC, DOCX. Maximum file size: 5MB. Read the file from the user's machine and pass the base64-encoded content. By default, your profile will be synced with the resume content. Use isAltResume to upload as an alternate resume instead of replacing your primary.

Inputs: fileContent (required), fileName (required), syncProfile, isAltResume.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 35 tools

    Disambiguation3/5

    The tools have clear purposes individually, but there is notable overlap that could cause confusion. For example, get_application and get_job both retrieve job details but for different contexts (application vs listing), and get_job_recruiters/get_application_recruiters are similarly differentiated by context. Tools like list_applications and get_application_stats provide overlapping data on applications, though descriptions clarify their distinct use cases.

    Naming Consistency5/5

    Tool names follow a highly consistent verb_noun pattern throughout, with clear actions like get, list, update, create, delete, etc. All names use snake_case uniformly, making them predictable and easy to parse. Minor variations like import_job_by_url still adhere to the overall convention.

    Tool Count2/5

    With 35 tools, the count is excessive for the domain of job hunting and applications. Many tools could be consolidated or omitted without losing functionality, such as separating get_application_recruiters and get_job_recruiters. This large set may overwhelm agents and increase complexity unnecessarily.

    Completeness5/5

    The tool set provides comprehensive coverage for the job hunting domain, including CRUD operations for applications, job hunts, resumes, and profiles, plus advanced features like auto-apply, outreach, and AI-generated resumes. There are no obvious gaps; agents can manage the entire job search lifecycle from discovery to follow-up.

    Maintenance

    ActivityMaintained
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers