jobfinder-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| JOBFINDER_DB | No | SQLite file for saved jobs | ~/.jobfinder/jobs.db |
| JOBFINDER_FEED | No | JSON file for the local source | |
| JOBFINDER_HOME | No | Base directory for resumes and tailored output | ~/.jobfinder |
| JOBFINDER_RESUME_DIR | No | Where stored resumes live | $JOBFINDER_HOME/resumes |
| JOBFINDER_TAILORED_DIR | No | Where tailored resumes are written | $JOBFINDER_HOME/tailored |
| JOBFINDER_LATEX_TEMPLATE | No | .tex skeleton used for tailored output |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| 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 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. |
| 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 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
| Name | Description |
|---|---|
| tailor_application | Draft a tailored application for a saved or recently found job. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| saved_jobs_resource | All saved jobs as JSON, for clients that want structured data. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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