内容
# MCP 职位搜索
将多个招聘网站的职位发布链接输入到这里,MCP 连接的 Claude 会获取职位发布的原文并进行分析(公司/职位/截止日期/资格要求/优先事项/主要工作),并管理截止日期时间线和自荐信草稿。这是一个用于个人职位发布的 MCP 服务器。
主机(Claude Desktop 或 Claude Code)负责 LLM 分析,服务器仅负责原始数据的收集、存储和查询,因此无需额外的 LLM API 费用。
## 前置条件
- [Node.js](https://nodejs.org/) 20 或以上(开发时使用 22.13.0)
- [Claude Desktop](https://claude.ai/download) 或 [Claude Code](https://docs.claude.com/en/docs/claude-code) — 两者之一即可。
## 安装与构建
```bash
git clone https://github.com/doHoaSen/MCP_JobSearch.git
cd MCP_JobSearch
npm install
npm run build --workspace=@mcp-jobsearch/mcp-server
```
构建完成后,`packages/mcp-server/dist/index.js` 将被生成。服务器运行时会在同一包中的 `data/jobs.sqlite` 存储数据(首次运行时会自动创建)。
## 连接到 Claude Code
存储库根目录下的 `.mcp.json` 已预先设置为:
```json
{
"mcpServers": {
"job-search-mcp": {
"command": "node",
"args": ["packages/mcp-server/dist/index.js"]
}
}
}
```
在存储库根目录下使用 `claude` 命令启动会话,服务器将自动被识别。首次连接时,如果 `claude mcp list` 显示为 `Pending approval`,请再启动一个会话进行批准。
## 连接到 Claude Desktop
在 Claude Desktop 配置文件中添加以下内容:`<REPO_PATH>` 请替换为存储库的绝对路径。
- Windows: `%APPDATA%\Claude\claude_desktop_config.json`
- macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"job-search-mcp": {
"command": "node",
"args": ["<REPO_PATH>/packages/mcp-server/dist/index.js"]
}
}
}
```
保存后重启 Claude Desktop 即可连接。
## 提供的工具(Tools)
| 工具 | 说明 |
|---|---|
| `capture_job_posting` | 保存职位发布的 URL 或文本(无需 LLM 分析) |
| `save_job_analysis` | 保存主机分析的结构化结果(公司/职位/截止日期/资格要求/优先事项/主要工作) |
| `list_timeline` | 查询按截止日期排序的职位发布列表 |
| `get_job` | 查询特定职位发布的全部数据(原文、分析结果、自荐信草稿) |
| `save_cover_letter_draft` | 保存主机生成的自荐信草稿 |
| `update_profile` | 更新用于生成自荐信的简历/优势信息 |
## 提供的资源(Resources)
| 资源 URI | 说明 |
|---|---|
| `job://{id}` | 保存的职位发布的全部数据 |
| `profile://user` | 用于生成自荐信的简历/优势信息 |
## 使用方法
在与 Claude 的对话窗口中粘贴职位发布链接并请求分析,Claude 将使用 `capture_job_posting` 获取原文并使用 `save_job_analysis` 保存结构化结果。此后,可以使用 `list_timeline` 查询截止日期临近的职位发布,或使用 `get_job` 查询特定职位发布。
## 支持的招聘网站
| 网站 | 状态 |
|---|---|
| Wanted (wanted.co.kr) | 支持 — 使用非官方内部 API (`chaos/jobs/v4`) 获取技术栈标签 |
| 人才网 (saramin.co.kr) | 支持 — 使用 `view-ajax` 端点获取详情页 |
| 智联招聘 (jobkorea.co.kr) | 支持 — 静态 HTML |
| 点评 (jumpit.saramin.co.kr) | 支持 — 静态 HTML |
| 群组购 (groupby.kr) | 支持 — 静态 HTML |
| 其他网站 | 需要单独处理,可能仅支持静态 HTML 解析。客户端渲染页面可能获取不到原文。 |
如果某个网站无法获取数据,可以在浏览器开发者工具的 Network 标签页中找到实际填充内容的 API 请求,并将其添加到 `packages/mcp-server/src/lib/fetchPosting.ts` 中以解决问题。
## 局限性
- Wanted 和 人才网 使用的是非官方内部 API,如果网站结构发生变化,可能会导致功能失效。
- 需要登录的非公开职位发布或无法通过上述方式获取原文的网站暂不支持。
- 数据仅存储在本地 SQLite 文件中,不支持多用户数据共享(个人使用)。