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からは何もインポートしません。3つの server.py は薄いアダプターです。引数を変換し、ドメインを呼び出し、レスポンスをフォーマットします。これにより、サーバーを起動せずにロジックの100%をテストできます。
SQLiteを真実のソースとして、JSONをミラーとして。 SQLiteはトランザクション書き込み(プロセスが途中で死んでも履歴が破損しない)と、重複チェックの安価なクエリを提供し、設定はゼロです。PostgreSQLはサーバーと認証情報が必要になり、一人のスケールでは利点がないためです。applications.json は引き続き存在し、変更のたびにアトミックに書き換えられ、目視検査とGitでのバージョン管理に使用されます。これは書き込み専用です。読み戻されることはないため、2つのソースが分岐するリスクはありません。
スコアはプラグ可能なディメンションとして。 7つのディメンションのそれぞれは IScoreDimension を実装するクラスであり、単一の側面をスコアリングおよび説明します。JobScorer は合算して分類するだけです。新しいディメンションを追加しても、合算器は変更されません(Open/Closed)。
求人ソースはインターフェースの背後に。 IJobSource には4つの実装があります: 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 | 最新 | MCPsを使用するために必要 |
Git | オプション | プロジェクトのバージョン管理用 |
3. インストール
cd C:\career-agent
powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1スクリプトはPythonを確認し、uv がなければインストールし、.venv を作成し、依存関係をインストールし、data/ のツリーを作成し、.env.example から .env を生成し、3つのMCPが起動することを検証します。
同じステップでClaude Desktopの設定も書き込むには:
powershell -ExecutionPolicy Bypass -File .\scripts\install.ps1 -ConfigureClaude4. 設定
4.1 プロフィールを入力
これらのファイルは真実のソースです。エージェントは、これらのファイルにない内容を決して主張しません。
ファイル | 何を入れるか |
| 名前、連絡先、要約、学歴、ブロックする企業 |
| 技術、アーキテクチャ、ドメイン |
| 対象職種、シニアレベル、勤務形態、都市、給与 |
| 完全な履歴書 |
[PREENCHER] を検索してください — エージェントが発明できないフィールドです。
そのうちの2つは、その場でスコアを変更します:
Anos de experiencia(profile.md内):nao informadoの間、経験ディメンションの「年数」部分は中立のままです。エージェントはその数値を推測しません。Minimo/Alvo(preferences.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の3つのエントリをのみ追加/更新します。
手動
ファイル: %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です。
なぜ
.venvのpythonで、uvではないのか? Claude DesktopはユーザーのPATHを読み込まずにサーバーを起動します。仮想環境のインタープリターを直接指すことで、PATHへの依存を排除し、起動がより速く予測可能になります。uvは引き続きインストールとテスト実行のツールです。
保存後: Claude Desktopを完全に閉じて(時計の横にあるシステムトレイのアイコンも含めて — ウィンドウを閉じてもプロセスは終了しません)から、再度開いてください。
確認するには、チャットで質問してください: 「どのようなキャリアツールがありますか?」
6. 起動方法
サーバーはClaude Desktop自身が起動します — 何かを実行したままにする必要はありません。
3つが起動することを手動で確認するには:
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スイートを実行し、続いてエンドツーエンドの検証を実行します: モジュールのインポート、3つのMCPの初期化、プロフィールの読み取り、スコアの計算、応募の登録、履歴の照会、重複の検出。
ユニットテストのみ:
C:\career-agent\.venv\Scripts\python.exe -m pytest tests -v8. 新しい求人ソースの追加方法
最初に: ソースに文書化された公開APIがあるか確認してください。ログイン、Cookie、スクレイピングが必要な場合は対象外です — 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は14件の求人のサンプルフィードを返し、
searchパラメータを無視します。Arbeitnowには175件の求人がありますが、ほぼすべてヨーロッパの対面勤務で、.NET/C#はゼロです。利用可能ですが、標準外です。LinkedIn、Indeed、Gupyは引き続き手動モードです — 候補者向けの公開検索APIがなく、このプロジェクトはログインやスクレイピングを自動化しません。
要件の抽出はヒューリスティックです。 箇条書きの説明ではうまく機能しますが、連続したテキストでは、要件の構造が崩れます。
シニアレベルの検出は、タイトルと説明のキーワードによるものです。 曖昧なタイトルは
nao_informadoになる可能性があります — インポート時に手動で指定してください。給与は、求人が範囲を公開している場合にのみ比較されます。 ブラジルの求人の大半は公開していません。その場合、ディメンションは中立のままです。
カスタマイズされた履歴書はMarkdownで出力されます。 V1ではPDFやDOCXへのエクスポートはありません。
シングルユーザー、ローカルインストール。 マルチプロフィールなし、同期なし。
13. 次のステップ
価値/労力の比率で並べられています:
履歴書をPDF/DOCXにエクスポート — 現在はMarkdownで出力され、手動で 変換する必要がある。
公開URLからの求人情報の読み取り(ログイン不要の公開キャリア ページ)により、コピー&ペーストを削減。
ブラジルの情報源 — 企業ごとに求人情報の公開エンドポイントを提供している ATSをマッピングし、
IJobSourceとして実装する。フォローアップのリマインダー —
appliedのままN日以上停滞している 応募を通知する。ファネルのメトリクス — スコアごと、スタックごと、勤務形態ごとの 返信率を取得し、実際のデータで重みを調整する。
重みのキャリブレーション — 現在は仕様で定義された重みのまま。 十分な履歴が溜まったら、実際にコンバージョンに繋がるものに基づいて調整する。
意味的重複の検出 — 現在はテキスト類似度による。 埋め込みを使えば"Dev Backend .NET"と"Engenheiro de Software C#"の類似を検出できる。
セキュリティ
このプロジェクトが設計上行わないことの概要:
やらないこと | 理由 |
LinkedInへの自動ログイン | ToS違反。アカウント停止のリスク |
パスワード/cookie/tokenの保存 | 不要な攻撃対象領域 |
クリックの自動化 | ToS違反 |
応募の自動送信 | 最終判断は自分で行う |
メッセージの自動送信 | 最終判断は自分で行う |
アンチボット / CAPTCHAの回避 | 不正 |
過激なスクレイピング | 不正かつ無礼 |
経歴の捏造 | 履歴書の嘘は自分を傷つける |
詳細は docs/SECURITY.md を参照。
Claudeによるファイルへのアクセスは C:\career-agent\data に制限されます。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