SkillMatch MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| setupB | Onboard the user by collecting their job search profile. Captures: name, current_role, target_roles (list), salary_floor (integer), remote_only (bool), location, dealbreakers (list), github_url, resume_path. If a profile already exists, the 'confirm_overwrite' parameter must be true to replace it. |
| get_profileA | Read and return the saved user profile from data/profile.json. |
| get_portfolioA | Fetch public GitHub repos for the user. Returns repo name, description, language, topics, last updated, homepage, and README content for each repo. Pass deep=true to also run a Haiku-powered analysis of each README, extracting stack, what it does, complexity, and notable achievements. Omit deep (or pass false) for the free metadata+README fetch. Only use deep=true when you explicitly need structured analysis and the user has authorized API spend. |
| get_resumeA | Read the user's resume file. Reads resume_path from the saved profile and returns the raw text content. Supports .txt, .md, and .docx files. |
| search_jobsA | Build an optimized job search query. Accepts a free-text query and combines it with the user's saved profile (target roles, salary floor, remote preference) to construct a search query string. Returns the query for Claude to use with web search tools. Does NOT perform the search itself. |
| analyze_fitA | Gather all user data needed for job fit analysis. Accepts a job description, then internally fetches the user's portfolio (GitHub repos) and resume. Returns all three together in a structured bundle so Claude can reason about the fit. Does NOT perform the analysis itself. |
| log_applicationB | Log a job application to the tracking database. Creates the database if it does not exist. |
| get_applicationsB | Return all tracked job applications, ordered by most recent first. Optionally filter by status. |
| save_scouted_jobA | Save a scouted job listing to the tracked scouted_jobs.json file. Validates the URL to ensure it is a DIRECT link to a specific job posting (e.g. indeed.com/viewjob?jk=..., greenhouse.io/.../jobs/...) and rejects search result page URLs (e.g. indeed.com/q-..., builtin.com/jobs/...). Also deduplicates against existing scouted jobs and applications. Returns {saved: true/false, reason: '...'} with clear feedback. |
| get_scouted_jobsB | Return all scouted job listings from scouted_jobs.json. Optionally filter to only unranked jobs. |
| mark_jobs_rankedA | Mark all unranked scouted jobs as ranked. Returns the count of jobs marked. |
| parse_jdA | Parse a job description into structured signal: hard requirements, nice-to-haves, responsibilities, red flags, compensation signals, role type, experience level, and domain. Uses Claude API internally. Returns structured JSON for better fit reasoning. |
| update_applicationB | Update an existing application by ID. Accepts any subset of fields: status, notes, follow_up_due_date, response_received, outcome. Automatically updates last_activity_date. |
| get_follow_upsA | Return all applications where follow_up_due_date is today or earlier and status is still applied or screening. Shows what needs attention. |
| get_application_patternsA | After 10+ applications, analyze the full history to find patterns: which role types get responses, which skills resonate, which red flags recur in silent roles, and recommended search adjustments. Uses Claude API internally. |
| add_resumeB | Add a new resume variant to the profile. Each variant targets specific role types for automatic selection during fit analysis. |
| list_resumesA | Return all stored resume variants with their labels and target role types. |
| update_profileA | Update the user's profile with new or changed fields. Accepts any subset of profile fields and merges them into the existing profile.json without requiring a full re-setup. Useful for adding unlisted_skills, updating dealbreaker_detail, or changing any field. |
| read_repoA | Analyzes a local code repository and extracts structural information: detected languages, tech stack (frameworks/libraries from imports), entry points, key modules (classes and functions), and architecture shape. Returns raw structured JSON for Claude to interpret — no API calls, pure local analysis using AST for Python files and regex for JS/TS. Use this to understand a candidate's project before analyzing job fit, or to supplement get_portfolio with deeper technical signal from local repos. |
| purge_dead_listingsA | Checks every scouted job URL for liveness and removes expired or unavailable postings from scouted_jobs.json. Detects dead listings via HTTP 404/410 status codes and known closure phrases in page content (e.g. 'no longer accepting applications'). Connection errors and 5xx responses are treated as 'keep' to avoid false positives. Pass dry_run=true to preview what would be removed without actually deleting anything. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 20 tools
Each tool serves a distinct purpose with clear boundaries: profile management, application tracking, resume handling, portfolio analysis, job scouting, and utility functions. No two tools overlap significantly; descriptions are detailed enough to prevent confusion.
All tool names follow a consistent verb_noun pattern in snake_case, e.g., get_profile, search_jobs, update_application. The only slight deviation is 'setup', but it still reads as a clear action. No mixing of conventions.
With 20 tools, the server is on the higher side of reasonable for a comprehensive job search assistant. The count covers profile, resume, portfolio, application, and scouting workflows without being excessive. Slightly over the ideal 3-15 range but still well-scoped.
The tool set covers most CRUD operations for key entities: profile, applications, scouted jobs, and resumes. Minor gaps like explicit delete operations for applications or resume variants exist, but agents can work around them using update or other means. The domain is well-covered.