Skip to main content
Glama
M-Sohaib-Siddiqui

resume-analyzer-mcp

Resume Analyzer MCP Server 📄🎯

Python(mcp SDK)で構築されたオープンソースの**Model Context Protocol(MCP)**サーバーで、AIモデル(Claude、Antigravity、Cursor)が履歴書を分析し、客観的なATS(Applicant Tracking System)スコアを計算し、求人に合わせたCV改善案を提案できるようにします。


🌟 特徴

🛠️ ツール

  1. analyze_resume(resume_text: str, target_job_title: str)

    • 構造的な完全性(サマリー、職務経歴、学歴、スキル、プロジェクト)を評価します。

    • 影響力の高いアクション動詞と定量的なパフォーマンス指標(例:%、$、倍率)を検出します。

    • 職務に合致した主要スキルを特定します。

  2. suggest_improvements(resume_text: str, target_job_title: str)

    • 実行可能で職務に合わせた箇条書きの改善案を生成します。

    • 弱い/受動的な表現を特定し、影響力の高い動詞へのアップグレードを推奨します。

    • Googleの「XYZ Formula」(Xを達成し、Yで測定され、Zを行うことによる)を適用します。

  3. calculate_ats_score(resume_text: str, job_description: str)

    • 履歴書テキストを対象の求人情報と比較します。

    • 正確なATSマッチ率スコアを計算します(例:ATSスコア:82%)。

    • キーワード一致率、一致した用語、重要な不足キーワードを生成します。

📚 リソース

  • resume://sample-template:業界標準のMarkdown CVテンプレート。

  • rules://ats-guidelines:ATS解析基準と箇条書きの採点基準。

💬 プロンプト

  • full_resume_review:エンドツーエンドのキャリアレビューワークフローを実行するための事前構築済みプロンプトテンプレート。


Related MCP server: resume-tailor-mcp

💬 ユーザーとクライアント向けのプロンプト例

1. 履歴書の構造分析(analyze_resume)

「analyze_resumeを使って、以下のCVをバックエンドエンジニア職向けにレビューしてもらえますか?」

# John Smith
Skills: Python, PostgreSQL, Docker, REST APIs
Experience: Software Engineer at Acme Inc. Developed backend APIs in Python and reduced database latency by 30%.
Education: B.S. in Computer Science

2. ATSマッチスコア(calculate_ats_score)

「calculate_ats_scoreを実行して、この求人情報に対するマッチ率を確認してください。」

  • 履歴書: Skills: Python, SQL, PostgreSQL, Docker

  • 求人情報: Seeking Senior Backend Engineer proficient in Python, SQL, PostgreSQL, Redis, Docker, Kubernetes, CI/CD.

3. 実行可能なCV改善提案(suggest_improvements)

「suggest_improvementsを私の履歴書に対してデータエンジニア職向けに実行してもらえますか?」

Worked on data pipelines. Helped with SQL queries and handled daily reports.

4. リソースの取得

「リソースresume://sample-templateを読んで、標準的な履歴書フォーマットを見せてもらえますか?」


🚀 クイックスタートとローカルセットアップ

1. 前提条件

  • Python 3.10以上

  • Git

2. インストール

プロジェクトのワークスペースをクローンするか、移動します:

cd D:\dev\resume-analyzer-mcp

# Create and activate virtual environment
python -m venv .venv
# On Windows PowerShell:
.\.venv\Scripts\Activate.ps1
# On macOS/Linux:
source .venv/bin/activate

# Install dependencies
pip install -e .

🧪 ローカル検証テストの実行

stdio経由でMCPサーバーをプログラム的に起動し、ツール呼び出し、リソース、プロンプトを検証する自動統合テストスイートを実行します:

python test_client.py

🔌 MCPクライアントへの接続

Claude Desktopの設定

サーバー設定をclaude_desktop_config.jsonに追加します:

  • Windows:%APPDATA%\Claude\claude_desktop_config.json

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "resume-analyzer": {
      "command": "D:\\dev\\resume-analyzer-mcp\\.venv\\Scripts\\python.exe",
      "args": [
        "D:\\dev\\resume-analyzer-mcp\\server.py"
      ]
    }
  }
}

Antigravity / Geminiの設定

ワークスペースの.agents/mcp_config.jsonまたは~/.gemini/config/mcp_config.jsonに追加します:

{
  "mcpServers": {
    "resume-analyzer": {
      "command": "python",
      "args": ["D:/dev/resume-analyzer-mcp/server.py"]
    }
  }
}

☁️ Smithery MCPマーケットプレイスへのデプロイ

Smitheryを使用すると、開発者はMCPサーバーを自動的に発見、ホスト、インストールできます。

ステップ1:リポジトリをGitHubにプッシュ

git add .
git commit -m "Add example prompts and documentation"
git remote add origin https://github.com/your-username/resume-analyzer-mcp.git
git push -u origin main

ステップ2:Smitheryに公開

  1. smithery.aiにアクセスし、GitHubでサインインします。

  2. Submit Serverをクリックし、resume-analyzer-mcpリポジトリを選択します。

  3. Smitheryがsmithery.yamlとDockerfileからコンテナを自動的にビルドし、インタラクティブなサンプルプロンプト付きでREADME.mdをレンダリングします!


