winning-cv-mcp
by jack-jackhui
README.md
# WinningCV MCP Server
An MCP (Model Context Protocol) server for AI-powered job matching and CV generation. Search jobs on LinkedIn and Seek, match them against your CV, get detailed fit analysis, and generate tailored CVs.
## Features
- **🔍 search_jobs** - Search for jobs on LinkedIn and/or Seek
- **📊 match_jobs** - AI-powered CV matching with scoring (1-10)
- **🎯 analyze_job** - Deep-dive job analysis with fit assessment, strengths, gaps, red flags, and cover letter angles
- **📝 generate_cv** - Generate tailored CVs optimized for specific jobs
## Installation
```bash
npm install
npm run build
```
## Configuration
Copy `.env.example` to `.env` and configure:
```bash
cp .env.example .env
```
### Environment Variables
| Variable | Description | Default |
|----------|-------------|---------|
| `OPENAI_API_KEY` | OpenAI API key (or "dummy" for proxies) | Required |
| `OPENAI_BASE_URL` | OpenAI-compatible API endpoint | OpenAI default |
| `OPENAI_MODEL` | Model to use for AI features | gpt-4o-mini |
### Using with GitHub Copilot Proxy
```bash
export OPENAI_API_KEY=dummy
export OPENAI_BASE_URL=http://localhost:14141/v1
export OPENAI_MODEL=gpt-4o
```
## Usage
### Running the Server
```bash
node dist/index.js
```
### MCP Integration
Add to your MCP client configuration:
```json
{
"mcpServers": {
"winning-cv": {
"command": "node",
"args": ["/path/to/winning-cv-mcp/dist/index.js"],
"env": {
"OPENAI_API_KEY": "your-key",
"OPENAI_MODEL": "gpt-4o"
}
}
}
}
```
## Tools
### search_jobs
Search for jobs on LinkedIn and/or Seek.
**Input:**
```json
{
"keywords": "Digital Transformation Manager",
"location": "Melbourne, Australia",
"sources": ["linkedin", "seek"],
"days_old": 7
}
```
**Output:** List of jobs with title, company, location, URL, salary, and posted date.
### match_jobs
Score how well your CV matches job postings.
**Input:**
```json
{
"cv_path": "/path/to/your-cv.pdf",
"job_urls": [
"https://www.seek.com.au/job/123456",
"https://www.linkedin.com/jobs/view/789012"
],
"threshold": 7
}
```
**Output:** Jobs meeting the threshold with scores, strengths, and gaps.
### analyze_job
Get detailed analysis of a job against your CV.
**Input:**
```json
{
"cv_path": "/path/to/your-cv.pdf",
"job_url": "https://www.seek.com.au/job/123456"
}
```
**Output:**
- Fit assessment (score 1-10, recommendation: strong_apply/apply/consider/skip)
- Strengths with categories
- Gaps with severity (critical/moderate/minor) and mitigation suggestions
- Red flags
- Cover letter angles with talking points
- Key requirements checklist (met/unmet with evidence)
### generate_cv
Generate a tailored CV for a specific job.
**Input:**
```json
{
"cv_path": "/path/to/your-cv.pdf",
"job_url": "https://www.seek.com.au/job/123456",
"output_format": "markdown",
"tone": "professional"
}
```
**Options:**
- `output_format`: markdown, plain_text, or structured (JSON)
- `tone`: professional, creative, technical, or executive
- `focus_areas`: Optional array of areas to emphasize
**Output:** Tailored CV content with tailoring notes (keywords emphasized, skills highlighted, experience reframed).
## Supported CV Formats
- PDF
- DOCX
- TXT
- Markdown (.md)
## Dependencies
- Node.js 18+
- Playwright (for web scraping)
### Installing Playwright Browsers
```bash
npx playwright install chromium
```
## Development
```bash
# Build
npm run build
# Watch mode
npm run dev
# Test a tool
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | node dist/index.js
```
## License
MIT
## Author
Jack Hui (https://jackhui.com.au)
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues