Skip to main content
Glama
juanzjck

jobfinder-mcp

by juanzjck

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
JOBFINDER_DBNoSQLite file for saved jobs~/.jobfinder/jobs.db
JOBFINDER_FEEDNoJSON file for the local source
JOBFINDER_HOMENoBase directory for resumes and tailored output~/.jobfinder
JOBFINDER_RESUME_DIRNoWhere stored resumes live$JOBFINDER_HOME/resumes
JOBFINDER_TAILORED_DIRNoWhere tailored resumes are written$JOBFINDER_HOME/tailored
JOBFINDER_LATEX_TEMPLATENo.tex skeleton used for tailored output

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
search_jobsA

Search job listings.

Args: query: keywords matched against title, tags, company and description. location: substring filter on the listing location (e.g. "remote", "berlin"). tags: comma-separated tags that must all be present on the listing. source: restrict to one source ("remoteok" or "local"); empty means all. limit: maximum listings to return.

get_job_detailsA

Show the full listing for a job id returned by search_jobs or list_saved_jobs.

save_jobB

Save a job from the latest search results to the local tracker.

add_jobA

Add a job you found elsewhere (LinkedIn, a referral, an email) to the tracker.

Use this to paste a full job description for a listing that did not come from search_jobs. Reusing an existing job_id overwrites that listing's fields while keeping its application status.

Args: title: role title. company: hiring company. description: full job description text. location: e.g. "Remote", "Berlin". url: link to the original posting. salary: free-form, e.g. "$150,000 - $180,000". tags: comma-separated, e.g. "python, backend". notes: your own notes about the role. job_id: optional explicit id; defaults to a generated "manual:" id.

set_job_descriptionA

Replace the description of a saved job with pasted text.

Useful when the listing was saved from a feed with a truncated or empty description and you have the full text.

list_saved_jobsA

List saved jobs, newest first, optionally filtered by application status.

update_job_statusA

Update the application status and/or notes of a saved job.

Valid statuses: saved, applied, interviewing, offer, rejected, archived.

delete_saved_jobB

Remove a job from the local tracker.

pipeline_summaryA

Count saved jobs by application status.

add_resumeA

Store a resume so it can be tailored against job listings.

Give either text (pasted resume) or path (a file to read). Accepted files: .md, .txt, .pdf, .docx, .tex. Non-text files are converted to text for matching and the original is kept so a rewrite can stay in that format. Re-using a name replaces that resume.

Args: name: label for this resume, e.g. "main" or "backend". text: full resume text, if pasting. path: path to a resume file, if uploading.

list_resumesA

List stored resumes, marking which one is used when none is named.

get_resumeB

Show a stored resume. raw returns the original LaTeX source when there is one.

set_default_resumeA

Choose which resume is used when a tailoring call does not name one.

delete_resumeA

Delete a stored resume and its original file.

tailor_resumeA

Build a tailoring brief: the listing's requirements matched against a stored resume.

Returns the job's must-have and frequent terms split into what the resume already evidences and what it does not, then the resume text, then the LaTeX to write into. Tailored output is always LaTeX: when the stored resume is a .tex file its source is included to rewrite in place, otherwise a template is included to fill. Write the CV, then store it with save_tailored_resume.

Args: job_id: id from search_jobs, add_job or list_saved_jobs. resume: stored resume name; empty uses the default resume.

save_tailored_resumeA

Store a tailored resume for a job as LaTeX. Replaces any previous version for that job.

Args: job_id: the job this version targets. content: the full tailored resume, a complete LaTeX document. extension: output file type; leave as "tex" unless you have a reason not to.

get_tailored_resumeB

Return the tailored resume stored for a job.

tailored_resume_linkA

Return the tailored resume for a job as a base64 data: URI.

The whole document travels inside the link, so it can be pasted anywhere that renders a URL and downloaded without this server running.

list_tailored_resumesA

List every tailored resume written so far.

open_web_uiA

Start the local web UI for browsing saved jobs and their tailored resumes.

Runs on a background thread inside this server, on 127.0.0.1 only, and stops when the MCP client disconnects. Calling it again returns the running URL.

Prompts

Interactive templates invoked by user choice

NameDescription
tailor_applicationDraft a tailored application for a saved or recently found job.

Resources

Contextual data attached and managed by the client

NameDescription
saved_jobs_resourceAll saved jobs as JSON, for clients that want structured data.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/juanzjck/autojobfinder-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server