workopia avatar

Workopia — Job Search

workopia/workopia-mcp

Connects Claude to Workopia's global job database via streamable HTTP with OAuth 2.0 sign-in. You get five tools: search millions of live jobs from 90+ countries (Lever, Greenhouse, Workday feeds plus employer career pages), pull full job details with salary and requirements, tailor your resume to a specific posting, generate cover letters, and open your application dashboard. Resume tailoring and cover letter generation run on your own AI client's model, so Workopia never charges for inference. Free to use at launch. Install it as a Claude Code plugin or drop the endpoint into your MCP config for Claude Desktop, Cursor, or Windsurf.

GitHub stars
312
tools
5
transport
HTTP
last updated
Jun 15, 2026

Install

From registry metadata
$ npx add-mcp https://workopia.io/api/mcp-jobs --name workopia

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http workopia https://workopia.io/api/mcp-jobs

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 5 tools

Verified live against the running server on Nov 6, 2026.

tailor_resume_toolTailor a resume to a SPECIFIC job — TWO steps. STEP 1 (default; action omitted or 'prepare'): the server returns the job's full JD, its must-have skills/requirements, and the candidate's current resume, plus tailoring instructions. YOU (the model) then WRITE the tailored resum...15 params

Tailor a resume to a SPECIFIC job — TWO steps. STEP 1 (default; action omitted or 'prepare'): the server returns the job's full JD, its must-have skills/requirements, and the candidate's current resume, plus tailoring instructions. YOU (the model) then WRITE the tailored resum...

