Skip to main content
Glama
Frank-Joe-99

jobhunt-copilot

by Frank-Joe-99

🎯 JobHunt-Copilot

本地优先的开发者智能求职辅助工具与定向交付引擎。通过本地私密 YAML 档案,提供简历双格式排版、STAR 经历提炼、岗位契合度分析、开源练手项目推荐、模拟面试、投递看板与 MCP 跨生态协议服务。


📖 核心特性与架构定位

JobHunt-Copilot 面向应届生与技术开发者,解决简历缺乏重点、对岗位要求理解不透、面试缺乏实战演练等求职痛点。所有操作遵循本地优先与数据零污染原则:

模块名称

核心能力

输入与产物

简历排版引擎

基于 Typst 与 python-docx,秒级编译双格式简历

输入 Profile ➔ 输出 PDF 与 Word (.docx)

一键定向交付流

串联 JD 解析、开源赋能、经历 STAR 强化与简历生成

输入目标 JD ➔ 输出专属简历与综合战报(内存深拷贝,不污染主档案)

模拟面试状态机

三类面试官风格(硬核架构师/务实Leader/HRBP),多阶段追问

交互式终端对练 ➔ 输出六维评估报告与 Markdown 复盘日志

投递看板与日程

基于本地 SQLite WAL 模式,管理投递进度与面试日程

记录网申/一面/二面/HR面/Offer ➔ 输出转化漏斗与到期提醒

批量机会雷达

批量扫描文件夹内 JD,按契合度排序并识别共性短板

输入多份 JD 文本 ➔ 输出机会梯队榜单与攻坚策略

MCP 跨生态服务

遵循标准 Model Context Protocol 规范,暴露 13 个类型化工具与 1 项脱敏资源

连接 Claude Desktop / Cursor / VS Code / Codex

IMPORTANT

隐私至上原则:除调用配置的大模型 API 与 GitHub 公共接口外,个人主档案、简历文件、本地数据库(storage/tracker.db)与面试日志均保存在本地,通过 .gitignore 隔离,严禁向外部同步。


Related MCP server: job-tracker

⚡ 快速开始 (Getting Started)

1. 前置条件 (Prerequisites)

  • 安装 Python 3.12 或更高版本。

  • 安装包管理工具 uv。

2. 操作步骤 (Step-by-Step Procedure)

步骤 1:克隆项目并安装依赖

在终端中执行下列命令克隆代码库并完成虚拟环境同步:

git clone https://github.com/Frank-Joe-99/JobHunt-Copilot.git
cd JobHunt-Copilot
uv sync

预期结果:终端输出 Resolved ... packages 并成功生成 .venv 虚拟环境。

步骤 2:创建本地配置文件

