Skip to main content
Glama
README.md
# CV Resume Builder MCP

> AI-powered CV and resume builder using Model Context Protocol (MCP)

Automatically generate and update your CV/resume from git commits, Jira tickets, Credly certifications, and LinkedIn. Built for professionals who want their CV to stay current without manual updates. Generates ATS-compliant LaTeX CVs that pass Applicant Tracking Systems.

[![MCP](https://img.shields.io/badge/MCP-Model%20Context%20Protocol-blue)](https://modelcontextprotocol.io)
[![Python](https://img.shields.io/badge/Python-3.10+-blue.svg)](https://www.python.org/downloads/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

## Features

- šŸ“Š **Git commits** - Track your code contributions automatically āœ…
- šŸŽ« **Jira tickets** - Pull completed projects and tasks āš ļø (requires testing)
- šŸ† **Credly badges** - Sync certifications and achievements āœ…
- šŸ’¼ **LinkedIn profile** - Not implemented yet 🚧 (authentication required)
- šŸ“„ **PDF parsing** - Extract content from existing CVs āœ…
- šŸš€ **Enhanced CV generation** - Combine all data sources āœ…
- šŸ“ **LaTeX support** - Generate professional, ATS-compliant CVs āœ…
- šŸ¤– **ATS-friendly** - Clean formatting that passes Applicant Tracking Systems āœ…

## Quick Start

### Prerequisites
- Python 3.10+
- `uv` installed (for uvx): `curl -LsSf https://astral.sh/uv/install.sh | sh`
- An MCP-compatible AI assistant (Claude Desktop, Kiro, etc.)

### Installation

**Using uvx (recommended - no installation needed!):**

Just configure your MCP client and uvx handles the rest.

**Or install with pip:**
```bash
pip3 install cv-resume-builder-mcp
```

> **Note:** The configurations below use `uvx` which automatically downloads and runs the latest version from PyPI. If you're developing locally or want to test unreleased features, see [TESTING.md](TESTING.md) for local development setup.

### Configuration

#### For Claude Desktop

Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "cv-resume-builder": {
      "command": "uvx",
      "args": ["cv-resume-builder-mcp"],
      "env": {
        "AUTHOR_NAME": "your-git-username",
        "REPOS": "default:/absolute/path/to/your-repo"
      }
    }
  }
}
```

**For multiple repositories:** Change `REPOS` to: `"CompanyA:/path1,CompanyB:/path2,Personal:/path3"`

#### For Kiro IDE

Edit `~/.kiro/settings/mcp.json`:

```json
{
  "mcpServers": {
    "cv-resume-builder": {
      "command": "uvx",
      "args": ["cv-resume-builder-mcp"],
      "env": {
        "AUTHOR_NAME": "your-git-username",
        "REPOS": "default:/absolute/path/to/your-repo"
      }
    }
  }
}
```

**For multiple repositories:** Change `REPOS` to: `"CompanyA:/path1,CompanyB:/path2,Personal:/path3"`

**Important:** Use absolute paths (no `~`). Get it with `pwd` in your repo directory.

### Restart Your AI Assistant

After configuration, restart Claude Desktop or Kiro to load the MCP server.

### Test It

```
"List available MCP tools"
```

You should see tools like `get_git_log`, `read_cv`, `parse_cv_pdf`, etc.

## Usage Examples

```
"Get my git commits from the last 6 months and suggest CV updates"
```

**With multiple repositories:**
```
"List all my configured repositories"
"Get my commits from CompanyA for the last 3 months"
"Show me all my work across all repositories in the last year"
```

### Parse existing CV
```
"Parse my CV at ~/Documents/resume.pdf"
```

### Generate enhanced CV
```
"Generate an enhanced CV using my existing resume.pdf and recent work from the last 3 months"
```

### Get certifications
```
"Get my Credly badges and add them to my CV"
```

### Analyze commit impact (NEW!)
```
"Analyze my commits from the last month and show me what I actually built"
"Get detailed code changes for commit abc123 to understand the impact"
"Show me the stats for my recent commits to highlight achievements"
```

### Career guidance
```
"Based on my commits, Jira tickets, and certifications, what seniority level am I at?"
"Analyze my work and suggest what skills I need for senior/staff/principal level"
"Review my achievements and help me position myself for a promotion"
"What's missing from my profile to reach the next level?"
```

## Optional Integrations

Add these to your MCP configuration's `env` section:

### Jira (āš ļø Requires Testing)
```json
"JIRA_URL": "https://your-company.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token",
"JIRA_USER": "your-email@example.com"
```

Get API token: https://id.atlassian.com/manage-profile/security/api-tokens

**Note:** Jira integration is functional but requires more testing across different Jira configurations. Please report any issues!

### Credly (āœ… Fully Tested)
```json
"CREDLY_USER_ID": "your-credly-username"
```

Find your username in your Credly profile URL: `https://www.credly.com/users/YOUR-USERNAME`

### LinkedIn (🚧 Not Implemented)
```json
"LINKEDIN_PROFILE_URL": "https://www.linkedin.com/in/yourprofile"
```

**Note:** LinkedIn integration is not yet implemented due to authentication requirements. The tool currently only returns your profile URL. For now, manually copy your LinkedIn achievements to `wins.md` file. Contributions welcome!

### CV Formatting
```json
"MAX_BULLETS_PER_EXPERIENCE": "5"
```

## Available Tools

| Tool | Description |
|------|-------------|
| `get_git_log` | Get your git commits from default repo (excludes merge commits) |
| `list_repos` | List all configured repositories |
| `get_git_log_by_repo` | Get commits from a specific repository |
| `get_git_log_all_repos` | Get commits from all repos, grouped by project |
| `get_commit_details` | **NEW!** Get detailed commit info including code changes (diff) for impact analysis |
| `analyze_commits_impact` | **NEW!** Analyze multiple commits with stats to understand actual work done |
| `read_cv` | Read your current LaTeX CV |
| `read_wins` | Read your wins.md achievements file |
| `get_jira_tickets` | Get completed Jira tickets |
| `get_credly_badges` | Get your certifications from Credly |
| `get_linkedin_profile` | Read your LinkedIn profile summary |
| `parse_cv_pdf` | Extract text from existing CV/resume PDF |
| `generate_enhanced_cv` | Combine all data sources into comprehensive report |
| `get_cv_guidelines` | Get formatting rules and constraints |

## Project Structure

```
cv-resume-builder-mcp/
ā”œā”€ā”€ src/cv_resume_builder_mcp/
│   ā”œā”€ā”€ __init__.py
│   └── server.py          # Main MCP server
ā”œā”€ā”€ tests/
│   └── test_server.py     # Unit tests
ā”œā”€ā”€ pyproject.toml         # Package configuration
ā”œā”€ā”€ requirements.txt       # Dependencies
ā”œā”€ā”€ .env.example           # Configuration template
ā”œā”€ā”€ cv.tex                 # LaTeX CV template
ā”œā”€ā”€ wins.md                # Manual achievements tracking
└── README.md              # This file
```

## Development

### For End Users (Production)
Use the `uvx` configuration shown above. It automatically downloads the latest stable version from PyPI.

### For Contributors (Local Development)

**Just testing locally?** Clone the repo:
```bash
git clone https://github.com/eyaab/cv-resume-builder-mcp.git
cd cv-resume-builder-mcp
pip install -e ".[dev]"
```

**Want to contribute changes?** Fork first, then clone your fork:
1. Click "Fork" on GitHub
2. Clone your fork:
```bash
git clone https://github.com/YOUR-USERNAME/cv-resume-builder-mcp.git
cd cv-resume-builder-mcp
pip install -e ".[dev]"
```

Then use the local development configuration from [TESTING.md](TESTING.md) which uses `python3 -m` instead of `uvx`.

### Run Tests
```bash
pytest
```

### Format Code
```bash
black src/
ruff check src/
```

## Contributing

Contributions welcome! Please:

1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Ensure no credentials are hardcoded
6. Submit a pull request

See [CONTRIBUTING.md](CONTRIBUTING.md) for details.

## Troubleshooting

### MCP server not showing up
- Verify absolute paths in config (use `pwd`)
- Restart your AI assistant completely
- Check for typos in configuration

### Git log returns empty
- Check your git author name: `git config user.name`
- Update `AUTHOR_NAME` to match exactly

### "Command not found: uvx"
- Install uv: `curl -LsSf https://astral.sh/uv/install.sh | sh`
- Or: `brew install uv`

### Jira/Credly errors
- Verify API tokens are correct
- Check URLs don't have trailing slashes
- Ensure services are accessible

## Security

- All credentials stored in environment variables
- No data sent to external services except configured integrations
- Git history stays local
- Open source - audit the code yourself

## License

MIT License - see [LICENSE](LICENSE) file for details.

## Support

- šŸ› **Report bugs** - Open an issue on GitHub
- šŸ’” **Request features** - Create a feature request issue
- šŸ’¬ **Ask questions** - Start a discussion on GitHub

---

**Keywords:** cv builder, resume builder, mcp, model context protocol, ai resume, ai cv, automatic cv, career tracker, latex cv, resume generator, cv generator, developer resume, tech resume, ats compliant, ats friendly, applicant tracking system

Made with ā¤ļø for developers who hate updating their CVs manually

TDQS

B3.2/5.0

Scored across 14 tools

Disambiguation3/5

There is significant overlap between several tools, particularly the commit-related ones: analyze_commits_impact, get_commit_details, get_git_log, get_git_log_all_repos, and get_git_log_by_repo all deal with retrieving commit data, which could confuse an agent about which to use. However, descriptions provide some differentiation (e.g., impact analysis vs. general logs, single vs. all repos), and other tools like get_credly_badges and get_linkedin_profile have distinct purposes.

Naming Consistency4/5

Tool names follow a consistent verb_noun pattern using snake_case throughout, such as generate_enhanced_cv and get_jira_tickets. There are no deviations in style, making them predictable and readable, though some verbs like 'analyze' and 'get' are used interchangeably for similar functions, which is a minor inconsistency.

Tool Count4/5

With 14 tools, the count is reasonable for a CV/resume builder that integrates multiple data sources like Git, Jira, LinkedIn, and Credly. It's slightly on the higher side but well-scoped to cover various aspects of data retrieval and processing, without feeling overly bloated or insufficient for the domain.

Completeness4/5

The tool set covers key areas for CV building: data extraction from Git, Jira, LinkedIn, and Credly; CV parsing and reading; and CV generation. Minor gaps exist, such as no tools for updating or deleting CV content or managing configurations, but core workflows (data gathering to CV enhancement) are supported, allowing agents to work effectively.

Maintenance

ActivityInactive
ResponsivenessNo issues