返回市场
任务监视器-mcp服务器

任务监视器-mcp服务器

作者:borgius13 星标更新:2025-05-01

项目介绍

JobSpy MCP Server

一个模型上下文协议(MCP)服务器,使像Claude这样的AI助手能够使用JobSpy工具在多个职位列表平台上搜索工作。

功能

  • 在多个平台(如Indeed、LinkedIn、Glassdoor等)上搜索工作
  • 根据搜索词、地点、时间段等进行筛选
  • 获取结构化的职位数据,便于AI模型处理
  • 将结果格式化为JSON或CSV
  • 多种传输选项:用于Claude集成的stdio,以及用于Web客户端的SSE

预备条件

  • Node.js 16+
  • Python 3.6+
  • 已安装并可用的JobSpy工具

安装

# 克隆仓库
git clone https://github.com/yourusername/jobspy-mcp-server.git
cd jobspy-mcp-server

# 安装依赖
npm install

# 确保JobSpy工具已正确设置
cd ../jobSpy
pip install -r requirements.txt
chmod +x run.sh

配置

服务器会自动尝试在标准位置找到JobSpy脚本:

  • ../jobSpy/run.sh(相对于服务器目录)
  • ./run.sh(当前目录)
  • /app/run.sh(Docker环境)

环境变量

你可以通过以下环境变量配置服务器:

环境变量描述默认值
JOBSPY_DOCKER_IMAGEJobSpy使用的Docker镜像jobspy
JOBSPY_ACCESS_TOKENJobSpy API访问令牌(如有需要)none
PORTMCP服务器端口9423
HOSTHTTP服务器主机'0.0.0.0'
ENABLE_SSE启用Server-Sent Events传输0

设置配置

你可以通过多种方式设置这些配置值:

1. 直接使用环境变量

export JOBSPY_DOCKER_IMAGE=jobspy
export JOBSPY_HOST='0.0.0.0'
export JOBSPY_PORT=9423
export ENABLE_SSE=1

2. 使用.env文件

在根目录创建一个.env文件,并添加你的配置:

JOBSPY_DOCKER_IMAGE=jobspy
JOBSPY_HOST='0.0.0.0'
JOBSPY_PORT=9423
ENABLE_SSE=1

使用方法

启动服务器

npm start

与Claude Desktop连接

在Claude Desktop配置文件中添加以下内容(通常位于~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "jobspy": {
      "command": "node",
      "args": ["/path/to/jobspy-mcp-server/src/index.js"],
      "env": {
        "ENABLE_SSE": 0
      }
    }
  }
}

与Web客户端使用(SSE传输)

服务器暴露HTTP端点,允许Web应用程序与JobSpy MCP服务器交互:

  • 连接以获取更新GET /mcp/connect

    • 建立Server-Sent Events(SSE)连接以实现实时更新
    • 返回进度更新和职位搜索结果
  • 发送请求POST /mcp/request

    • 接受MCP格式的工具调用请求
    • 返回工具响应

示例JavaScript客户端用于浏览器:

// 连接到SSE端点
const eventSource = new EventSource('http://localhost:9423/mcp/connect');

// 监听更新
eventSource.onmessage = function(event) {
  const data = JSON.parse(event.data);
  console.log('收到更新:', data);
  
  // 处理进度更新
  if (data.type === 'progress') {
    updateProgressBar(data.progress);
  }
};

// 发送搜索请求
async function searchJobs() {
  const response = await fetch('http://localhost:9423/mcp/request', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json'
    },
    body: JSON.stringify({
      tool: 'search_jobs',
      params: {
        search_term: '软件工程师',
        location: '加利福尼亚州旧金山',
        site_names: 'indeed,linkedin'
      }
    })
  });
  
  return await response.json();
}

API使用

服务器暴露了以下端点:

搜索职位

GET /search

查询参数:

  • site_names:要搜索的工作网站的逗号分隔列表
  • search_term:搜索的工作术语
  • location:工作地点
  • 以及其他所需的JobSpy参数

可用工具

search_jobs

在多个职位列表网站上搜索工作。

参数:

参数类型描述默认值
site_names字符串要搜索的工作网站的逗号分隔列表(indeed,linkedin,zip_recruiter,glassdoor,google,bayt,naukri)"indeed"
search_term字符串工作搜索术语"软件工程师"
location字符串工作搜索地点"加利福尼亚州旧金山"
google_search_term字符串Google特定搜索术语null
results_wanted整数所需的结果数量20
hours_old整数工作可以有多久的时间72
country_indeed字符串Indeed搜索的国家"USA"
linkedin_fetch_description布尔值是否抓取LinkedIn工作描述(较慢)false
format字符串输出格式(json或csv)"json"
output字符串不带扩展名的输出文件名"jobs"

使用Claude的示例:

我需要找到波士顿地区在过去24小时内发布的高级软件工程师职位,同时在LinkedIn和Indeed上搜索。

Docker支持

提供了一个Dockerfile来容器化MCP服务器:

# 构建Docker镜像
docker build -t jobspy-mcp-server .

# 运行容器
docker run -p 9423:9423 jobspy-mcp-server

开发

在开发模式下运行

npm run dev

运行测试

npm test
curl -X POST "http://localhost:9423/api" \
  -H "Content-Type: application/json" \
  -d '{
    "method": "search_jobs",
    "params": {
      "search_term": "软件工程师",
      "location": "加利福尼亚州旧金山",
      "site_names": "indeed,linkedin",
      "results_wanted": 10,
      "format": "json"
    }
  }'

许可证

MIT