一个模型上下文协议(MCP)服务器,使像Claude这样的AI助手能够使用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_IMAGE | JobSpy使用的Docker镜像 | jobspy |
JOBSPY_ACCESS_TOKEN | JobSpy API访问令牌(如有需要) | none |
PORT | MCP服务器端口 | 9423 |
HOST | HTTP服务器主机 | '0.0.0.0' |
ENABLE_SSE | 启用Server-Sent Events传输 | 0 |
你可以通过多种方式设置这些配置值:
export JOBSPY_DOCKER_IMAGE=jobspy
export JOBSPY_HOST='0.0.0.0'
export JOBSPY_PORT=9423
export ENABLE_SSE=1
.env文件在根目录创建一个.env文件,并添加你的配置:
JOBSPY_DOCKER_IMAGE=jobspy
JOBSPY_HOST='0.0.0.0'
JOBSPY_PORT=9423
ENABLE_SSE=1
npm start
在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
}
}
}
}
服务器暴露HTTP端点,允许Web应用程序与JobSpy MCP服务器交互:
连接以获取更新:GET /mcp/connect
发送请求:POST /mcp/request
示例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();
}
服务器暴露了以下端点:
GET /search
查询参数:
site_names:要搜索的工作网站的逗号分隔列表search_term:搜索的工作术语location:工作地点在多个职位列表网站上搜索工作。
参数:
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
| 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上搜索。
提供了一个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