career-agent
Career Agent
MCP를 통해 Claude Desktop에 통합된 커리어 에이전트. 채용 공고를 찾고, 프로필과의 적합도를 계산하며, 이력서를 합법적으로 맞춤화하고, 메시지와 답변을 생성하며, 지원 이력을 유지합니다.
최종 외부 행동은 항상 사용자의 몫입니다. 에이전트가 준비하고, 사용자가 클릭합니다.
v1.1 새로운 기능
기능 | 사용 방법 |
영구 채용 공고 카탈로그 |
|
5개 ATS 제공자 | Greenhouse, Lever, Ashby, Workable, SmartRecruiters |
Adzuna (브라질 국가 지수) |
|
구성 가능한 가중치 |
|
11개 점수 차원 | .NET, SAP, 세무, 아키텍처 및 백엔드 집중 포함 |
예약 검색 |
|
로컬 대시보드 |
|
백오프 재시도 | 모든 HTTP 소스에서 자동 |
각 소스의 세부 정보와 측정 내용: docs/FONTES.md
Related MCP server: job-search-mcp
목차
1. 아키텍처
개요
Claude Desktop
|
+---------------+---------------+
| | |
career-agent job-search career-files
(MCP stdio) (MCP stdio) (MCP stdio)
| | |
+---------------+---------------+
|
career_core
(dominio puro - nao conhece MCP)
|
+--------+-----------+-----------+--------+
| | | | |
profile scoring applications resume job_sources
(.md) (7 dim.) (SQLite+JSON) (tailor) (IJobSource)아키텍처 결정
도메인과 어댑터 분리. 모든 비즈니스 규칙은 src/career_core/에 있으며,
MCP를 전혀 import하지 않습니다. 세 개의 server.py는 얇은 어댑터입니다:
인자를 변환하고, 도메인을 호출하고, 응답을 포맷합니다. 이를 통해 서버를
실행하지 않고도 로직의 100%를 테스트할 수 있습니다.
SQLite를 진실의 원천으로, JSON을 미러로. SQLite는 트랜잭션 쓰기를
제공하며(프로세스가 중간에 죽어도 이력이 손상되지 않음), 중복 검사 쿼리가
저렴하고, 구성이 전혀 필요 없습니다 — PostgreSQL과 달리 서버와 자격 증명이
필요하지만 한 사람 규모에서는 이점이 없습니다. applications.json은 계속
존재하며, 변경 시마다 원자적으로 다시 작성되어 육안 검사와 Git 버전 관리를
위해 사용됩니다. 이 파일은 쓰기 전용입니다: 다시 읽히지 않으므로 두 소스가
불일치할 위험이 없습니다.
점수를 플러그형 차원으로. 7개 차원 각각은 IScoreDimension을 구현하는
클래스이며, 단일 측면을 점수화하고 설명할 수 있습니다. JobScorer는 합산과
분류만 합니다. 새 차원을 추가해도 합산기는 변경되지 않습니다(Open/Closed).
인터페이스 뒤의 채용 공고 소스. IJobSource에는 네 가지 구현이 있습니다:
MockJobSource(오프라인), RemotiveJobSource 및 ArbeitnowJobSource
(인증 없는 실제 공개 API), UnavailableJobSource(LinkedIn/Indeed/Gupy —
선언만 되고 수동 모드). 소스를 추가하려면 클래스를 작성하고 등록하기만 하면
됩니다. 다른 것은 변경되지 않습니다.
단일 컴포지션 루트. CareerServices가 객체 그래프를 구성합니다. 서버는
의존성을 수동으로 인스턴스화하지 않으며, 테스트는 더블을 주입합니다.
디렉터리 구조
career-agent/
├── pyproject.toml # deps + config do pytest (fonte unica)
├── .env.example # modelo de configuracao (versionado)
├── .env # sua configuracao real (NAO versionado)
│
├── src/career_core/ # DOMINIO - nao conhece MCP
│ ├── config.py # Settings por ambiente
│ ├── models.py # Job, CandidateProfile, Application, JobScore
│ ├── text.py # normalizacao (aliases de stack, URL, empresa)
│ ├── security.py # politica + maquina de estados (ApprovalGate)
│ ├── paths.py # SandboxedFileSystem (jail em data/)
│ ├── errors.py # hierarquia de erros de dominio
│ ├── logging_setup.py # logging para stderr + arquivo
│ ├── services.py # composition root
│ ├── job_input.py # vaga colada -> Job normalizado
│ ├── profile/repository.py # perfil .md -> CandidateProfile
│ ├── scoring/ # dimensions.py (7 dimensoes) + scorer.py
│ ├── applications/ # repository.py, dedupe.py, builder.py
│ ├── resume/tailor.py # personalizacao + FactGuard
│ └── job_sources/ # base.py, mock.py, http_sources.py,
│ # unavailable.py, registry.py
│
├── mcp-career/ # MCP 1 - logica de carreira
├── mcp-job-search/ # MCP 2 - obtencao de vagas
├── mcp-career-files/ # MCP 3 - leitura de arquivos (sandbox)
│
├── data/ # UNICO diretorio visivel ao career-files
│ ├── profile/ # profile.md, skills.md, preferences.md
│ ├── resumes/ # curriculo-principal.md (+ variantes)
│ └── applications/ # applications.db (verdade) + .json (espelho)
│
├── agent/career-agent.md # instrucoes de comportamento do agente
├── scripts/ # install.ps1, start.ps1, test.ps1, configure-*
├── tests/ # pytest
└── docs/ # SECURITY.md, SCORING.md, ARCHITECTURE.md2. 사전 요구사항
요구사항 | 버전 | 비고 |
Windows | 10/11 | Windows 11에서 테스트됨 |
Python | >= 3.11 |
|
uv | 아무거나 |
|
Claude Desktop | 최신 | MCP 사용에 필요 |
Git | 선택 사항 | 프로젝트 버전 관리용 |
3. 설치
cd C:\career-agent
powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1스크립트는 Python을 확인하고, uv가 없으면 설치하고, .venv를 만들고,
의존성을 설치하고, data/ 트리를 만들고, .env.example에서 .env를
생성하고, 세 개의 MCP가 올라오는지 검증합니다.
같은 단계에서 Claude Desktop 구성을 기록하려면:
powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1 -ConfigureClaude4. 구성
4.1 프로필 작성
이 파일들은 진실의 원천입니다. 에이전트는 이 파일에 없는 내용을 절대 주장하지 않습니다.
파일 | 넣을 내용 |
| 이름, 연락처, 요약, 학력, 차단된 회사 |
| 기술, 아키텍처, 도메인 |
| 목표 직무, 경력 수준, 근무 형태, 도시, 급여 |
| 전체 이력서 |
[PREENCHER]를 검색하세요 — 에이전트가 임의로 채울 수 없는 필드입니다.
그중 두 개는 즉시 점수에 영향을 줍니다:
경력 연수inprofile.md:nao informado인 동안 경력 차원의 "연수" 부분은 중립입니다. 에이전트는 이 숫자를 추론하지 않습니다.최소/목표inpreferences.md:[PREENCHER]인 동안 급여 차원은 공개된 급여 범위가 있는 공고에 대해 중립입니다.
4.2 .env 조정
CAREER_DATA_ROOT=C:\career-agent\data
CAREER_MIN_SCORE=70
JOB_SEARCH_ENABLE_NETWORK=true
JOB_SEARCH_SOURCES=ats
JOB_SEARCH_ATS_COMPANIES=greenhouse:stone,ashby:nubank,greenhouse:vtex,...
JOB_SEARCH_USER_AGENT=career-agent/1.0 (personal job search; contact: SEU-EMAIL)User-Agent에 이메일을 넣으세요 — 신원을 밝히는 것은 공개 API를 소비하는 예의 바른 방법입니다.
검색에 회사 추가
ats 소스는 나열한 회사의 공고만 찾습니다. 회사를 추가하려면 해당 회사의
채용 페이지를 열고 URL을 확인하세요:
채용 페이지 URL | 추가할 값 |
|
|
|
|
|
|
채용 페이지가 Gupy에 있는 회사는 추가할 수 없습니다 — Gupy는 공개 검색을 제공하지 않습니다. 이러한 회사는 수동 모드를 사용하세요.
이 프로젝트에는 LinkedIn 자격 증명 변수가 없습니다. 이는 의도적인 선택입니다.
5. Claude Desktop 구성
자동 (권장)
powershell -ExecutionPolicy Bypass -File .\scripts\configure-claude-desktop.ps1스크립트는 기존 파일을 백업하고(.backup-AAAAMMDD-HHMMSS), 모든 기존 구성과
현재 MCP를 보존하며, Career Agent의 세 항목만 추가/업데이트합니다.
수동
파일: %APPDATA%\Claude\claude_desktop_config.json
(사용자의 경우: C:\Users\Roger\AppData\Roaming\Claude\claude_desktop_config.json)
{
"mcpServers": {
"career-agent": {
"command": "C:\\career-agent\\.venv\\Scripts\\python.exe",
"args": ["C:\\career-agent\\mcp-career\\server.py"]
},
"job-search": {
"command": "C:\\career-agent\\.venv\\Scripts\\python.exe",
"args": ["C:\\career-agent\\mcp-job-search\\server.py"]
},
"career-files": {
"command": "C:\\career-agent\\.venv\\Scripts\\python.exe",
"args": ["C:\\career-agent\\mcp-career-files\\server.py"]
}
}
}절대 경로. 프로젝트를 다른 위치에 설치한 경우 모든 항목에서
C:\\career-agent를 실제 경로로 바꾸세요. 백슬래시는 두 번 입력해야 합니다 — JSON이기 때문입니다.
uv가 아닌.venv의 python을 사용하는 이유는? Claude Desktop은 사용자 PATH를 로드하지 않고 서버를 시작합니다. 가상 환경의 인터프리터를 직접 가리키면 PATH 의존성이 제거되고 시작이 더 빠르고 예측 가능해집니다.uv는 계속 설치 및 테스트 실행 도구로 사용됩니다.
저장 후: Claude Desktop을 완전히 닫고(시계 옆 시스템 트레이의 아이콘 포함 — 창을 닫아도 프로세스가 종료되지 않음) 다시 여세요.
확인하려면 채팅에서 *"career 도구가 무엇이 있나요?"*라고 물어보세요.
6. 시작 방법
서버는 Claude Desktop 자체가 시작합니다 — 직접 실행할 필요가 없습니다.
세 개가 올라오는지 수동으로 확인하려면:
powershell -ExecutionPolicy Bypass -File .\scripts\start.ps1로그: C:\career-agent\logs\ (mcp-career.log, mcp-job-search.log,
mcp-career-files.log).
7. 테스트 방법
powershell -ExecutionPolicy Bypass -File .\scripts\test.ps1스크립트는 pytest 스위트를 실행한 다음 엔드투엔드 검증을 수행합니다: 모듈 import, 세 개의 MCP 초기화, 프로필 읽기, 점수 계산, 지원 등록, 이력 조회 및 중복 감지.
단위 테스트만:
C:\career-agent\.venv\Scripts\python.exe -m pytest tests -v8. 새 채용 공고 소스 추가 방법
먼저: 소스에 문서화된 공개 API가 있는지 확인하세요. 로그인, 쿠키 또는
스크래핑이 필요한 경우 추가하지 마세요 — UnavailableJobSource와 수동
모드를 사용하세요.
src/career_core/job_sources/에 클래스 생성:
from .base import IJobSource, JobQuery, SourceResult, detect_seniority
class MinhaFonteJobSource(IJobSource):
name = "minhafonte"
provenance = "API JSON publica de X, sem autenticacao."
usable = True
def search(self, query: JobQuery) -> SourceResult:
# ... chamar a API e converter cada item em `Job`
return SourceResult(source=self.name, jobs=jobs, ok=True, message="...")src/career_core/job_sources/registry.py에 등록:
_FACTORIES = {
...,
"minhafonte": (lambda s: MinhaFonteJobSource(...), True), # True = precisa de rede
}.env에서 활성화:JOB_SEARCH_SOURCES=mock,minhafontetests/test_job_sources.py에 테스트 추가.
시스템의 다른 파일은 변경되지 않습니다. 점수, 중복 제거 및 지원은 소스가
정규화된 Job을 반환하므로 자동으로 작동합니다.
9. 새 이력서 추가 방법
C:\career-agent\data\resumes\에 .md 파일을 넣으세요. 파일 이름이
중요합니다: 에이전트는 이름이 공고와 가장 많은 공통 단어를 가진 이력서를
자동으로 선택합니다.
data/resumes/
├── curriculo-principal.md # padrao / fallback
├── curriculo-backend-dotnet.md # vence em vagas .NET/backend
├── curriculo-fullstack.md # vence em vagas fullstack/React
└── curriculo-sap.md # vence em vagas SAP특정 이력서를 강제하려면: "curriculo-sap.md를 사용하여 지원을 준비해 주세요."
10. 지원 등록 방법
수명 주기:
generate_application register_application
(mostra o pacote) --> (grava o historico)
|
v
pending_approval
|
voce aprova |
v
approved
|
VOCE se candidata no site
v
applied
|
+-------------+-----------+-----------+
v v v v
interview technical_test offer rejectedrejected와 withdrawn은 최종 상태입니다.
pending_approval에서 applied로 가는 직접 경로는 없습니다. 시도는
상태 머신에 의해 거부됩니다. 이는 사용자가 확인하기 전에는 아무것도 진행되지
않는다는 코드 수준의 보장입니다.
11. Claude Desktop 명령 예시
검색
Procure vagas Backend .NET compativeis com meu perfil.
Priorize remoto e hibrido em Goiania.
Mostre somente vagas com score >= 80.붙여넣은 공고 분석
Analise esta vaga:
[cole aqui a URL e a descricao completa]지원 준비
Prepare minha candidatura para a vaga da Nexatech.추적
Mostre minhas candidaturas pendentes.
Quais candidaturas estao aguardando minha aprovacao?
Atualize a candidatura app-xxxx para entrevista.승인
Aprovo a candidatura app-xxxx.진단
Esta tudo configurado no Career Agent?
De onde vem as vagas que voce busca?
Voce consegue se candidatar por mim no LinkedIn?12. 현재 제한사항
LinkedIn, Indeed 및 Gupy는 수동 모드로 작동합니다. 이들 중 어느 것도 지원자에게 공개 검색 API를 제공하지 않습니다. 공고를 복사하면 에이전트가 나머지를 처리합니다. 이는 보안 선택이지 미해결 과제가 아닙니다.
자동 커버리지는 구성한 회사에 따라 달라집니다.
ats소스는JOB_SEARCH_ATS_COMPANIES의 회사 공개 게시판을 스캔합니다. 기본 목록에는 검증된 10개 회사(~1,160개 공고)가 있지만 브라질 시장은 훨씬 더 많습니다 — 관심 있는 회사를 추가하세요.모든 ATS가 지원되는 것은 아닙니다. Greenhouse, Lever 및 Ashby는 공개 엔드포인트가 있습니다. Gupy, Solides 및 Kenoby는 지원자에게 공개 검색을 제공하지 않습니다.
Remotive와 Arbeitnow는 용도가 제한적입니다 (2026년 8월 측정): Remotive는
search매개변수를 무시하는 14개 공고 샘플 피드를 반환합니다; Arbeitnow는 거의 모두 유럽 및 사무실 근무인 175개 공고가 있으며 .NET/C#은 0개입니다. 사용 가능하지만 기본 패턴에서 벗어납니다.LinkedIn, Indeed 및 Gupy는 계속 수동 모드입니다 — 지원자용 공개 검색 API가 없으며, 이 프로젝트는 로그인이나 스크래핑을 자동화하지 않습니다.
요구사항 추출은 휴리스틱입니다. 불릿 형식의 설명에서는 잘 작동하지만, 연속 텍스트에서는 요구사항이 덜 구조화되어 나옵니다.
경력 수준 감지는 제목과 설명의 키워드 기반입니다. 모호한 제목은
nao_informado로 나올 수 있습니다 — 가져올 때 수동으로 입력하세요.급여는 공고가 범위를 공개할 때만 비교됩니다. 대부분의 브라질 공고는 공개하지 않으며, 이 경우 차원은 중립입니다.
맞춤 이력서는 Markdown으로 출력됩니다. V1에서는 PDF 또는 DOCX 내보내기가 없습니다.
단일 사용자, 로컬 설치. 다중 프로필, 동기화 없음.
13. 다음 단계
가치/노력 비율 순으로 정렬:
이력서를 PDF/DOCX로 내보내기 — 현재 자료는 Markdown으로 출력되며 직접 변환해야 합니다.
공개 URL에서 채용 공고 읽기 — 로그인 없는 공개 채용 페이지를 복사·붙여넣기 없이 읽습니다.
브라질 소스 — 기업별 공개 채용 엔드포인트를 노출하는 ATS를 매핑하고
IJobSource로 구현합니다.후속 조치 알림 —
applied상태로 N일 이상 머물러 있는 지원서에 표시합니다.퍼널 지표 — score, 스택, 근무 형태별 응답률을 통해 실제 데이터로 가중치를 보정합니다.
가중치 보정 — 현재는 사양에 정의된 가중치를 사용하며, 충분한 이력이 쌓이면 실제 전환되는 기준으로 조정합니다.
의미적 중복 감지 — 현재는 텍스트 유사도 기반이며, 임베딩을 사용하면 "백엔드 .NET 개발자"와 "C# 소프트웨어 엔지니어"를 구분할 수 있습니다.
보안
이 프로젝트가 설계상 하지 않는 일에 대한 요약:
하지 않는 것 | 이유 |
LinkedIn 자동 로그인 | ToS 위반, 계정 차단 위험 |
비밀번호/쿠키/토큰 저장 | 불필요한 공격 표면 |
클릭 자동화 | ToS 위반 |
지원서 자동 제출 | 최종 결정은 당신의 몫 |
메시지 자동 전송 | 최종 결정은 당신의 몫 |
안티봇/CAPTCHA 우회 | 불법 |
공격적 스크래핑 | 불법이자 무례한 행동 |
경력 위조 | 이력서의 거짓말은 당신에게 해롭습니다 |
자세한 내용은 docs/SECURITY.md를 참조하세요.
Claude의 파일 접근은 C:\career-agent\data로 제한됩니다. Claude는 C:\, 사용자 폴더, 프로젝트 자체 코드를 볼 수 없습니다.
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 Servers
- AlicenseNot gradedqualityFmaintenanceEnables users to search for jobs, prefill applications using AI, and automate submissions across major platforms like Lever and Ashby directly from Claude or Cursor. It provides a full suite of tools for managing job queues, profile data, and resumes within a chat interface.34MIT
- AlicenseAqualityBmaintenanceA personal job-search assistant for Claude Desktop that searches real job boards, scores each job 0–100 for fit, and displays a ranked board for fast triage.10791MIT
- FlicenseNot gradedqualityCmaintenanceEnables running a job search with Claude Code: parses CV, discovers roles, fetches exact application fields, drafts non-trivial applications (positioning, not autofill), and renders an offline dashboard for review.
- AlicenseNot gradedqualityCmaintenanceEnables searching and evaluating job postings from LinkedIn and freehire.me directly through Claude Desktop. Provides tools to search jobs, fetch full posting details, and assess candidate fit using eligibility scans and a scoring rubric.MIT
Related MCP Connectors
AI job search MCP — fact-checked jobs, application tracker, alerts. ChatGPT, Claude, Cursor.
Search AI-native jobs, inspect application forms, and fetch free interview-prep resources.
AI job search for Claude, ChatGPT, Cursor. 170K+ jobs, 3,800+ companies. OAuth or stdio.
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/maraMoreir/career-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server