Parameters* required
actionstring
Omit or 'prepare' = STEP 1 (server returns JD + resume + instructions for you to tailor). 'save' = STEP 2 (pass tailored_resume; server renders a PDF and saves it to the dashboard; requires sign-in).one of prepare · save
companystring
customization_levelstring
one of light · moderate · heavy
job_descriptionstring
Full JD text when the user pastes it directly (alternative to job_id).
job_idstring
ID of a job from a prior search/refine result. Use the **Job Id** value from the prior search result's content text VERBATIM. Server fetches full JD from Mongo.
job_titlestring
parametersobject
resume_contentstring
resume_dataobject
PREFERRED shape — structured resume per utils/tailor/types.ts ResumeTree. Server, widget, and main-site PDF template all consume this exact shape. Collect these fields from the user before calling...
resume_textstring
User's resume content (plain text or JSON Resume as string). Fallback when resume_data is not provided.
session_idstring
tailor_resumeobject
Optional wrapper containing the same fields above (legacy shape).
tailored_resumeobject
STEP 2 only: the tailored resume you generated, as a JSON Resume object (or a JSON string). The server renders it to PDF and stores it on profile.applications[job_id].resumeTailor.
user_emailstring
user_profileobject
Optional main-site profile object; used as a fallback source for name/title/contact/experience when resume_data and resume_text are both absent.
cover_letter_toolWrite a cover letter for a SPECIFIC job — TWO steps. STEP 1 (default; action omitted or 'prepare'): the server returns the job's JD and the candidate's background, plus writing instructions. YOU (the model) then WRITE the cover letter (250–350 words, specific to the role, mapp...14 params

Write a cover letter for a SPECIFIC job — TWO steps. STEP 1 (default; action omitted or 'prepare'): the server returns the job's JD and the candidate's background, plus writing instructions. YOU (the model) then WRITE the cover letter (250–350 words, specific to the role, mapp...

Parameters* required
actionstring
Omit or 'prepare' = STEP 1 (server returns JD + background + instructions for you to write). 'save' = STEP 2 (pass cover_letter_text; server renders a PDF and saves it to the dashboard; requires si...one of prepare · save
companystring
Optional; used in the confirmation line.
cover_letterobject
Optional wrapper containing the same fields above (legacy shape).
cover_letter_textstring
STEP 2 only: the cover letter you wrote (plain text). The server renders it to PDF and stores it on profile.applications[job_id].coverLetter.
job_descriptionstring
Full JD text when the user pastes it directly (alternative to job_id).
job_idstring
ID of a job from a prior search/refine result. Use the **Job Id** value from the prior search result's content text VERBATIM. Server fetches full JD from Mongo.
job_titlestring
Optional; used in the 'for <role> at <company>' confirmation line.
json_resumeobject
Optional JSON Resume object (basics/work/skills). Takes precedence over resume_text when both present.
parametersobject
resume_contentstring
resume_textstring
User's resume content (plain text or JSON Resume as string).
session_idstring
user_emailstring
If provided, server fetches the full Workopia profile for the cover letter header + writes the generated cover letter back to profile.applications[jobId].coverLetter.
user_profileobject
Optional main-site profile object; used as a fallback source for summary/skills/experience and for the cover letter header (firstName, lastName, email, phone, city, country).
job_toolSearch jobs across 90+ countries by title, location, salary, remote/hybrid work mode, or employment type. Find roles in tech, finance, product, design, marketing, and every other vertical — aggregated from 1000+ ATS sources globally. Default action is search; use refine when t...5 params

Search jobs across 90+ countries by title, location, salary, remote/hybrid work mode, or employment type. Find roles in tech, finance, product, design, marketing, and every other vertical — aggregated from 1000+ ATS sources globally. Default action is search; use refine when t...

Parameters* required
actionstring
Optional; omitted = search. refine = after results/feedback; save = bookmark a job for the signed-in user.one of search · refine · save
parametersobject
refine_recommendationsobject
Refine args. Pass exclude_ids (array of Job Id strings from prior result) and session_id always. For 'more like #N': pass liked_indexes=[N] or liked_job_ids=[<Job Id>]. For 'less like #N': pass dis...
save_jobobject
Save args. Required: job_id (from job_cards[].card.id in a prior search result). Optional: job_title, company, job_url.
search_jobsobject
Search args. Required: city. Optional filters surface only when the user explicitly mentions them — omit otherwise. job_title+city uses indexed snapshot; company+city (optional job_title) uses lega...
job_detail_toolRender the full job-detail card for a specific job the user asks about. Use this whenever the user references a particular job from a prior search result — by number (#1, '1', 'first', 'the 3rd one', 'job 3'), by company name (partial or full, e.g. 'Morgan Stanley', 'Morstan')...4 params

Render the full job-detail card for a specific job the user asks about. Use this whenever the user references a particular job from a prior search result — by number (#1, '1', 'first', 'the 3rd one', 'job 3'), by company name (partial or full, e.g. 'Morgan Stanley', 'Morstan')...

Parameters* required
get_job_detailobject
job_idstring
The id from a prior search result's job_cards[].card.id. Required.
parametersobject
user_emailstring
dashboard_toolShow the signed-in user's Workopia dashboard (saved, tailored, and applied jobs + latest resume). Requires OAuth. Default action is list; optional status_filter (all | saved | tailored | applied). Use whenever the user asks to recall their Workopia activity: 'my applications',...2 params

Show the signed-in user's Workopia dashboard (saved, tailored, and applied jobs + latest resume). Requires OAuth. Default action is list; optional status_filter (all | saved | tailored | applied). Use whenever the user asks to recall their Workopia activity: 'my applications',...

Parameters* required
actionstring
one of list
status_filterstring
one of all · saved · tailored · applied

Sponsors

Readme

Workopia MCP Server

Job search, resume tailoring, cover letters & application tracking — available via the Model Context Protocol for Claude Code, Claude Desktop, Cursor, Windsurf, and other MCP clients.

Note: This is a hosted MCP server. Connect via the public endpoint below and sign in with Workopia (OAuth) — no API key to manage. All tools require a free Workopia sign-in; searching, job detail, resume tailoring, cover letters, and your dashboard are all scoped to your account. Resume tailoring and cover letters run on your own AI client's model — Workopia hosts no LLM and never charges for AI.

Endpoint

https://workopia.io/api/mcp-jobs
  • Transport: Streamable HTTP
  • Auth: OAuth 2.0 (Dynamic Client Registration + PKCE; handled automatically by the client)
  • Website: https://workopia.io

Install as a Claude Code plugin

/plugin marketplace add workopia/workopia-mcp
/plugin install workopia-jobs

On first tool use, Claude Code opens the Workopia OAuth flow in your browser; the token is then stored and refreshed automatically.

Sign up and sign in


View the full README on GitHub

Details

Repository
github.com/workopia/workopia-mcp
Category
Search & Web Crawling
Transport
HTTP
Registry
MCP registry, active
Tools verified
Nov 6, 2026

Related Search & Web Crawling MCP servers

View all
1aayoawoyemi avatarOri Memoryaayoawoyemi/ori-mnemosPersistent memory infrastructure for AI agents. Identity, knowledge graph, and search.0stars
2jsonallen avatarPerplexityjsonallen/perplexity-mcpA Model Context Protocol (MCP) server that provides web search functionality using Perplexity AI&#x27;s API.300stars
3burningion avatarVideo Editing Mcpburningion/video-editing-mcpMCP Server for Video Jungle - Analyze, Search, Generate, and Edit Videos273stars
4orneryd avatarMimirorneryd/mimirProvides a persistent graph-based memory and task management for AI agents with MCP API access and semantic search.273stars
5nirholas avatarthree.ws Loomnirholas/three.wsBrowse the community 3D-creation gallery, fetch a creation with its viewer URL, and submit it.269stars
6mixelpixx avatarNimrodmixelpixx/nimrodWeb search with quality scores; web pages are read on your computer by the local server.260stars