Workopia — Job Search

io.github.workopia由 GitHub 帳號 workopia 發布v1.0.2更新於 Oct 25, 2026

Search 6.3M+ live jobs from companies' own career pages, plus resume tailoring & cover letters.

已驗證Streamable HTTP可網頁執行效率與工作流AI 與機器學習

概覽

AI 產生的概覽

Workopia 是託管式求職 MCP 伺服器,讓助理搜尋即時職缺、查看職缺詳情、客製履歷與撰寫求職信,並檢視你的求職儀表板。

可以做什麼
依職稱、地點、薪資、工作模式或僱用類型搜尋 90 多個國家的即時職缺,可細化結果或將職缺儲存到帳戶。為指定職缺(依編號、公司或職稱引用)顯示完整職缺詳情卡片。執行兩步驟履歷客製:伺服器回傳職缺描述、必備技能與目前履歷,再由助理撰寫客製履歷。執行類似的兩步驟求職信流程,由助理依職缺描述與個人背景撰寫求職信。檢視已儲存、已客製與已投遞職缺及最新履歷的儀表板,可依狀態篩選。
適用情境
適合積極求職時使用:跨多個國家與雇主尋找職缺、比較某個具體職缺,並針對該職缺產出客製履歷或求職信,同時把儲存的活動集中在一個儀表板。
執行需求
遠端 Streamable HTTP 端點,不需本機套件或 API 金鑰。所有工具都需要透過 OAuth 2.0(授權碼加 PKCE 與動態用戶端註冊)免費登入 Workopia,由 MCP 用戶端處理並儲存、更新權杖。可透過電子郵件驗證碼、Google、LinkedIn 或 GitHub 登入。
安裝前請注意
需要 Workopia 帳戶與 OAuth 登入,用戶端會保存權杖直到你中斷連線。搜尋、檢視職缺、儲存職缺、投遞、履歷操作與求職信等已驗證動作可能與你的 Workopia 個人資料關聯,並記錄整合類型與用戶端類型。履歷內容依 Workopia 隱私政策處理。履歷客製與求職信由你自己的 AI 用戶端模型產生。切勿將密碼、電子郵件驗證碼、權杖或履歷貼到公開儲存庫或問題中。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Workopia — Job Search,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。

交給代理程式安裝

把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。

閱讀 https://sourceweft.com/mcp/io.github.workopia%2Fworkopia-mcp/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。

檢視代理程式所依據的安裝指南

其他 MCP 客戶端

把它新增到你客戶端的 mcpServers 設定中。

{
  "mcpServers": {
    "workopia-job-search": {
      "type": "http",
      "url": "https://workopia.io/api/mcp-jobs"
    }
  }
}

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

There is no separate GitHub-repository account and no API key to create. The first time an MCP client calls a Workopia tool, it opens the Workopia authorization page in your browser. Sign in with an email code, Google, LinkedIn, or GitHub.

  • If that verified email already has a Workopia profile, the MCP connection uses it.
  • Otherwise Workopia creates a minimal profile for that verified email.
  • The MCP client stores and refreshes its OAuth token. Disconnect or remove Workopia in the client to revoke its local connection.
  • Using the same verified email from another supported client connects activity to the same Workopia profile; it does not create a separate MCP-only account.

OAuth uses Authorization Code + PKCE and Dynamic Client Registration. Never paste a Workopia password, email code, OAuth token, or resume into this repository or a GitHub issue.

Tools

ToolWhat it does
job_toolSearch millions of live jobs across 90+ countries (employer career pages + ATS feeds — Lever, Greenhouse, Workday). Save a job to your account (sign-in).
job_detail_toolFull detail for a single job — salary, requirements, skills, company.
tailor_resume_toolTailor your resume to a specific job description.
cover_letter_toolDraft a cover letter for a specific role.
dashboard_toolOpen your Workopia dashboard — saved, tailored & applied jobs + latest resume (sign-in).

Quick start (manual config)

Claude Desktop — add to claude_desktop_config.json:

json
{  "mcpServers": {    "workopia": {      "type": "streamable-http",      "url": "https://workopia.io/api/mcp-jobs"    }  }}

Cursor — .cursor/mcp.json:

json
{  "mcpServers": {    "workopia": { "url": "https://workopia.io/api/mcp-jobs" }  }}

ChatGPT — search "Workopia" in the ChatGPT App Store.

Also listed on

Live on Glama

[workopia-mcp MCP server]

Quota

Free at launch. A free Workopia sign-in (OAuth) is required to use the tools — searching, job detail, resume tailoring, cover letters, and your dashboard. Need a higher quota or a custom arrangement? Email [email protected].

Account activity and privacy

Authenticated tool actions such as job searches, job views, saved jobs, applications, resume operations, and cover-letter creation may be associated with your Workopia profile so your dashboard and history work across supported MCP clients. Workopia records the integration family (for example MCP) and, when the OAuth client identifies itself, the client type (for example Codex, Claude Code, Cursor, or Windsurf).

Conversation transcripts are not collected by this MCP server. Activity records do not contain OAuth tokens or raw resume text. Resume content needed for a requested resume operation is handled under the Workopia privacy policy linked below.

Report a bug / request a feature

Found something broken or want a tool improved? Open an issue — this repo is where we track bugs and feedback for the Workopia MCP server and Claude Code plugin. For account, billing, or anything private, email [email protected].

About

Built by HERAAI PTY LLC. Privacy policy: https://workopia.io/privacy

來源:README.md,提交 252128e

工具

5

