Claude MCP Job Assistant
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Claude MCP Job Assistantrecommend jobs based on my resume"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Claude MCP Job Assistant
Overview
Claude MCP Job Assistant is a production-ready MCP (Model Context Protocol) server designed to demonstrate how Tools, Resources, and Prompts can be orchestrated to build an intelligent job search assistant.
The project uses Claude Desktop as the MCP Host/Client and exposes a complete ecosystem for:
Searching job opportunities.
Saving interesting positions.
Performing labor market analysis.
Receiving personalized recommendations based on a resume.
Generating matching reports between a resume and saved jobs.
This project provides a practical introduction to the Model Context Protocol and illustrates how modern AI assistants can leverage MCP capabilities to deliver contextual and personalized experiences.
Related MCP server: jobjourney-claude-plugin
Features
MCP-compliant server implementation.
Integration with Claude Desktop.
Intelligent job search.
Job bookmarking and persistence.
Resume-based recommendations.
Labor market analysis.
Matching reports generation.
Modular architecture using MCP Tools, Resources, and Prompts.
Production-ready setup with
uv.
Architecture
The MCP server is organized around the three core MCP primitives:
Tools
Tool | Description |
| Retrieves job offers using an external API. |
| Saves selected jobs in a structured format. |
Resources
Resource | Description |
| Loads the user's resume. |
| Loads previously saved jobs. |
Prompts
Prompt | Description |
| Analyzes labor market trends. |
| Suggests jobs, skills, and companies based on the user's resume. |
| Generates a report comparing saved jobs with the user's resume. |
Workflow
User
↓
Claude Desktop (MCP Host)
↓
MCP Job Assistant Server
├── Tools
│ ├── search_jobs()
│ └── save_job()
│
├── Resources
│ ├── resume://default
│ └── jobs://saved
│
└── Prompts
├── analyze_job_market()
├── personalized_job_recommender()
└── create_match_report()
↓
Generated ResponseTechnologies Used
Python
Model Context Protocol (MCP)
Claude Desktop
UV
External Job APIs
PDF Processing
Installation
1. Clone the Repository
git clone https://github.com/eric623/Claude-MCP-Job-Assistant.git
cd Claude-MCP-Job-Assistant2. Install Dependencies
This project uses uv for dependency management.
uv syncAt this stage, the MCP server is ready to be launched by Claude Desktop.
Claude Desktop Configuration
Step 1: Install Claude Desktop
Download and install Claude Desktop from Anthropic.
Step 2: Open Developer Settings
Navigate to:
Settings → Developer → Edit ConfigThis opens the claude_desktop_config.json file.
Step 3: Add the MCP Server
Add the following configuration:
{
"mcpServers": {
"mcp_job": {
"command": "uv",
"args": [
"--directory",
"PATH_TO_PROJECT_DIRECTORY",
"run",
"server.py"
]
}
}
}Replace
PATH_TO_PROJECT_DIRECTORYwith the absolute path to your local project folder.
Adding Your Resume
Place your CV inside the resume directory.
The file must be named exactly:
resume.pdfExample:
Claude-MCP-Job-Assistant/
│
└── resume/
└── resume.pdfImportant: Resume-based recommendations and matching reports require this file.
Launching the MCP Server
After saving the configuration:
Completely close Claude Desktop.
Reopen Claude Desktop.
You should now see:
mcp_job (Running)in the Developer panel.
MCP Concepts Demonstrated
MCP Tools
MCP Resources
MCP Prompts
Claude Desktop Integration
Context-Aware AI Systems
Intelligent Job Search
External API Consumption
Personalized Recommendations
Modular MCP Server Design
Why This Project?
This project was built to explore and demonstrate the capabilities of the Model Context Protocol (MCP) by implementing a realistic use case centered around job exploration and career assistance.
It highlights how MCP enables:
Context-aware assistants.
Modular architectures.
Tool orchestration.
Resource management.
Prompt engineering.
Intelligent interactions between users and AI systems.
Author
AKAKPO Koffi Moïse
Interested in Agentic AI, Multi-Agent Systems, and Applied Artificial Intelligence.
Claude MCP Job Assistant demonstrates how the Model Context Protocol can be leveraged to build intelligent, modular, and extensible assistants through the coordinated use of Tools, Resources, and Prompts.
Available Tools
2 toolssave_jobA
Save a specific job from temporary list into candidate's saved folder.
If salary not provided, extract it from the fetched job data.
Args: job_id: The ID of the job to save. salary (optional): The salary of the job to save.
Returns: A string indicating the job was saved successfully.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| salary | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the salary extraction side-effect ('If salary not provided, extract it from the fetched job data') which is helpful behavioral context, and the return type. However, it doesn't disclose side effects like whether the job is removed from the temp list, idempotency, or error behaviors.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact with clear sections (Args, Returns). It adds a second sentence about salary extraction that is valuable. Minor redundancy: the Returns line restates the obvious outcome of a save action. Overall well-organized and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is an output schema that presumably documents the return value, reducing burden there. The tool has only 2 params, making it relatively simple. The description covers the core behavior and the notable optional salary-extraction side effect. It doesn't address failure cases or edge conditions, but for a simple save operation with an output schema, this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It does reasonably: job_id is explained as 'The ID of the job to save' and salary as 'The salary of the job to save', plus the extraction fallback behavior. A stronger definition of what 'extract' means exactly and expected salary format would push this higher, but the semantics are adequately clarified given zero schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (save), the resource (job), and the action context (from temporary list into candidate's saved folder). It distinguishes the purpose reasonably from its sibling search_jobs, though it doesn't explicitly name the sibling as an alternative. The 'Args' and 'Returns' sections add useful structure.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (saving from a temporary list into a saved folder) but does not explicitly state when to use this vs search_jobs. It mentions an optional behavior (extract salary if not provided) but gives no exclusions, prerequisites, or explicit alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_jobsC
Fetch jobs using JSearch API and store them temporarily. Return key info.
Args: role: The role to search for. location: The location to search for. max_results: The maximum number of jobs to return.
Returns: A list of dictionaries containing the job information.
| Name | Required | Description | Default |
|---|---|---|---|
| role | Yes | ||
| location | Yes | ||
| max_results | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. It reveals that jobs are 'stored temporarily,' which adds transparency about side effects, but it doesn't disclose data freshness, pagination behavior, API rate limits, or whether this is a read-only vs write operation. For a tool that fetches external data and stores it, more behavioral context would be expected.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and readable, with a brief summary line followed by a structured Args/Returns section. It's efficient without wasted words. The format mirrors a Python docstring which is familiar to many agents, aiding comprehension.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero annotations, no sibling differentiation, and a 0% schema coverage, this description leaves significant gaps. It doesn't mention how results are ordered, what constitutes 'key info' in the returned dictionaries, whether location requires a specific format or country, or how temporary storage interacts with the save_job sibling. An output schema exists, which helps explain return values, but the description still lacks operational context for a tool with 3 parameters and external API side effects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for parameter documentation. It lists role, location, and max_results with terse one-line descriptions that essentially restate the schema field names ('The role to search for', 'The location to search for', 'The maximum number of jobs to return'). 'Role' and 'location' are ambiguous - role of what (job title? seniority?), and no format or examples are provided for any parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the tool 'Fetch(es) jobs using JSearch API and store(s) them temporarily. Return(s) key info.' This provides a specific verb (fetch) and a resource (jobs via JSearch API), distinguishing it from the sibling 'save_job' tool which implies persistence. However, it doesn't explicitly contrast against save_job in the description, though the 'store them temporarily' phrasing hints at the difference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus save_job or other alternatives. The description implies 'fetching jobs' is the use case, but lacks any when/when-not statements or mention of the sibling save_job tool. The distinction between temporary storage here and the save_job sibling is only implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
The two tools have clearly distinct purposes: search_jobs fetches and lists jobs, while save_job persists a specific job. There is no overlap in their functionality, making misselection unlikely.
Both tools follow the verb_noun pattern (search_jobs, save_job) using lowercase snake_case. The consistency is good, though with only two tools there is limited evidence of a broader pattern.
Two tools is quite thin for a job assistant server that presumably requires browsing and managing jobs. Missing operations needed for a complete workflow means the count feels inadequate for the domain.
The surface has notable gaps: there's no way to list or retrieve saved jobs, no delete/discard capability, no detailed view of a job, and no pagination beyond max_results. Agents could reach dead ends when trying to manage or review saved jobs.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
GetJobzi MCP server for job search, application tracking, and career forecasting.
Public MCP server for discovering open jobs. Search, filter, and get application links.
MCP Server for an Agent Task Marketplace
Related MCP Servers
- AlicenseBqualityDmaintenanceMCP server for managing job application materials, including resume compilation, job posting fetching, and interview preparation.10MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables AI-assisted job search workflows including job discovery, application tracking, resume evaluation, and cover letter generation, with support for multiple job sources and scheduled scraping.181AGPL 3.0
- FlicenseNot gradedqualityCmaintenanceMCP server for AI-native resume optimization, providing tools to load JD, analyze match, rewrite sections, and assemble customized resumes.1
- AlicenseBqualityBmaintenanceMCP server for job search, enabling profile creation, job hunting, review, and supervised application preparation without auto-submission.41Apache 2.0
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/eric623/Claude-MCP-Job-Assistant'
If you have feedback or need assistance with the MCP directory API, please join our Discord server