工作搜索MCP服务器

一个用于工作搜索、个人资料加载和公司研究的标准MCP服务器,为任何MCP兼容客户端提供四种工具。

  • by ahardy42
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 ahardy42/job-search-mcp

使用说明

求职mcp服务器

用于求职、个人资料加载和公司研究的stdio MCP服务器。将4个工具暴露给任何兼容MCP的客户端。

工具

job_search

使用关键字、位置、工作类型、远程偏好、经验水平、工资和最近度的过滤器在LinkedIn上搜索工作列表。

默认值已调整为 高级、远程、全职 角色发布在 过去一周.

profile_data

加载并返回所有配置文件部分(经验、技能、教育等)和完整的连接文本。调用LLM直接将此数据用于工作对齐分析、求职信撰写或任何其他基于个人资料的任务。

job_description_search

从LinkedIn职位URL获取完整的职位描述。接受URL列表(来自 job_search 结果),并返回每个结果的完整描述文本。取数器以并行批处理的方式运行,并有延迟,以避免速率限制。

company_research

使用DuckDuckGo网络搜索对一家公司进行研究(通过Playwright)。搜索公司信息、最新新闻和Glassdoor评论。可选择抓取公司自己的网站。返回结构化数据,用于“他们说什么与实际做什么”分析。

安装

git clone https://github.com/ahardy42/job-search-mcp.git && cd job-search-mcp
npm install
npm run build
npx playwright install chromium  # required for company_research and job_description_search

需要 Node.js>=20.

要验证一切正常,请执行以下操作:

npm test

然后将服务器连接到所选的MCP客户端(请参阅 连接到您的MCP客户端 在......下面

配置文件设置

这个 profile_data 该工具需要一个包含您的经验数据的配置文件目录。

  1. 创建一个 profile/ 项目根目录中的目录(它是gitignored)
  2. 添加您的文件(Markdown、PDF或DOCX)
  3. 创建 profile/manifest.json 列出您的文件:
{
  "sections": [
    { "id": "summary", "label": "Professional Summary", "source": "summary.md", "format": "md", "order": 1 },
    { "id": "experience", "label": "Work Experience", "source": "experience.pdf", "format": "pdf", "order": 2 },
    { "id": "skills", "label": "Technical Skills", "source": "skills.md", "format": "md", "order": 3 }
  ]
}

支持的格式: md, txt, pdf, docx.

配置文件加载一次,并为服务器会话缓存。文件以显式方式处理 order 用于确定性输出。

通过以下方式覆盖配置文件目录路径 PROFILE_DIR 环境变量。

连接到您的MCP客户端

这是一个stdio服务器,它可以与任何兼容MCP的客户端配合使用。替换 /absolute/path/to/job-search-mcp/dist/index.js 使用机器上的实际路径。

节点版本管理器(nvm、nodenv、asdf): MCP客户端将服务器作为子进程生成,可能不会继承shell的PATH。使用节点二进制文件的完整路径(运行 which node 找到它)。

克劳德代码(CLI)

通过命令行:

claude mcp add --transport stdio job-search -- node /absolute/path/to/job-search-mcp/dist/index.js

或手动输入 .mcp.json (项目范围,已检查到版本控制中):

{
  "mcpServers": {
    "job-search": {
      "command": "node",
      "args": ["/absolute/path/to/job-search-mcp/dist/index.js"]
    }
  }
}

重新启动Claude Code或运行 /mcp 以验证服务器是否已连接。

克劳德桌面

编辑配置文件:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "job-search": {
      "command": "node",
      "args": ["/absolute/path/to/job-search-mcp/dist/index.js"]
    }
  }
}

退出并完全重新启动Claude Desktop(不仅仅是窗口)。在聊天输入中查找锤子图标。

VS Code

创建 .vscode/mcp.json 在您的工作空间中:

{
  "mcpServers": {
    "job-search": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/job-search-mcp/dist/index.js"]
    }
  }
}

或者通过命令行:

code --add-mcp '{"name":"job-search","type":"stdio","command":"node","args":["/absolute/path/to/job-search-mcp/dist/index.js"]}'

其他MCP客户端(游标、Codeium等)

大多数客户端使用相同的标准格式:

{
  "mcpServers": {
    "job-search": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/job-search-mcp/dist/index.js"]
    }
  }
}

环境变量

通过 PROFILE_DIR 要覆盖默认配置文件位置,请执行以下操作:

{
  "mcpServers": {
    "job-search": {
      "command": "node",
      "args": ["/absolute/path/to/job-search-mcp/dist/index.js"],
      "env": {
        "PROFILE_DIR": "/path/to/your/profile"
      }
    }
  }
}

发展

npm run dev    # watch mode with tsx
npm run build  # compile TypeScript
npm start      # run compiled server

测试

该项目使用 维测试 在单元、工具和集成层进行了102次测试。

npm test          # run all tests once
npm run test:watch  # re-run on file changes

涵盖内容:

  • 服务单元测试 --配置文件加载/缓存、LinkedIn HTML解析和URL构建、SSRF缓解措施(私有IP拒绝、DNS重新绑定、重定向验证)、HTTPS强制
  • 工具单元测试 --Zod模式验证、处理程序响应、CHARACTER_LIMIT截断、4个工具中的每一个的错误处理
  • 集成测试 --使用内存传输、工具列表、端到端工具调用和协议级别的输入验证进行完整的MCP客户端-服务器往返

以安全为重点的测试验证路径遍历、SSRF保护和输入验证不会倒退。

MCP检查员

这个 MCP检查员 提供了一个交互式web UI,用于测试对运行服务器的工具调用。

npm run inspect      # against compiled dist/ (run npm run build first)
npm run inspect:dev  # against src/ via tsx (no build needed)

开放时间: http://localhost:6274 您可以在其中浏览工具、编辑输入和查看原始响应。