tailor_resume_tool

Tailor Resume to Job

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 resume as JSON Resume, following the instructions — weave JD keywords into existing bullets only where the candidate genuinely has the experience, never fabricate experience/titles/dates/employers, keep all dates and company names, and flag any keyword you couldn't honestly add. STEP 2: call this tool again with action:'save', tailored_resume:<your JSON Resume>, and job_id — the server renders a PDF and saves it to the candidate's Workopia dashboard (requires sign-in). Use whenever the user references a specific job to tailor for: 'tailor for #1', 'for Morgan Stanley', 'tailor my resume for this role: <JD>'. Resolving job_id (same rules as job_detail_tool): from the most recent prior search/refine result — (a) numeric/ordinal → the Nth job; (b) company name → Company-field match; (c) role/title phrase → Job-Title match — then pass that job's **Job Id** value VERBATIM. Do NOT use placeholders like 'JOB_1' or '#1'. For STEP 1 supply ONE of job_id (preferred — server fetches the JD from Mongo) OR job_description, plus the candidate's resume via resume_text / resume_content / resume_data. For general 'improve my resume' (no specific job), do NOT call this tool — call resume_tool action=improve instead. Note: the tailored resume is written by your AI client's own model — the assistant you are already using — so it works out of the box with nothing to configure; Workopia runs no LLM of its own and never charges for the AI.

輸入參數actionjob_idcompanyjob_titleparameterssession_iduser_emailresume_dataresume_textuser_profiletailor_resumeresume_content另有 3 個

cover_letter_tool

Cover Letter

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, mapping the candidate's real achievements to the JD — never fabricate). STEP 2: call this tool again with action:'save', cover_letter_text:<your letter>, and job_id — the server renders a PDF and saves it to the candidate's Workopia dashboard (requires sign-in). Use whenever the user asks for a cover letter for a specific job. Resolving job_id (same rules as tailor_resume_tool / job_detail_tool): pass the **Job Id** value from the most recent prior search/refine result VERBATIM; no placeholders like 'JOB_1' or '#1'. For STEP 1 supply ONE of job_id (preferred — server fetches the JD from Mongo) OR job_description, plus the candidate's resume via resume_text / resume_content / json_resume / user_profile.

輸入參數actionjob_idcompanyjob_titleparameterssession_iduser_emailjson_resumeresume_textcover_letteruser_profileresume_content另有 2 個

job_tool

Job Search

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 the user asks for more matches or gives feedback on a prior result set; use save to bookmark a job for the signed-in user (requires OAuth). REFINE PROTOCOL (action=refine has THREE distinct modes): (1) Pure continuation / 'show me more' / 'next batch' / 'another set' / 'more like these': pass refine_recommendations.exclude_ids = the full array of **Job Id** values from the most recent search/refine result's content text (verbatim) + refine_recommendations.session_id = prior response's session_id if present. Server returns next 10 unique jobs. (2) 'Show me more like #N' / 'similar to the Atlassian one' / 'jobs like #2': pass refine_recommendations.liked_indexes = [N] (1-based position from prior numbered list) + exclude_ids + session_id. Equivalently you may pass refine_recommendations.liked_job_ids = [<that job's **Job Id** value verbatim>]. Server seeds the recommendation from that job's title/skills/company profile. (3) 'Less like #N' / 'no more N-style jobs' / 'avoid jobs like that': pass refine_recommendations.disliked_indexes = [N] (or disliked_job_ids = [<Job Id>]) + exclude_ids + session_id. Server suppresses similar jobs. All three modes: if you skip exclude_ids, the user sees duplicates — that's a failure. The handler layers exclude_ids with server-side AgentKit memory, so partial lists still work. NEVER invent 'JOB_1' / '#1' as job_id values — always use the real **Job Id** string from the prior result's content text. For detail requests (user asks about a specific job from the list, e.g. 'details for #1', 'show me this job', 'tell me more about <company>'), DO NOT call this tool — call job_detail_tool instead. That separate tool binds to the job-detail widget card so the full job card

輸入參數actionsave_jobparameterssearch_jobsrefine_recommendations

job_detail_tool

Job Detail

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'), by role/title phrase ('the analyst role', 'the credit risk one'), or by any 'show me this job' / 'tell me more about X' / 'view this role' style request. Resolving job_id from user reference: identify the right job from the most recent prior search/refine result (the numbered list you generated): (a) numeric/ordinal → the Nth job; (b) company name → substring match on Company field; (c) role/title phrase → substring match on Job Title field. Then pass that job's **Job Id** value from the prior search result's content text VERBATIM as job_id. Do NOT use a placeholder like 'JOB_1', '#1', or any synthetic id — only the real **Job Id** string from the prior result is server-valid. Required: job_id. OUTPUT BEHAVIOR: Render the response as a structured markdown card with the job's title (linked to the apply URL), company, location, salary, employment type, work mode, must-have skills, key requirements, highlights, and summary. Follow it with a brief next-step hint (e.g. 'Want to save it, find similar roles, ask about the company, or tailor your resume for this role?').

輸入參數job_idparametersuser_emailget_job_detail

dashboard_tool

Dashboard

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', 'what jobs have I saved / applied to / tailored', 'show my dashboard', 'where did I leave off'. Returns a secure link to open the full dashboard on the web.

輸入參數actionstatus_filter

版本歷史

1
  1. v1.0.2最新Sep 16, 2026

評分

已滿足適用檢查項的 100%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通必需25 分
  • 已宣告認證方式必需10 分
  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分