Skip to main content
Glama
maraMoreir

career-agent

by maraMoreir

Career Agent

MCPを介してClaude Desktopに統合されたキャリアエージェント。求人を検索し、あなたのプロフィールとの互換性を計算し、正当な方法で履歴書をカスタマイズし、メッセージと返信を生成し、応募履歴を保持します。

最終的な外部アクションは常にあなたのものです。 エージェントが準備します。あなたがクリックします。


v1.1の新機能

機能

使用方法

求人の永続カタログ

run_job_search が収集・保存。list_matching_jobs が照会

5つのATSプロバイダー

Greenhouse、Lever、Ashby、Workable、SmartRecruiters

Adzuna(ブラジル全国インデックス)

.envADZUNA_APP_ID/ADZUNA_APP_KEY を入力

設定可能な重み

data/config/scoring.json を編集

11のスコアディメンション

.NET、SAP、税務、アーキテクチャ、バックエンド重視を含む

スケジュール検索

.\scripts\schedule.ps1 -IntervalHours 2

ローカルダッシュボード

.\scripts\start-dashboard.ps1

バックオフ付きリトライ

すべてのHTTPソースで自動

各ソースの詳細と測定結果: docs/FONTES.md


Related MCP server: job-search-mcp

目次

  1. アーキテクチャ

  2. 前提条件

  3. インストール

  4. 設定

  5. Claude Desktopの設定

  6. 起動方法

  7. テスト方法

  8. 新しい求人ソースの追加方法

  9. 新しい履歴書の追加方法

  10. 応募の登録方法

  11. Claude Desktopでのコマンド例

  12. 現在の制限

  13. 次のステップ


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(オフライン)、RemotiveJobSourceArbeitnowJobSource(認証不要の実際の公開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.md

2. 前提条件

要件

バージョン

備考

Windows

10/11

Windows 11でテスト済み

Python

>= 3.11

python --version

uv

任意

ない場合は install.ps1 がインストール

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 -ConfigureClaude

4. 設定

4.1 プロフィールを入力

これらのファイルは真実のソースです。エージェントは、これらのファイルにない内容を決して主張しません。

ファイル

何を入れるか

data/profile/profile.md

名前、連絡先、要約、学歴、ブロックする企業

data/profile/skills.md

技術、アーキテクチャ、ドメイン

data/profile/preferences.md

対象職種、シニアレベル、勤務形態、都市、給与

data/resumes/curriculo-principal.md

完全な履歴書

[PREENCHER] を検索してください — エージェントが発明できないフィールドです。

そのうちの2つは、その場でスコアを変更します:

  • Anos de experienciaprofile.md内): nao informado の間、経験ディメンションの「年数」部分は中立のままです。エージェントはその数値を推測しません

  • Minimo / Alvopreferences.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

追加するもの

job-boards.greenhouse.io/SLUG

greenhouse:SLUG

jobs.lever.co/SLUG

lever:SLUG

jobs.ashbyhq.com/SLUG

ashby:SLUG

キャリアページが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.logmcp-job-search.logmcp-career-files.log)。


7. テスト方法

powershell -ExecutionPolicy Bypass -File .\scripts\test.ps1

スクリプトはpytestスイートを実行し、続いてエンドツーエンドの検証を実行します: モジュールのインポート、3つのMCPの初期化、プロフィールの読み取り、スコアの計算、応募の登録、履歴の照会、重複の検出。

ユニットテストのみ:

C:\career-agent\.venv\Scripts\python.exe -m pytest tests -v

8. 新しい求人ソースの追加方法

最初に: ソースに文書化された公開APIがあるか確認してください。ログイン、Cookie、スクレイピングが必要な場合は対象外です — UnavailableJobSource と手動モードを使用してください。

  1. 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="...")
  1. src/career_core/job_sources/registry.py に登録:

_FACTORIES = {
    ...,
    "minhafonte": (lambda s: MinhaFonteJobSource(...), True),  # True = precisa de rede
}
  1. .env で有効化: JOB_SEARCH_SOURCES=mock,minhafonte

  2. tests/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     rejected

rejectedwithdrawn は最終状態です。

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. 次のステップ

価値/労力の比率で並べられています:

  1. 履歴書をPDF/DOCXにエクスポート — 現在はMarkdownで出力され、手動で 変換する必要がある。

  2. 公開URLからの求人情報の読み取り(ログイン不要の公開キャリア ページ)により、コピー&ペーストを削減。

  3. ブラジルの情報源 — 企業ごとに求人情報の公開エンドポイントを提供している ATSをマッピングし、IJobSourceとして実装する。

  4. フォローアップのリマインダーappliedのままN日以上停滞している 応募を通知する。

  5. ファネルのメトリクス — スコアごと、スタックごと、勤務形態ごとの 返信率を取得し、実際のデータで重みを調整する。

  6. 重みのキャリブレーション — 現在は仕様で定義された重みのまま。 十分な履歴が溜まったら、実際にコンバージョンに繋がるものに基づいて調整する。

  7. 意味的重複の検出 — 現在はテキスト類似度による。 埋め込みを使えば"Dev Backend .NET"と"Engenheiro de Software C#"の類似を検出できる。


セキュリティ

このプロジェクトが設計上行わないことの概要:

やらないこと

理由

LinkedInへの自動ログイン

ToS違反。アカウント停止のリスク

パスワード/cookie/tokenの保存

不要な攻撃対象領域

クリックの自動化

ToS違反

応募の自動送信

最終判断は自分で行う

メッセージの自動送信

最終判断は自分で行う

アンチボット / CAPTCHAの回避

不正

過激なスクレイピング

不正かつ無礼

経歴の捏造

履歴書の嘘は自分を傷つける

詳細は docs/SECURITY.md を参照。

Claudeによるファイルへのアクセスは C:\career-agent\data に制限されます。C:\ も、ユーザーフォルダも、プロジェクト自体のコードも見えません。

F
license - not found
Not graded
quality - not tested
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    F
    maintenance
    Enables 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.
    34
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    A 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.
    10
    79
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables 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.
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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