Job Matcher MCP
Job Matcher MCP
🎯 AI 기반 구직 및 이력서 맞춤화 MCP (Model Context Protocol) 서버
채용 API와 Claude LLM을 활용하여 구직 활동을 자동화하고 각 직무에 맞게 이력서를 1분 이내에 맞춤화하세요.
📋 목차
🚀 빠른 시작
목표: API 키 없이 5분 안에 모의 데이터로 서버 실행하기
1. 저장소 클론
```bash cd job-matcher-mcp ```
2. 의존성 설치
```bash pip install -r requirements.txt ```
3. 모의 데이터로 실행
```bash export USE_MOCK_DATA=true python mcp_server.py ```
예상 출력: `` === Testing search_jobs === { "success": true, "job_listings": [ { "id": "mock_1", "title": "Senior Product Manager", "company": "TechCorp Inc", "location": "San Francisco, CA", ... } ], ... }
=== Testing customize_resume === { "success": true, "customized_resume": "# John Doe...", ... } `
✅ 성공! MCP 서버가 작동 중입니다. 이제 실제 API 키를 추가해 보겠습니다.
✨ 기능
기능 | 상태 | 설명 |
구직 검색 | ✅ MVP | Adzuna API를 통해 수천 개의 채용 공고 검색 |
이력서 맞춤화 | ✅ MVP | Claude를 활용한 AI 기반 이력서 맞춤화 |
기술 매칭 | ✅ MVP | 일치/부족 기술 식별 |
ATS 최적화 | ✅ MVP | ATS를 위한 자동 키워드 삽입 |
모의 데이터 모드 | ✅ MVP | API 키 없이 테스트 |
다중 API 지원 | 🔜 v1.2 | Indeed, LinkedIn, AngelList 추가 |
자기소개서 생성 | 🔜 v1.2 | 자기소개서 자동 생성 |
지원 현황 추적 | 🔜 v2.0 | 지원 및 면접 추적 |
🔧 설치
사전 요구 사항
Python 3.10 이상
pip (Python 패키지 관리자)
Git
1단계: 저장소 클론
```bash git clone https://github.com/yourusername/job-matcher-mcp.git cd job-matcher-mcp ```
2단계: 가상 환경 생성 (권장)
```bash
macOS/Linux
python3 -m venv venv source venv/bin/activate
Windows
python -m venv venv .\venv\Scripts\Activate.ps1 ```
3단계: 의존성 설치
```bash pip install -r requirements.txt ```
⚙️ 설정
1. API 키 받기
Adzuna API (무료)
계정 생성
앱을 만들어 App ID 및 App Key 받기
무료 티어: 하루 약 100회 요청
Anthropic Claude API (유료, 월 $0.50~$5)
계정 생성
API 키 생성
가격: 입력 토큰 1K당 약 $0.003, 출력 토큰 1K당 $0.015
2. .env 파일 생성
```bash cp .env.example .env ```
3. .env에 API 키 추가
```env ADZUNA_APP_ID=your_actual_app_id ADZUNA_APP_KEY=your_actual_app_key ANTHROPIC_API_KEY=sk-ant-your_actual_api_key USE_MOCK_DATA=false LOG_LEVEL=INFO ```
4. 환경 변수 로드
```bash
macOS/Linux
export $(grep -v '^#' .env | xargs)
Windows PowerShell
Get-Content .env | ForEach-Object { $name, $value = $_.Split('=') if ($name) { Set-Item -Path env:$name -Value $value } } ```
💻 사용법
서버 실행
```bash python mcp_server.py ```
curl로 테스트 (예시)
```bash
구직 검색
curl -X POST http://localhost:8000/tools/search_jobs
-H "Content-Type: application/json"
-d '{
"role": "Product Manager",
"location": "San Francisco, CA",
"experience_years": 5,
"max_results": 10
}'
이력서 맞춤화
curl -X POST http://localhost:8000/tools/customize_resume
-H "Content-Type: application/json"
-d '{
"base_resume": "...",
"job_description": "...",
"template": "modern"
}'
```
Python 예시
```python from mcp_server import JobMatcherMCPServer
server = JobMatcherMCPServer()
구직 검색
jobs = server.search_jobs( role="Product Manager", location="San Francisco, CA", experience_years=5, max_results=10 ) print(jobs)
이력서 맞춤화
resume = server.customize_resume( base_resume="Your resume text here...", job_description="Job description here...", template="modern" ) print(resume) ```
🛠️ MCP 도구 참조
도구 1: search_jobs
조건에 따라 채용 공고를 검색합니다.
입력 스키마
```json { "role": "Product Manager", // 필수: 직무명 "location": "San Francisco, CA", // 필수: 지리적 위치 "experience_years": 5, // 필수: 경력 연수 "max_results": 10, // 선택: 결과 제한 (기본값: 10) "use_mock_data": false // 선택: 모의 데이터 사용 (기본값: false) } ```
출력 스키마
```json { "success": true, "job_listings": [ { "id": "12345", "title": "Senior Product Manager", "company": "TechCorp", "location": "San Francisco, CA", "link": "https://...", "salary_min": 120000, "salary_max": 160000, "posted_date": "2026-08-17T10:00:00Z", "description_snippet": "We are looking for..." } ], "total_found": 123, "search_time_ms": 1234, "error": null } ```
예시
```python jobs = server.search_jobs( role="Product Manager", location="Remote", experience_years=3, max_results=5 ) ```
도구 2: customize_resume
AI를 사용하여 특정 직무에 맞게 이력서를 맞춤화합니다.
입력 스키마
```json { "base_resume": "# Jane Doe...", // 필수: 이력서 텍스트 "job_description": "We are looking for...", // 필수: 채용 공고 "template": "modern", // 선택: modern|classic|minimal "use_mock_data": false // 선택: 모의 데이터 사용 } ```
출력 스키마
```json { "success": true, "customized_resume": "# Jane Doe...", "match_analysis": { "skills_match_percentage": 82, "matched_skills": ["Product Management", "Leadership"], "missing_skills": ["Machine Learning", "Cloud"], "suggestions": ["Add ML experience if applicable"], "keywords_added": ["Data-driven", "Cross-functional"] }, "generation_time_ms": 2345, "error": null } ```
예시
```python customized = server.customize_resume( base_resume=open("resume.txt").read(), job_description=open("job_posting.txt").read(), template="modern" ) ```
🏗️ 아키텍처
┌─────────────────────────────────────────────────────┐
│ 사용자/AI 에이전트 (채팅, 스크립트, API 클라이언트) │
└────────────────┬────────────────────────────────────┘
│ MCP 프로토콜
┌────────────────▼────────────────────────────────────┐
│ Job Matcher MCP 서버 │
│ ┌──────────────────────────────────────────────┐ │
│ │ 도구: search_jobs() │ │
│ │ - Adzuna API 쿼리 │ │
│ │ - 결과 파싱 및 구조화 │ │
│ └──────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 도구: customize_resume() │ │
│ │ - Claude API로 전송 │ │
│ │ - 맞춤화된 이력서 파싱 및 반환 │ │
│ └──────────────────────────────────────────────┘ │
│ ┌──────────────────────────────────────────────┐ │
│ │ 외부 API │ │
│ │ - Adzuna 구직 검색 API │ │
│ │ - Anthropic Claude API │ │
│ └──────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────┘🔍 문제 해결
문제: ModuleNotFoundError: No module named 'anthropic'
해결 방법: 의존성 설치 ```bash pip install -r requirements.txt ```
문제: API request failed: Unauthorized
해결 방법: .env 파일의 API 키 확인 ```bash
키가 설정되었는지 확인
echo $ADZUNA_APP_ID echo $ANTHROPIC_API_KEY ```
문제: No jobs found
해결 방법: 다른 직무/지역을 시도하거나 max_results 증가 ```python
더 넓은 검색 시도
jobs = server.search_jobs( role="Manager", # 더 일반적인 용어 location="New York, NY", experience_years=5, max_results=50 ) ```
문제: Claude API response too slow
해결 방법: 테스트 시 모의 데이터 사용 ```python resume = server.customize_resume( base_resume="...", job_description="...", use_mock_data=True # API 호출 건너뛰기 ) ```
문제: Rate limit exceeded
해결 방법: Adzuna 무료 티어에는 제한이 있습니다. 캐싱 구현: ```python
구직 검색 결과 저장
cached_jobs = {} key = f"{role}{location}{experience_years}" if key not in cached_jobs: cached_jobs[key] = server.search_jobs(...) ```
🚢 배포
Vercel에 배포
```bash
1. https://vercel.com에서 Vercel 계정 생성
2. Vercel CLI 설치
npm install -g vercel
3. 배포
vercel
4. Vercel 대시보드에서 환경 변수 추가
Settings → Environment Variables
```
Railway에 배포
```bash
1. https://railway.app에서 Railway 계정 생성
2. Git 저장소 연결
3. Railway 대시보드에서 환경 변수 추가
```
📊 성능 지표 (목표)
작업 | 목표 시간 | 실제 |
구직 검색 | <5초 | ~2-3초 |
이력서 맞춤화 | <10초 | ~3-5초 |
모의 구직 검색 | <100ms | ~50ms |
모의 이력서 맞춤화 | <500ms | ~200ms |
📚 API 참조
Adzuna API: https://developer.adzuna.com/docs
Claude API: https://docs.anthropic.com/
MCP 프로토콜: https://modelcontextprotocol.io/
📝 라이선스
MIT 라이선스 - 자세한 내용은 LICENSE 파일 참조
👨💼 저자
직무 전환 중인 기술 제품 관리자를 위해 제작되었습니다.
버전: 1.0.0
마지막 업데이트: 2026-08-17
상태: MVP 준비 완료
This server cannot be installed
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
MCP server for AI job search — find jobs, track applications, get alerts. Claude, ChatGPT, Cursor.
GetJobzi MCP server for job search, application tracking, and career forecasting.
Job search and interview prep MCP. 11 tools, OAuth 2.1, cross-LLM. four-leaf.ai.
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/SRP-alohamora/JobMatcherMCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server