SkillMatch MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| 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 | |
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/jarmstrong158/skillmatch-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server