Yabot Jobs MCP server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Yabot Jobs MCP serverFind me software engineer jobs in San Francisco and apply to the first one."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Yabot Jobs MCP server
A remote MCP server that lets an MCP client (Claude Desktop, Claude Code, etc.) search jobs, apply to one, store a fit evaluation of your resume against a job that the client computed itself, and upload an HTML tailored resume / cover letter you've drafted — all against your own Yabot Jobs account.
It's a thin process: every tool call is an HTTP request to the FastAPI
backend (main.py), authenticated with a short-lived personal access token
minted for that connection via OAuth. It never touches the database
directly.
1. Install dependencies
From the repo root, into the existing venv (or a separate one — this
package only needs mcp and httpx):
.venv/bin/pip install -r requirements.txtRelated MCP server: jobfinder-mcp
2. Start the backend and frontend
The MCP server calls the API (defaults to http://localhost:8000), and the
OAuth consent screen lives on the web frontend (defaults to
http://localhost:3000) — both need to be running and reachable:
# in yabot.jobs-backend/
.venv/bin/python main.py
# in yabot.jobs-frontend/
npm run dev3. Configure and run this server
YABOT_API_BASE_URL=http://localhost:8000 \
YABOT_FRONTEND_BASE_URL=http://localhost:3000 \
YABOT_MCP_PUBLIC_URL=http://localhost:8080 \
.venv/bin/python server.py(Or put these in this repo's .env — server.py loads it automatically
via python-dotenv.) YABOT_MCP_PUBLIC_URL must be this server's own
publicly reachable URL once deployed (its OAuth issuer identity) —
http://localhost:8080 only works for local testing.
4. Connect it to Claude
No token to mint or paste — Claude does OAuth dynamic client registration
and a browser-based login automatically the first time it connects,
reusing the backend's existing magic-link login (see
app/services/auth.py/app/api/routes/oauth.py in yabot.jobs-backend
and OAuthAuthorizePage.tsx in yabot.jobs-frontend for the consent
screen).
Claude Code
claude mcp add --transport http yabot-jobs http://localhost:8080/mcpClaude Desktop
Add to your claude_desktop_config.json (Settings → Developer → Edit
Config):
{
"mcpServers": {
"yabot-jobs": {
"url": "http://localhost:8080/mcp"
}
}
}Restart Claude Desktop after saving. On first use, Claude opens a browser
tab pointed at the frontend's consent screen; log in (or you're already
logged in) and click Approve. In production, use this server's real public
HTTPS URL instead of localhost.
Fallback: minting a token by hand
create_token.py still works standalone against the backend (drives the
magic-link login, then POST /auth/tokens) for scripts or CI that want a
long-lived personal access token instead of going through OAuth — it's
unrelated to how Claude itself connects to this server now.
Tools
Tool | What it does |
| Search known job postings by title keyword / location |
| List distinct locations known across all job postings |
| Fetch one job's full detail by |
| Add a new job by URL (queues an extraction scan) |
| Force a fresh extraction scan of an existing job posting |
| Create + mark an application as |
| List your tracked applications and their latest artifacts |
| Update an application's status/notes/archived flag |
| Delete a tracked application |
| Fetch your main resume, including its extracted text |
| Fetch the latest score for a job posting |
| Store a fit evaluation you computed yourself (rubric baked into the tool description), skipping the backend's LLM call |
| Store a fit evaluation of a specific tailored resume you computed yourself, skipping the backend's LLM call |
| Upload a structured tailored resume for a job (rendered to .docx) |
| Upload a structured cover letter for a job (rendered to .docx) |
upload_tailored_resume / upload_cover_letter take structured content,
not markup — no HTML/Markdown. Tailored resumes: summary (string) plus
sections (a list of {heading, bullets} objects). Cover letters:
greeting, body_paragraphs (a list of strings), closing. This matches
the shape the backend's own LLM generates and the frontend already
expects (TailoredResume/CoverLetter.content in the frontend's
src/api/types.ts) — see app/services/resume_renderer.py for how it's
rendered.
Deploying to Cloud Run
This repo ships a Dockerfile and a .github/workflows/deploy.yml that
builds the image, pushes it to Artifact Registry, and deploys it to Cloud
Run on every push to main (or manually via "Run workflow").
Deploy target: project yabotjobs, region us-central1, service
yabot-jobs-mcp.
One-time setup (creates the Artifact Registry repo, a dedicated deploy service account, and Workload Identity Federation so GitHub Actions never needs a stored key):
gcloud auth login
GITHUB_REPO=davicho01/yabot.jobs-mcp ./deploy/setup-gcp.shIt prints the two values to add as GitHub Actions secrets:
GCP_WORKLOAD_IDENTITY_PROVIDERGCP_SERVICE_ACCOUNT
And three GitHub Actions variables (Settings → Secrets and variables → Actions → Variables) — these become the container's env vars, so use real production URLs, not localhost:
YABOT_API_BASE_URL— the deployed backend's URLYABOT_FRONTEND_BASE_URL— the deployed frontend's URLYABOT_MCP_PUBLIC_URL— this service's own public Cloud Run URL (fill this in after the first deploy, then re-run the workflow so the OAuth issuer identity matches)
Once the secrets and variables are set, push to main to deploy.
This server cannot be deployed
Maintenance
Related MCP Connectors
Generate tailored, ATS-optimized resume PDFs and cover letters from a job description, over MCP.
Search jobs, tailor your resume, write cover letters, and file applications for you.
GetJobzi MCP server for job search, application tracking, and career forecasting.
Manage job applications — jobs, companies, boards, notes, and profile — from your AI client.
Related MCP Servers
- AlicenseAqualityCmaintenanceAn AI job-hunt copilot that enables searching live job boards, shortlisting openings, tracking application pipelines, and generating tailored resumes and cover letters from any MCP client.14Apache 2.0
- FlicenseAqualityCmaintenanceEnables searching job listings, tracking applications, managing resumes, and tailoring resumes to job posts, all locally via MCP.620-
- AlicenseNot gradedqualityBmaintenanceEnables AI clients to serve as a personal career analyst by searching, matching, and explaining job recommendations, managing job applications, and syncing public job boards through standardized MCP tools.MIT
- AlicenseNot gradedqualityCmaintenanceEnables natural language management of job applications through MCP-compatible clients, including searching real job offers, creating and deleting applications, generating CVs or cover letters, and retrieving application metrics.ISC