复制模板文件生成工作配置文件(模板位于 config/*.example.yaml):

cp config/profile.example.yaml config/profile.yaml
cp config/preferences.example.yaml config/preferences.yaml
cp config/settings.example.yaml config/settings.yaml

根据个人实际情况编辑上述文件:

  • config/profile.yaml:填写真实教育背景、技能清单、实习经历与项目经历。

  • config/preferences.yaml:设定求职意向岗位、城市与期望薪资。

  • config/settings.yaml:配置大模型提供商(DeepSeek、OpenAI、阿里百炼等)与 API Key。

步骤 3:校验配置完整性

运行配置校验脚本,确保 YAML 语法与数据类型符合系统契约:

uv run python -X utf8 check_config.py

预期结果:终端打印 [✓] All configurations validated successfully!,不产生任何外部大模型请求费用。


🚀 终端命令操作指南 (CLI Guide)

系统通过统一入口 jobhunt(或 uv run main.py)提供全套命令行功能。

1. 一键岗位定向全套交付 (jobhunt tailor)

根据目标岗位的招聘需求,自动化生成专属简历并完成投递归档。

  • 执行命令:

    # 语法:uv run jobhunt tailor <JD文本路径或文本内容> [选项]
    uv run jobhunt tailor storage/raw_jds/01_bytedance_backend.txt -o resume_bytedance
  • 参数说明:

    参数名

    简写

    必填

    默认值

    说明

    jd_input

    无

    是

    -

    目标岗位 JD 文本文件路径,或直接传入 JD 纯文本

    --output-name

    -o

    否

    自动根据企业和岗位生成

    导出简历文件的基本名称(不含扩展名)

    --template

    -t

    否

    modern

    简历排版模板,可选 modern(现代专业)或 minimal(极简学术)

    --no-github

    无

    否

    False

    禁用 GitHub 开源练手项目检索

    --no-track

    无

    否

    False

    禁止自动将本次交付登记到求职看板

  • 预期产物:

    • 定制简历:storage/resumes/<output_name>.pdf 与 .docx

    • 交付战报:storage/exports/package_<company>_<role>_<timestamp>.md


2. 全真 AI 场景化模拟面试 (jobhunt interview)

进入交互式终端模拟面试,支持长文本作答与实时复盘评估。

  • 执行命令:

    # 方式 A:启动交互式向导选择岗位与面试官人设
    uv run jobhunt interview
    
    # 方式 B:直接指定参数启动
    uv run jobhunt interview --role strict_architect --company 字节跳动 --target-role 后端开发工程师
  • 参数说明:

    参数名

    必填

    默认值

    说明

    --role

    否

    交互选择

    面试官风格:strict_architect(严苛架构师)、practical_lead(务实组长)、hrbp(HR)

    --company

    否

    "目标大厂"

    目标企业名称

    --target-role

    否

    档案设定值

    目标求职岗位

  • 交互指令:

    • 输入作答内容后按两次回车提交。

    • 输入 next:跳过当前面试环节。

    • 输入 finish:提前结束面试并生成复盘报告。

  • 预期产物:终端打印五维能力雷达评分,并在 storage/interview_logs/ 下生成完整复盘 Markdown 报告。


3. 求职投递看板与日程管理 (jobhunt tracker)

本地管理求职生命周期,统计漏斗转化率与面试待办日程。

  • 执行步骤与命令:

    1. 查看投递总览与当前漏斗:

      uv run jobhunt tracker
    2. 登记新投递记录:

      uv run jobhunt tracker add --company "腾讯" --role "后台开发" --status applied --location "深圳" --note "官网投递"
    3. 推进流程状态并设置面试提醒:

      uv run jobhunt tracker update 1 --status interview_1 --schedule "2026-10-25 14:00" --notes "腾讯会议 123-456-789"
    4. 查询未来待办日程:

      uv run jobhunt tracker schedules --days 7
  • 状态枚举(status): wishlist(心愿单)➔ applied(已投递)➔ assessment(笔试/测评)➔ interview_1(一面)➔ interview_2(二面)➔ hr_stage(HR面)➔ offer(录用)➔ rejected(未通过)➔ closed(流程关闭)。


4. 批量岗位雷达扫描 (jobhunt radar)

批量评估指定目录内的所有 .txt 岗位文件,输出契合度榜单与攻坚策略。

  • 执行命令:

    uv run jobhunt radar --dir storage/raw_jds
  • 预期产物:在终端输出排序榜单,并在 storage/radar_reports/ 生成详细战略评估简报。


5. 编译基础本地简历 (jobhunt resume)

基于主档案直接生成双格式简历,不进行特定岗位定制。

  • 执行命令:

    uv run jobhunt resume --template modern -o my_resume
  • 预期产物:生成 storage/resumes/my_resume.pdf 与 storage/resumes/my_resume.docx。


6. 运行 MCP 协议服务 (jobhunt mcp)

启动 Model Context Protocol 服务端,支持外部 AI 宿主通过标准 stdio 调度求职工具。

  • 执行命令:

    uv run jobhunt mcp
  • 验证方法:服务正常启动后等待 stdio JSON-RPC 消息输入。详细集成配置见 MCP 适配层文档。


🔌 外部 AI 宿主接入 (MCP Integration)

1. Codex 接入

向 ~/.codex/config.toml 追加配置(或运行 uv run python adapters/generate_client_configs.py --install-codex 自动写入):

[mcp_servers.jobhunt-copilot]
command = "uv"
args = [
    "--directory",
    "C:/Users/11482/Desktop/JobHunt-Copilot",
    "run",
    "python",
    "-X",
    "utf8",
    "-m",
    "adapters.mcp_server",
]
startup_timeout_sec = 60
tool_timeout_sec = 180

2. Claude Desktop 接入

打开 %APPDATA%\Claude\claude_desktop_config.json 并添加:

{
  "mcpServers": {
    "jobhunt-copilot": {
      "command": "uv",
      "args": [
        "--directory",
        "C:\\Users\\11482\\Desktop\\JobHunt-Copilot",
        "run",
        "python",
        "-X",
        "utf8",
        "-m",
        "adapters.mcp_server"
      ]
    }
  }
}

3. Cursor 接入

进入 Settings ➔ Features ➔ MCP ➔ Add new MCP server:

  • Name: jobhunt-copilot

  • Type: command

  • Command: uv --directory "C:\Users\11482\Desktop\JobHunt-Copilot" run python -X utf8 -m adapters.mcp_server


🧩 Codex Skills 调用说明

仓库级 Skill 定义位于 .agents/skills/。以本仓库作为工作目录打开 Codex 时即可生效:

  • 调用语法:在对话框键入 $ 并选择对应技能,例如:

    $jobhunt-jd-analysis 帮我分析以下 JD 与我的背景匹配度:...
  • 内置 8 大技能列表:

    1. $jobhunt-jd-analysis:岗位契合度深度拆解

    2. $jobhunt-resume-review:经历 STAR 重构与 ATS 体检

    3. $jobhunt-resume-build:本地简历排版导出

    4. $jobhunt-project-recommendation:开源项目攻坚推荐

    5. $jobhunt-job-radar:多岗位机会雷达扫描

    6. $jobhunt-mock-interview:全真模拟面试演练

    7. $jobhunt-application-tracker:求职流程与日程跟踪

    8. $jobhunt-application-package:一键全套定制求职物料


📂 模块文档导航

各子模块的详细设计与业务规范见对应文档:


📄 许可证

本项目基于 MIT 许可证 开源。

Available Tools

7 tools
tool_analyze_jdB

深度穿透解析目标企业招聘 JD,与求职者画像进行全维度技术契合度打分,列出技能匹配点、短板缺口及量身定制的自荐信草稿。

Args: jd_text: 目标岗位的招聘 JD 纯文本或包含岗位要求的描述 provider: 可选的大模型供应商 (如 deepseek/aliyun/custom)

ParametersJSON Schema
NameRequiredDescriptionDefault
jd_textYes
providerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It does add useful context beyond the name — the analysis relies on the user's 求职者画像 and produces a scoring/gap/cover-letter bundle rather than a bare analysis — but it says nothing about permissions, cost/latency of the LLM call, whether results are persisted, or rate limits.

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 purpose sentence is front-loaded and dense with concrete deliverables, and the Args block is short. The Args block partially duplicates the input schema, but it is the only place the parameter meaning is documented given 0% schema coverage, so it earns its space.

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?

An output schema exists, so return values need not be spelled out (the description does so anyway, mildly redundantly). However, with zero annotations and no output-schema visibility into error/empty cases, the definition omits behavioral essentials such as profile prerequisites and whether the generated cover letter is stored, leaving the picture only minimally viable.

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?

Schema description coverage is 0%, so the description must compensate, and it largely does: it explains jd_text as raw JD text or a requirements description, and characterizes provider as an optional LLM vendor with concrete examples (deepseek/aliyun/custom). It stops short of stating the default/fallback provider behavior, which would be needed for a 5.

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 names a specific verb and resource ('深度穿透解析目标企业招聘 JD') and enumerates concrete outputs (fit scoring, skill match points, gap list, cover-letter draft), so the agent knows exactly what the tool produces. It does not explicitly distinguish itself from overlapping siblings such as tool_one_click_tailor, which also appears to tailor application material, so it falls short of a 5.

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?

There is no when-to-use guidance, no prerequisites (e.g. whether a stored job-seeker profile must already exist), and no named alternatives. Given the sibling set contains tool_one_click_tailor and tool_generate_resume, which plausibly overlap with JD-driven tailoring, the absence of routing guidance is a real gap.

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

tool_generate_resumeB

根据本地求职者主档案 (config/profile.yaml),排版并编译输出高质量 PDF 与 Word (docx) 双格式简历。

Args: template: 简历视觉主题模板,支持 'modern'(现代专业风)或 'minimal'(极简学术风) output_name: 输出文件基本名称(无需后缀)

ParametersJSON Schema
NameRequiredDescriptionDefault
templateNomodern
output_nameNoresume_default

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full behavioral disclosure. It states it reads a local profile and outputs two formats, but does not disclose whether it overwrites existing files, what permissions are required, error behavior if the profile is missing, or any rate limits. This is a significant gap for a generation 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 front-loaded with the core action, followed by a compact Args section. Every sentence earns its place, with no redundant or filler text. Efficient and well-structured.

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?

An output schema exists, so return values need not be explained. However, with no annotations, the description should provide more behavioral context, such as prerequisites (profile.yaml must exist), overwrite behavior, or error handling. It covers purpose and parameters adequately but leaves key operational details unspecified.

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?

Schema description coverage is 0%, so the description must compensate. It does so by documenting both parameters: 'template' with allowed values ('modern' or 'minimal') and 'output_name' with the note that no suffix is needed. This adds meaningful semantics beyond the schema, though it omits default values that are present in the schema.

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?

States a specific verb and resource: '排版并编译输出高质量 PDF 与 Word (docx) 双格式简历' (typeset and compile high-quality PDF and Word dual-format resume). This clearly distinguishes it from siblings like tool_analyze_jd or tool_track_application, but it does not explicitly name or differentiate from any alternative, so it falls short of a perfect 5.

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 implies usage by saying it uses the local profile (config/profile.yaml), but provides no explicit when-to-use guidance, no conditions for selecting this tool over alternatives like tool_one_click_tailor, and no prerequisites or exclusions. This is no guidance beyond the basic purpose.

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

tool_get_funnel_analyticsA

获取当前个人求职全流程转化漏斗统计(投递总量、正式投递量、笔试数、进面数、Offer数、进面率%、Offer转化率%及各阶段分布)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It tells the agent the returned metric categories, which is useful context, and the read-oriented verb 获取 implies a safe retrieval operation. However, it does not disclose whether this requires authentication, whether data is scoped to the current user, or any other operational behavior.

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 definition is a single front-loaded sentence that states the action and resource immediately. The parenthetical metric list is long but serves the purpose of specifying the output scope, so it earns its place, though it slightly bloats the sentence.

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

Completeness4/5

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

The tool has no parameters and an output schema exists, so the description does not need to enumerate return values; it nonetheless lists them for scope. For a simple parameterless read tool, this is nearly complete, with the only gap being the absence of explicit usage guidance.

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 tool takes zero parameters, so the baseline score is 4. There is nothing for the description to clarify beyond confirming that the call requires no inputs.

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 states a specific verb (获取/get) and a precise resource (个人求职全流程转化漏斗统计/personal job-seeking conversion funnel statistics). No sibling tool provides analytics or funnel data, so it is clearly distinguishable from the resume, JD, project, tracking, and schedule tools.

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 by naming the exact metrics returned, but it never states when an agent should call this tool versus other tracking tools. There is no direct sibling alternative for funnel analytics, so the lack of explicit guidance is less harmful, but the description does not actively route the agent.

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

tool_get_upcoming_schedulesA

查询未来若干天内(默认 7 天)以及近 3 天未关闭的笔试与面试待办日程提醒及倒计时。

Args: days_ahead: 检索未来多少天内的日程(默认 7 天)

ParametersJSON Schema
NameRequiredDescriptionDefault
days_aheadNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It does disclose a non-obvious behavioral trait: results include unclosed items from the past 3 days in addition to the future window, which the agent could not infer. It does not state read-only nature or sorting/limit behavior beyond that.

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?

Two short, front-loaded sentences with no filler. The Args block is slightly redundant with the schema, but the size is appropriate for the tool's simplicity.

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

Completeness4/5

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

An output schema exists, so return values need not be described. For a one-parameter read tool, the description covers the lookup window and the past-3-day inclusion, which is sufficient for correct invocation.

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?

Schema description coverage is 0%, so the description must compensate, and it does by explaining days_ahead as the future search window and its default of 7 days. It adds little about type or valid range, but the core semantics are conveyed.

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?

States a specific verb (查询) and resource (笔试与面试待办日程提醒及倒计时), plus the time scope. It clearly distinguishes the retrieval of schedules from sibling write/analysis tools like tool_generate_resume or tool_track_application, though it never names a sibling explicitly.

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 when to use it (fetching upcoming to-do reminders) and supplies the default window, but gives no explicit when-not guidance or routing against alternatives. Usage is implied rather than stated.

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

tool_one_click_tailorB

【一键岗位定向全套交付流】输入目标岗位招聘 JD,端到端自动完成: JD深度比对 ➔ 开源项目补强 ➔ 重点经历 STAR 强化 ➔ 编译专属双格式简历 ➔ 生成投递战报 ➔ 自动登记入库跟踪(防腐零污染)。

Args: jd_text: 目标岗位的招聘 JD 纯文本或文件路径 auto_track: 是否在生成定制简历后自动将其登记到投递看板(默认 True) provider: 可选的大模型供应商

ParametersJSON Schema
NameRequiredDescriptionDefault
jd_textYes
providerNo
auto_trackNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations exist, so the description carries the full behavioral burden for a multi-step, side-effecting pipeline. It hints at a write (auto-registering the resume into the tracking board) but says nothing about permissions, files written to disk, cost/latency of the multi-step flow, failure modes, or what '防腐零污染' actually guarantees.

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

Conciseness3/5

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

The pipeline is front-loaded in a single arrow-separated line followed by an Args block, which is well ordered. However, decorative jargon such as '防腐零污染' consumes space without conveying actionable meaning, and the header mixes branding with specification.

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?

An output schema exists, so return values need not be described, and the pipeline stages are enumerated. Still, for a complex mutation-heavy orchestrator with zero annotation coverage, the description omits partial-failure behavior, side effects beyond tracking, and prerequisites, leaving meaningful gaps.

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?

Schema description coverage is 0%, yet the description documents all three params and adds real meaning beyond the bare schema: jd_text accepts plain text or a file path, auto_track controls post-generation registration with a stated default, and provider is flagged as an optional LLM selector. Only provider lacks any semantic detail.

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 names a concrete composite verb chain (JD comparison → project augmentation → STAR reinforcement → dual-format resume → battle report → tracking registration), so an agent knows exactly what the tool delivers. It clearly reads as an orchestration superset of siblings like analyze_jd/generate_resume, but it never names or contrasts with them, so differentiation stays implicit.

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 '一键...全套交付流' framing implies the usage context (one call for the full pipeline), but there is no explicit when-to-use statement, no exclusions, and no mention of the granular sibling tools an agent could choose instead. Guidance is only inferable.

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

tool_recommend_projectsA

针对技能短板(如 Kafka, K8s, Redis, 分布式存储等),检索 GitHub 高价值开源实战项目,并由大模型提供极简速成学习路线与简历 STAR 范文。

Args: skills: 待攻坚的技能关键词列表,例如 ["Kafka", "Redis"] language: 偏好的主语言(默认 python) provider: 可选的大模型供应商

ParametersJSON Schema
NameRequiredDescriptionDefault
skillsYes
languageNopython
providerNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses that it searches GitHub and uses an LLM to generate learning paths and resume STAR examples, but it omits operational details such as authentication needs, rate limits, latency, or cost.

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 compact, front-loads the core purpose, and uses an Args section to document parameters efficiently. Every part earns its place, though the title is absent and the parameter list could be slightly more structured.

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?

With an output schema present, the description need not explain return values. For a three-parameter recommendation tool with no annotations and zero schema coverage, it adequately covers purpose and parameters, but it lacks usage alternatives and deeper behavioral context.

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?

Schema description coverage is 0%, so the description must compensate. It documents all three parameters with useful meaning: skills are skill keywords with examples, language is the preferred primary language with default python, and provider is an optional LLM provider.

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 states a specific verb and resource: retrieves GitHub high-value open-source projects for skill gaps, then has an LLM generate a crash learning path and resume STAR examples. The purpose is clear, but it does not explicitly distinguish itself from sibling tools such as resume or JD analysis tools.

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 phrase '针对技能短板' gives an implied when-to-use context, so the agent can infer this is for skill-gap project discovery. However, it does not state when not to use it or compare it to alternatives among the sibling tools.

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

tool_track_applicationA

求职投递看板管理:登记新投递记录,或根据 record_id 推进已有求职流程阶段(如更新为一面/预约面试时间/录入复盘笔记)。

Args: company: 企业名称(如:字节跳动) role: 岗位名称(如:后端开发工程师) status: 投递状态 (wishlist / applied / assessment / interview_1 / interview_2 / hr_stage / offer / rejected / closed) record_id: 若提供已有记录 ID 则执行状态更新与日程录入;若不传则创建新投递 next_schedule_time: 下一次面试或笔试时间(如 "2026-09-28 14:00") next_schedule_notes: 日程备忘(如 "飞书会议号 123-456-789") salary_range: 薪资预期或待遇范围 location: 工作城市 note: 本次状态变更或面试复盘备忘流水

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNo
roleYes
statusNoapplied
companyYes
locationNo
record_idNo
salary_rangeNo
next_schedule_timeNo
next_schedule_notesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden; it does disclose the create-vs-update branching and that notes accumulate as a per-change log. It does not state permissions, whether updates are reversible, or what happens to omitted fields, leaving meaningful behavioural gaps for a mutation tool.

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 purpose is front-loaded in one sentence, followed by a compact parameter list where each line adds distinct information. Slightly verbose in the repeated framing of the Args block, but there is no redundant prose to cut.

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

Completeness4/5

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

For a 9-parameter dual-mode tool, the description covers both modes, every parameter, and example values; an output schema exists so return values need not be explained. The remaining omission is behavioural detail (permissions, partial-update semantics) rather than anything blocking correct invocation.

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

Parameters5/5

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

Schema description coverage is 0%, so the inline Args block has to do all the work and largely does: it enumerates the accepted status values (wishlist/applied/assessment/interview_1/interview_2/hr_stage/offer/rejected/closed), explains the record_id branch, and supplies concrete format examples for time ('2026-09-28 14:00') and free-text fields.

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 opening sentence names a specific verb and resource (求职投递看板管理/登记投递记录) and immediately states the dual behaviour: create a new record or advance an existing one via record_id. This distinguishes it cleanly from siblings like tool_get_funnel_analytics and tool_get_upcoming_schedules, so an agent can pick it without opening a schema.

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

Usage Guidelines4/5

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

It gives explicit mode-selection logic: pass record_id to update stage/schedule, omit it to create a new application, and lists concrete update cases (interview_1, scheduling, review notes). It does not name any alternative sibling (e.g. tool_get_upcoming_schedules for reading schedules back), which keeps it short of a 5.

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. 7 tool updatesv0.1.0
    • First observedtool_analyze_jd
    • First observedtool_generate_resume
    • First observedtool_get_funnel_analytics
    • First observedtool_get_upcoming_schedules
    • First observedtool_one_click_tailor
    • First observedtool_recommend_projects
    • First observedtool_track_application

TDQS

A3.7/5.0

Scored across 7 tools

Disambiguation4/5

Most tools have clearly distinct purposes (resume generation, JD analysis, project recommendation, tracking, schedules, analytics). However, tool_one_click_tailor orchestrates and overlaps heavily with tool_analyze_jd, tool_recommend_projects, and tool_generate_resume, so an agent may be unsure when to invoke the composite pipeline versus the individual steps.

Naming Consistency4/5

Nearly all tools follow a consistent snake_case verb_noun pattern with a uniform 'tool_' prefix (generate_resume, analyze_jd, recommend_projects, track_application, get_upcoming_schedules, get_funnel_analytics). The only minor deviation is tool_one_click_tailor, whose naming doesn't fit the verb_noun mold as cleanly.

Tool Count5/5

Seven tools is well-scoped for a personal job-hunting copilot, covering the core workflow stages without filler. Each tool earns its place, with the composite tailor tool providing convenience over the granular steps.

Completeness4/5

The surface covers resume generation, JD matching, skill-gap project discovery, application tracking (create/update), schedule reminders, and funnel analytics — a strong lifecycle. Minor gaps remain, such as no delete/archive operation for tracked applications and no standalone profile-editing tool, but these are workable.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    C
    maintenance
    Enables searching job listings, tracking applications, managing resumes, and tailoring resumes to job posts, all locally via MCP.
    6
    20
    -
  • F
    license
    A
    quality
    B
    maintenance
    Enables managing a job search through natural language: tracking applications, discovery leads, interview prep, and resume generation. Connects to Claude via MCP to read and update local Excel files and documents.
    35
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables Claude Desktop to manage a job search end-to-end: find and score job listings, tailor resumes, generate application messages, and track application history, while leaving final external actions to the user.
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables LLM clients to analyse job postings, tailor resumes from an evidence-labelled profile, validate every claim against that profile, and track applications, all through deterministic MCP tools.
    7
    Apache 2.0