job-search-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| QDRANT_URL | Yes | Qdrant vector store connection URL (Cloud or self-hosted) | |
| NOTION_API_KEY | Yes | Notion API key for the tracking store | |
| QDRANT_API_KEY | No | Qdrant API key for authentication | |
| TRACKING_SCHEMA_PATH | No | Path to the tracking_schema.yaml file | tracking_schema.yaml |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| match_jobA | Retrieve resume/experience evidence relevant to a job description. Args: job_description: The full text of the job description to match against. source_url: Optional URL the job description was pulled from, for reference. Returns a heuristic retrieval_score (top-match cosine similarity) and the retrieved resume chunks with their individual similarity scores. Does not synthesize strengths/gaps/notes — reason over the retrieved evidence yourself, applying the job-fit://rubric resource linked in this result. |
| push_to_trackerA | Write an evaluate_fit result to the configured tracking store (Notion). Args: job_id: The Notion page ID of the job you already track. Updates that existing row in place — never creates a new row. verdict: The full evaluate_fit output (see docs/evaluate_fit_schema.md). dry_run: If true, returns the mapped Notion properties payload without writing anything, so you can review it first. Only the fields your tracking_schema.yaml marks tool-populated are touched — every other, manual field on the row (company, comp range, source, work arrangement, etc.) is left as-is. See docs/adr/0011-configurable-tracking-field-schema.md. A misconfigured tool-populated field (an unrecognized derived_from,
or — on a real write, not dry_run — a notion.property that doesn't
exist on your database) is skipped rather than failing the whole
write; check |
| list_applicationsA | List tracked jobs from the configured tracking store (Notion). Args: status: If given, only return rows whose Status matches exactly (e.g. "Not yet applied", "Applied"). Case-sensitive — must match the tracking store's status value exactly. Omit to return every tracked row. Each entry has job_id plus whatever tool-populated fields your tracking_schema.yaml declares (see docs/adr/0011-configurable-tracking-field-schema.md) — typically status, fit_rating, and notes. Statuses beyond "Not yet applied" (Applied, Recruiter screen, ...) are manual edits made in Notion, not something this server drives. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| job-fit-rubric | 5-layer rubric (hard gates, domain match, scope match, preference/logistics, red flags) for turning match_job's retrieved evidence into a fit bucket. retrieval_score alone is not a reliable fit signal — apply this instead. |
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/jsundquist/job-search-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server