📄 ライセンス

MITライセンス。商用・非商用を問わず無料で使用できます。

Available Tools

3 tools
analyze_resumeB

Analyzes the structure, completeness, impact metrics, action verbs, and skills of a resume.

ParametersJSON Schema
NameRequiredDescriptionDefault
resume_textYes
target_job_titleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must carry the burden. It states the tool analyzes multiple qualitative and quantitative aspects, implying it is a read-only analytical operation. However, it doesn't disclose any side effects, dependencies, or the format of the output, leaving some behavioral ambiguity.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct—a single sentence that front-loads the core purpose. It is appropriately concise and avoids redundant wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, the description covers key analysis dimensions but lacks details on output and optional parameter usage. An output schema exists, so return format details are less critical, but the incomplete parameter guidance lowers the score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for parameter meaning. It doesn't elaborate on resume_text format or clarify the role of target_job_title even though it's optional. This is a significant gap for a tool with only two parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action (analyzes) and the resource (resume), and lists several specific aspects: structure, completeness, impact metrics, action verbs, and skills. This distinguishes it well from siblings like suggest_improvements and calculate_ats_score, though it doesn't explicitly differentiate them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when a resume analysis is needed, listing key analysis dimensions. However, it doesn't explicitly state when to use this tool versus alternatives, such as when to use calculate_ats_score for scoring or suggest_improvements for changes.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

calculate_ats_scoreA

Calculates ATS match percentage score (0-100%) by comparing resume text against a job description.

ParametersJSON Schema
NameRequiredDescriptionDefault
resume_textYes
job_descriptionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the transparency burden. It discloses the output range (0-100%), the input types (resume text and job description), and the comparison action. This makes the tool's behavior clear, though it does not detail any underlying algorithm or edge cases, which is acceptable for a simple calculation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the main purpose, and contains no fluff. Every word adds value, making it appropriately concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with two string inputs and a numeric output, the description is complete. It explains the core functionality, and since an output schema exists, return values need not be elaborated. The tool's simplicity and clear purpose mean no additional behavioral context is required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must add meaning. It does this by explicitly stating that resume text is compared against a job description, clarifying the role of each parameter. Although parameter names are self-explanatory, the description reinforces their relationship and intended use.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates an ATS match percentage score (0-100%) by comparing resume text against a job description. This specific verb and resource set it apart from sibling tools like analyze_resume and suggest_improvements, which likely focus on other aspects.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage contexts: use when you need a numeric ATS match score. However, it does not explicitly mention when to use this tool over siblings or when not to use it. The guidance is implied rather than explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

suggest_improvementsB

Generates actionable recommendations to optimize bullet points, action verbs, and formatting.

ParametersJSON Schema
NameRequiredDescriptionDefault
resume_textYes
target_job_titleNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of disclosing behavior. It accurately states the tool generates recommendations without side effects, but it does not elaborate on the nature of the output, whether it reads or writes data, or any limitations. This is adequate for a simple suggestion tool but lacks depth, missing an opportunity to clarify that it is non-destructive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the main action and clearly states the domain. Every word adds value, and it is appropriately sized for the tool's simplicity, achieving maximum conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (2 parameters, 1 optional) and the presence of an output schema (which likely documents return values), the description is mostly sufficient but leaves out any mention of the target_job_title parameter. It does not explain when to use this tool, but the core purpose is clear. It barely meets the minimum viable standard for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must compensate. It adds meaningful detail about resume_text (referencing bullet points, action verbs, formatting), but completely ignores the optional target_job_title parameter. This leaves a significant gap in understanding how the second parameter behaves, earning a below-average score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly uses a specific verb ('Generates') and resource ('actionable recommendations to optimize bullet points, action verbs, and formatting'), making the purpose unambiguous. However, it does not explicitly differentiate from sibling tools like analyze_resume or calculate_ats_score, though the focus on improvement recommendations is distinct enough to infer a difference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus its siblings. There is no mention of alternatives, prerequisites, or typical scenarios. The only hint is the verb 'Generates', which implies a recommendation role, but no explicit usage context is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updatesv0.1.0
    • First observedanalyze_resume
    • First observedcalculate_ats_score
    • First observedsuggest_improvements

TDQS

B3.4/5.0

Scored across 3 tools

Disambiguation4/5

The three tools have distinct purposes: analyzing resume quality, suggesting improvements, and calculating ATS match. However, 'analyze_resume' and 'suggest_improvements' could overlap slightly since both deal with resume content quality, though their outputs differ (analysis vs. recommendations).

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern: analyze_resume, suggest_improvements, calculate_ats_score. The pattern is predictable and clear.

Tool Count3/5

Three tools is on the leaner side for a resume analyzer, potentially leaving users wanting more functions like resume parsing or formatting help. However, the count is still within a reasonable range for a focused tool that handles core resume analysis tasks.

Completeness3/5

The core workflow covers analyzing a resume, suggesting improvements, and calculating ATS score. However, there's a notable gap: no tool to update or create a resume, and the tools likely rely on passing full resume text each time, making the workflow feel incomplete.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers