Skip to main content

Job search and ranking pipeline accessible via MCP (Model Context Protocol)

Project description

SkillMatch MCP

Claude-powered job fit analyzer for people who prove their skills through work, not credentials.

What It Does

SkillMatch is an MCP server that gives Claude access to your GitHub portfolio, resume, and job search preferences. It lets Claude:

  • Analyze how well you fit a specific job description based on your actual projects and resume
  • Build optimized job search queries tailored to your targets and constraints
  • Track every application you submit in a local SQLite database
  • Pull your public GitHub repos to highlight relevant work during fit analysis

All data stays local on your machine. Nothing is sent anywhere except public GitHub API calls to fetch your own repos.

Setup

1. Install the dependency

cd skillmatch-mcp
pip install -r requirements.txt

2. Add to Claude

Claude Code (CLI):

claude mcp add --scope user skillmatch -- python /path/to/skillmatch-mcp/server.py

Then restart Claude Code.

Claude Desktop:

Open your Claude Desktop configuration file and add SkillMatch to the mcpServers section:

{
  "mcpServers": {
    "skillmatch": {
      "command": "python",
      "args": ["/path/to/skillmatch-mcp/server.py"]
    }
  }
}

Replace /path/to/skillmatch-mcp/server.py with the actual path to server.py on your machine, then restart Claude Desktop.

3. Start using it

After restarting, SkillMatch tools will be available in your conversation. Works in Claude Code and Claude Desktop.

Onboarding

The first time you use SkillMatch, Claude will walk you through a setup conversation. It looks something like this:

You: Help me find a new job.

Claude: I don't have your profile set up yet. Let me ask you a few questions first.

  What is your name?
You: Jordan

Claude: What is your current role?
You: Senior frontend developer

Claude: What roles are you targeting?
You: Staff frontend engineer, senior full-stack engineer

Claude: What is your minimum acceptable salary?
You: 180000

Claude: Are you only looking for remote positions?
You: Yes

Claude: Where are you located?
You: Portland, OR

Claude: Any dealbreakers?
You: No on-call rotations, no defense contractors

Claude: What is your GitHub URL?
You: https://github.com/jordan-dev

Claude: Where is your resume file?
You: C:/Users/jordan/Documents/resume.md

Claude: Got it. Your profile is saved. Let me search for jobs matching your targets.

After onboarding, your profile is saved locally and reused in every future conversation.

How It Works

search_jobs builds a search query from your profile and any keywords you provide. Claude then uses that query with its web search capabilities to find real listings. The tool itself does not search the web.

analyze_fit bundles your GitHub portfolio, resume text, and the job description together. Claude then reasons about the fit, identifying skill matches, gaps, and talking points. The tool gathers the data; Claude does the thinking.

log_application and get_applications maintain a local SQLite database so you can track where you have applied, when, and any notes about the process.

save_scouted_job saves a job listing found during scouting. It validates the URL to reject search result pages (e.g. indeed.com/q-*) and only accepts direct posting links (e.g. indeed.com/viewjob?jk=...). It also deduplicates against existing scouted jobs and the applications database.

get_scouted_jobs returns all scouted listings, optionally filtered to only unranked ones. mark_jobs_ranked marks all unranked jobs as ranked after a ranking report is generated.

get_portfolio and get_resume can be called independently if you want Claude to review just your repos or just your resume.

File Structure

skillmatch-mcp/
  server.py              # MCP server (stdio JSON-RPC)
  requirements.txt       # python-docx dependency
  CLAUDE.md              # Instructions for Claude
  README.md              # This file
  email_ranked_jobs.py   # Conductor worker: emails ranked job reports
  cowork_monitor.py      # Conductor worker: monitors Cowork VM, auto-recovers
  cowork_tab.png         # Reference image for Cowork tab UI automation
  data/
    .gitkeep             # Keeps the folder in git
    profile.json         # Created on first setup (gitignored)
    applications.db      # Created on first log (gitignored)
    scouted_jobs.json    # Scouted listings (gitignored)
    ranked_jobs.md       # Latest ranked report (gitignored)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

skillmatch_mcp-1.0.0.tar.gz (16.3 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

skillmatch_mcp-1.0.0-py3-none-any.whl (18.4 kB view details)

Uploaded Python 3

File details

Details for the file skillmatch_mcp-1.0.0.tar.gz.

File metadata

  • Download URL: skillmatch_mcp-1.0.0.tar.gz
  • Upload date:
  • Size: 16.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for skillmatch_mcp-1.0.0.tar.gz
Algorithm Hash digest
SHA256 49b9563dae1085ca50807e6bf2225bf9ab2e742c45f32c0cb4284c5fbf27eee1
MD5 0349e519dea466572dc5aa11b9b5edcd
BLAKE2b-256 986c7b76704d127711c8866f61dc9e931db50643460bb67be43708aebce66764

See more details on using hashes here.

Provenance

The following attestation bundles were made for skillmatch_mcp-1.0.0.tar.gz:

Publisher: publish.yml on jarmstrong158/skillmatch-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file skillmatch_mcp-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: skillmatch_mcp-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 18.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for skillmatch_mcp-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b5b9acf55add0dde17a6c0bd9e27f11f78958cf674bc143f750c272b8f904099
MD5 2f0369705d4b33b9fbc931816049192d
BLAKE2b-256 22936d944e9dece600ced7e4249ca5bfad3f7655b903c28f94ecb83ff0f1b319

See more details on using hashes here.

Provenance

The following attestation bundles were made for skillmatch_mcp-1.0.0-py3-none-any.whl:

Publisher: publish.yml on jarmstrong158/skillmatch-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page