MCP Job Application Tracker & Resume Customizer
README.md
# š§ MCP Job Application Tracker & Resume Customizer
An MCP (Model Context Protocol) server that automates your job application process using AI. It connects with Google Drive, Notion, and Gmail to help you track applications, generate tailored resumes and cover letters, and send follow-up reminders.
## ⨠Features
- **AI-Powered Resume & Cover Letter Generation**: Uses Claude to create tailored documents for each job
- **Google Drive Integration**: Automatically saves generated documents to your Drive
- **Notion Database Tracking**: Logs all job applications with status tracking
- **Follow-up Email Automation**: Sends reminder emails for applications that need attention
- **MCP Protocol**: Works seamlessly with MCP-compatible AI assistants
## š Quick Start
### 1. Install Dependencies
```bash
npm install
```
### 2. Set Up Environment Variables
Copy the example environment file and fill in your API keys:
```bash
cp env.example .env
```
**For Windows users**: You can also use the provided `setup-env.bat` or `setup-env-windows.bat` scripts.
ā ļø **IMPORTANT**: Edit these files first to replace placeholder values with your actual API keys before running them. Never commit files containing real API keys!
You'll need to set up:
- **Anthropic API Key**: Get from [Anthropic Console](https://console.anthropic.com/)
- **Google OAuth Credentials**: Set up a project in [Google Cloud Console](https://console.cloud.google.com/)
- **Notion Integration**: Create an integration in [Notion Developers](https://developers.notion.com/)
### 3. Build the Project
```bash
npm run build
```
### 4. Run the MCP Server
```bash
npm start
```
## š§ Setup Instructions
### Google APIs Setup
1. Go to [Google Cloud Console](https://console.cloud.google.com/)
2. Create a new project or select existing one
3. Enable the following APIs:
- Google Drive API
- Gmail API
4. Create OAuth 2.0 credentials:
- Application type: Web application
- Authorized redirect URIs: `http://localhost:3000/auth/google/callback`
5. Copy the Client ID and Client Secret to your `.env` file
### Notion Setup
1. Go to [Notion Developers](https://developers.notion.com/)
2. Create a new integration
3. Copy the Internal Integration Token to your `.env` file
4. Create a database in Notion with the following properties:
- **Job Title** (Title)
- **Company** (Text)
- **Status** (Select: drafted, applied, interviewing, offer, rejected, withdrawn)
- **Applied Date** (Date)
- **Follow-up Date** (Date)
- **Resume URL** (URL)
- **Cover Letter URL** (URL)
- **Notes** (Text)
- **Created** (Date)
- **Last Updated** (Date)
5. Share the database with your integration
6. Copy the database ID to your `.env` file
## š Usage
### Available Tools
The MCP server provides the following tools:
#### `process_job_application`
Process a new job application by generating tailored resume and cover letter.
**Parameters:**
- `jobTitle` (string): The title of the job position
- `companyName` (string): The name of the company
- `jobDescription` (string): The full job description text
- `resumeData` (object): Your resume information
**Example:**
```json
{
"jobTitle": "Senior Software Engineer",
"companyName": "Tech Corp",
"jobDescription": "We are looking for a senior software engineer...",
"resumeData": {
"name": "John Doe",
"email": "john@example.com",
"phone": "+1-555-0123",
"location": "San Francisco, CA",
"summary": "Experienced software engineer...",
"experience": [...],
"education": [...],
"skills": ["JavaScript", "Python", "React"],
"projects": [...]
}
}
```
#### `get_job_applications`
Retrieve all job applications from your Notion database.
#### `update_job_status`
Update the status of a job application.
**Parameters:**
- `pageId` (string): The Notion page ID
- `status` (string): New status (drafted, applied, interviewing, offer, rejected, withdrawn)
- `notes` (string, optional): Additional notes
#### `send_follow_up_emails`
Send follow-up emails for applications that need attention.
**Parameters:**
- `recipientEmail` (string): Email address to send follow-ups to
#### `get_google_auth_url`
Get the Google OAuth URL for setting up access.
## š Workflow
1. **Find a Job**: When you find a job you want to apply for
2. **Process Application**: Use `process_job_application` with the job details and your resume data
3. **Review Documents**: Check the generated resume and cover letter in Google Drive
4. **Submit Application**: When you submit, update the status to "applied"
5. **Track Progress**: Monitor your applications in Notion
6. **Follow Up**: Use `send_follow_up_emails` to send reminders
## š ļø Development
### Project Structure
```
src/
āāā config/ # Configuration management
āāā services/ # External service integrations
ā āāā openai.ts # OpenAI GPT integration
ā āāā google.ts # Google Drive & Gmail
ā āāā notion.ts # Notion database
āāā types/ # TypeScript type definitions
āāā index.ts # Main MCP server
```
### Available Scripts
- `npm run dev`: Run in development mode with hot reload
- `npm run build`: Build the TypeScript project
- `npm start`: Run the built server
- `npm run watch`: Watch for changes and rebuild
## š Security
- All API keys are stored in environment variables
- Google OAuth uses secure token exchange
- No sensitive data is logged or stored in plain text
### ā ļø Important Security Practices
**NEVER commit API keys to version control!**
- Always use `.env` files for your API keys (already in `.gitignore`)
- If using `setup-env.bat` or `setup-env-windows.bat` scripts, replace placeholders with your actual keys locally
- Keep your API keys private and rotate them immediately if exposed
- For Windows users: Copy the setup script templates, add your keys, but do NOT commit them back to the repository
## š¤ Contributing
1. Fork the repository
2. Create a feature branch
3. Make your changes
4. Add tests if applicable
5. Submit a pull request
## š License
MIT License - see LICENSE file for details
## š Support
If you encounter any issues:
1. Check that all environment variables are set correctly
2. Verify your API keys have the necessary permissions
3. Ensure your Notion database has the correct structure
4. Check the console for error messages
For more help, please open an issue on GitHub. This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues