Production-ready scaffold for a personalized job-finding MCP server.
jobmatch-mcp has 4 tools with clear verb-noun naming (search_jobs, get_job_details, rank_jobs_for_candidate, list_sources). All tools have descriptions (10 - 200 chars, within baseline). Input schemas are present with type declarations and parameter descriptions. However, output schemas are NOT documented, the code shows tool registration but no explicit return type documentation visible in source. The rank_jobs_for_candidate tool has a TODO comment indicating incomplete implementation. Error handling is minimal; no recovery guidance or actionable error messages. Parameter constraints (e.g., limit max:50) are declared but not validated in visible code. Overall: solid naming and basic schema structure, but missing output documentation and error handling patterns.
Fetch normalized details for a specific job from a given source.
List job sources known to the server and their current implementation status.
Rank a set of normalized jobs against a candidate profile.
Search normalized job listings across configured sources.
Output schemas not documented. Tools return data but no explicit schema documentation visible for LLM to plan downstream calls or extract fields.
rank_jobs_for_candidate has TODO comment indicating incomplete implementation. Returns hardcoded score=0 and placeholder reasons. Tool is non-functional.
No error handling or recovery guidance. Tools do not return actionable error messages. LLM cannot self-correct on failures.
Parameter constraints (e.g., limit max:50) declared in schema but no visible input validation in tool implementations. Invalid inputs may not be caught.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
list_sources has empty input schema (no parameters). Description is generic ('List job sources known to the server'). Could explain what structure is returned and when to call it.