jobhunt-copilot
Provides tools for searching GitHub repositories by keywords, filtering by stars and difficulty, and recommending open-source projects suitable for skill gap practice, along with templates for converting open-source contributions into STAR resume entries.
Integrates with OpenAI's API as an LLM provider for resume polishing, JD matching, skill gap analysis, and mock interview generation.
Provides tools for managing job application tracking records in a local SQLite database, including creating, updating, and querying applications, interviews, and deadlines.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jobhunt-copilotPolish my resume using STAR method for a software engineer role."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🎯 JobHunt-Copilot
面向技术开发者的工业级智能求职辅助外挂与定向交付引擎。维护一份本地私密 YAML 个人档案,实现双格式高保真简历排版、STAR 经历重塑、岗位 JD 穿透比对、开源练手项目赋能、全真 AI 模拟面试、求职投递看板与 MCP 跨生态协议服务。
🌟 核心特色与架构能力
📄 高保真双格式简历生成:基于 Typst 与 python-docx,一键秒级排版编译 Word (.docx) 和 PDF (.pdf),视觉考究紧凑,原生支持极具科技质感的现代风排版。
🎯 一键岗位定向全套交付流:输入目标企业 JD,端到端自动化完成“JD穿透比对 ➔ 开源练手补强 ➔ 经历定向 STAR 强化 ➔ 编译专属定制简历 ➔ 交付综合战报 ➔ 自动入库跟踪”(严格遵循零污染原则,绝不篡改主档案)。
🤖 全真 AI 场景化模拟面试官:内置三大真实面试官人设(严苛架构师/务实Lead/亲和HRBP),5 大递进面试阶段流转、穿透式追问与全景复盘体检报告(含五维雷达诊断与满分示范)。
📋 本地私密求职投递看板:基于原生 SQLite(WAL并发模式),离线跟踪网申、笔试、一面、二面、HR、Offer各阶段流转,提供未来 7 天面试日程提醒与全流程转化漏斗分析(进面率、Offer率)。
📡 全网/批量机会雷达:批量扫描岗位 JD,按人岗契合度智能降序排名、梯队分类(主投/冲刺/暂缓),自动统计跨岗位共性短板并导出战略决策简报。
🔌 Model Context Protocol (MCP) 协议服务:基于官方 MCP 协议标准搭建,7 大核心 Tools 即插即用,无缝连接 Claude Desktop、Cursor IDE、VS Code 等主流宿主。
🔒 隐私至上原则:除调用大模型 API 分析与 GitHub 检索外,所有数据(个人真实档案、简历文件、本地投递数据库
storage/tracker.db、面试记录)全部离线私密落盘,已通过.gitignore严格本地隔离,绝无云端泄露风险。
Related MCP server: job-tracker
⚡ 快速开始
1. 环境准备
需要 Python 3.12+ 和 uv。在项目根目录运行:
git clone https://github.com/Frank-Joe-99/JobHunt-Copilot.git
cd JobHunt-Copilot
uv sync
uv pip install -e .2. 准备配置
首次使用时复制示例文件;已有配置时跳过对应文件:
cp config/profile.example.yaml config/profile.yaml
cp config/preferences.example.yaml config/preferences.yaml
cp config/settings.example.yaml config/settings.yaml配置文件 | 用途说明 |
| 教育背景、技能、实习、项目等个人核心经历(主档案) |
| 目标岗位、期望城市、薪资等求职偏好与雷达阈值配置 |
| 大模型供应商(DeepSeek / OpenAI / 阿里百炼等)、API Key 与参数 |
可选个人证件照和校徽可放置于 config/assets/ 并在档案中指定路径。详见 配置与字段文档。
3. 一键校验配置
uv run check_config.py验证三份 YAML 配置文件能否正确解析并通过 Pydantic 强类型校验(不产生模型 API 费用)。
🚀 统一终端命令体验 (jobhunt / uv run main.py)
系统提供一站式命令行网关,无需记忆零碎脚本:
① 一键岗位定向全套交付 (jobhunt tailor)
针对特定企业岗位进行定向定制,生成专属双格式简历并自动建档:
# 指定本地真实 JD 文件或直接粘贴 JD 文本
uv run jobhunt tailor storage/raw_jds/01_bytedance_backend.txt
# 自定义输出文件名
uv run jobhunt tailor storage/raw_jds/01_bytedance_backend.txt -o resume_bytedance生成物料包括:专属定制版 PDF 简历、Word 简历、定向自荐信草稿、综合交付战报,并自动登记到求职看板。
② 全真 AI 场景化模拟面试 (jobhunt interview)
沉浸式多轮技术演练,支持双回车换行长答案提交与打字机流式输出:
# 交互式菜单引导(自主选择考官人设与目标企业岗位)
uv run jobhunt interview
# 或直达严苛架构师人设
uv run jobhunt interview --role strict_architect --company 字节跳动 --target-role 分布式存储研发工程师交卷后自动在终端输出五维成绩单仪表盘,并导出全景体检 Markdown 报告至 storage/interview_logs/。
③ 求职投递看板与日程管理 (jobhunt tracker)
离线私密管理求职全流程与面试日程:
# 查看求职全景转化漏斗、近期待办面试与投递跟踪清单
uv run jobhunt tracker
# 手动登记新的投递记录
uv run jobhunt tracker add --company "腾讯" --role "微信后台研发" --status applied --location "深圳" --note "官网校招投递"
# 推进阶段并预约面试日程
uv run jobhunt tracker update 1 --status interview_1 --schedule "2026-09-28 14:00" --notes "腾讯会议 123-456-789" --note "收到技术一面邀约"
# 查看未来 7 天内待办笔试/面试日程及倒计时
uv run jobhunt tracker schedules --days 7④ 机会雷达批量扫描 (jobhunt radar)
批量评估某个目录下的所有岗位 JD,智能输出匹配度排行榜与战略报告:
uv run jobhunt radar --dir storage/raw_jds⑤ 基础简历极速编译 (jobhunt resume)
基于主档案秒级编译最新的基础简历:
uv run jobhunt resume --template modern⑥ 启动 MCP 协议服务端 (jobhunt mcp)
以标准 stdio 运行 Model Context Protocol 服务端,与外部 AI 助手无缝互联:
uv run jobhunt mcp🔌 接入 Claude Desktop / Cursor (MCP 协议)
可在任何主流 AI 工具中以自然语言直接调度本系统的所有工具能力:
1. Claude Desktop 配置
在 claude_desktop_config.json 中配置:
{
"mcpServers": {
"jobhunt-copilot": {
"command": "uv",
"args": [
"--directory",
"C:\\Users\\11482\\Desktop\\JobHunt-Copilot",
"run",
"python",
"-m",
"adapters.mcp_server"
]
}
}
}2. Cursor IDE 配置
在 Cursor Settings ➔ Features ➔ MCP 中点击 Add new MCP server:
Name:
jobhunt-copilotType:
commandCommand:
uv --directory C:\Users\11482\Desktop\JobHunt-Copilot run python -m adapters.mcp_server
🧩 Codex Skills
仓库级 Codex Skill 位于 .agents/skills/,与下方 skills/ 中的 Python 业务模块相互配合。Codex 打开本仓库后可按任务自动选用,也可在输入框中显式调用:
$jobhunt-jd-analysis:单个岗位 JD 匹配分析$jobhunt-resume-review:简历经历润色与 ATS 诊断$jobhunt-resume-build:本地基础简历生成$jobhunt-project-recommendation:开源练手项目与技能补短板建议$jobhunt-job-radar:批量岗位扫描与排序$jobhunt-mock-interview:交互式模拟面试$jobhunt-application-tracker:本地投递记录与日程$jobhunt-application-package:单岗位定制申请材料
这些 Skill 不携带个人资料或 API 密钥;仍由现有本地配置提供。需要调用模型/GitHub 的流程会把相关候选人经历、JD 或技能缺口发送给所配置的服务;仅在用户要求相应分析时运行。简历、面试记录、雷达报告与投递数据库等本地生成物料保持在 Git 忽略目录中,不应提交。
📂 模块文档索引
各模块的业务细节与技术实现详见对应文档:
许可证
Available Tools
7 toolstool_analyze_jdB
深度穿透解析目标企业招聘 JD,与求职者画像进行全维度技术契合度打分,列出技能匹配点、短板缺口及量身定制的自荐信草稿。
Args: jd_text: 目标岗位的招聘 JD 纯文本或包含岗位要求的描述 provider: 可选的大模型供应商 (如 deepseek/aliyun/custom)
| Name | Required | Description | Default |
|---|---|---|---|
| jd_text | Yes | ||
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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: 输出文件基本名称(无需后缀)
| Name | Required | Description | Default |
|---|---|---|---|
| template | No | modern | |
| output_name | No | resume_default |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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转化率%及各阶段分布)。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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 天)
| Name | Required | Description | Default |
|---|---|---|---|
| days_ahead | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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: 可选的大模型供应商
| Name | Required | Description | Default |
|---|---|---|---|
| jd_text | Yes | ||
| provider | No | ||
| auto_track | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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: 可选的大模型供应商
| Name | Required | Description | Default |
|---|---|---|---|
| skills | Yes | ||
| language | No | python | |
| provider | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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: 本次状态变更或面试复盘备忘流水
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| role | Yes | ||
| status | No | applied | |
| company | Yes | ||
| location | No | ||
| record_id | No | ||
| salary_range | No | ||
| next_schedule_time | No | ||
| next_schedule_notes | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
7 tool updates
v0.1.0- First observed
tool_analyze_jd - First observed
tool_generate_resume - First observed
tool_get_funnel_analytics - First observed
tool_get_upcoming_schedules - First observed
tool_one_click_tailor - First observed
tool_recommend_projects - First observed
tool_track_application
TDQS
Scored across 7 tools
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.
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.
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.
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
Related MCP Connectors
Generate tailored, ATS-optimized resume PDFs and cover letters from a job description, over MCP.
CareerProof MCP gives AI agents direct access to a professional-grade career and workforce intelligence platform. Two namespaces: atlas_* for HR/TA teams (candidate evaluation, batch shortlisting, competency scoring, interview generation, JD analysis, custom eval frameworks, research reports) and ceevee_* for professionals (CV optimization, career positioning, salary intelligence, market reports). Backed by RAG knowledge from 50+ premium research sources (McKinsey, BCG, HBR, Gartner, WEF)
Resume builder with native MCP — create and edit resumes from your AI assistant.
Build, version and render resumes as PDFs from Claude or any MCP client.
Related MCP Servers
- FlicenseAqualityCmaintenanceEnables searching job listings, tracking applications, managing resumes, and tailoring resumes to job posts, all locally via MCP.620-
- FlicenseAqualityBmaintenanceEnables 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-
- FlicenseNot gradedqualityBmaintenanceEnables 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.-
- AlicenseAqualityBmaintenanceEnables 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.7Apache 2.0