JobSpy MCP服务器
一个模型上下文协议(MCP)服务器,使像克劳德这样的人工智能助手能够使用 JobSpy 工具。
特性
- 在多个平台上搜索工作(事实上,LinkedIn、Glassdoor等)
- 按搜索词、位置、时间框架等筛选
- 获取人工智能模型可以轻松处理的结构化工作数据
- 将结果格式化为JSON或CSV
- 多种传输选项:用于Claude集成的stdio,用于web客户端的SSE
先决条件
- Node.js 16+
- Python 3.6+
- JobSpy工具已安装并可用
安装
# Clone the repository
git clone https://github.com/borgius/jobspy-mcp-server.git
cd jobspy-mcp-server
# Install dependencies
npm install
# Make sure the JobSpy tool is properly set up
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 | 启用服务器发送事件传输 | 0 |
设置配置
您可以通过多种方式设置这些配置值:
1.直接使用环境变量
export JOBSPY_DOCKER_IMAGE=jobspy
export JOBSPY_HOST='0.0.0.0'
export JOBSPY_PORT=9423
export ENABLE_SSE=12.使用.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
- 建立服务器发送事件(SSE)连接以进行实时更新 - 返回进度更新和职位搜索结果
- 发送请求:
POST /mcp/request
- 接受MCP格式的工具调用请求 - 返回工具响应
浏览器的JavaScript客户端示例:
// Connect to SSE endpoint
const eventSource = new EventSource('http://localhost:9423/mcp/connect');
// Listen for updates
eventSource.onmessage = function(event) {
const data = JSON.parse(event.data);
console.log('Received update:', data);
// Handle progress updates
if (data.type === 'progress') {
updateProgressBar(data.progress);
}
};
// Send a search request
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: 'software engineer',
location: 'San Francisco, CA',
site_names: 'indeed,linkedin'
}
})
});
return await response.json();
}API使用
服务器公开以下端点:
搜索作业
GET /search查询参数:
site_names:以逗号分隔的要搜索的求职网站列表search_term:要搜索的术语location:工作地点- 以及所需的其他JobSpy参数
可用工具
search_jobs
在各种工作列表网站上搜索工作。
参数:
| 参数 | 类型 | 描述 | 默认值 |
|---|---|---|---|
| site_names | string | 逗号分隔的求职网站列表(事实上,linkedin、zip_recruiter、glassdoor、谷歌、bayt、naukri) | “确实” |
| search_term | string | 职位搜索词 | “软件工程师” |
| location | string | 求职地点 | “加利福尼亚州旧金山” |
| google_search_term | 字符串 | 谷歌特定搜索词 | 空 |
| results_wanted | 整数 | 想要的结果数量 | 20 |
| hours_old | integer | 作业可以有多少小时的历史 | 72 |
| country_inded | string | indeed搜索的国家 | “美国” |
| linkedin_fetch_description | boolean | 是否获取linkedin职位描述(速度较慢) | false |
| format | string | 输出格式(json或csv) | “json” |
| output | string | 不带扩展名的输出文件名 | “jobs” |
Claude的用法示例:
I need to find senior software engineer jobs in Boston posted in the last 24 hours on both LinkedIn and Indeed.Docker支持
提供了一个Dockerfile来容器化MCP服务器:
# Build the Docker image
docker build -t jobspy-mcp-server .
# Run the container
docker run -p 9423:9423 jobspy-mcp-server发展
以开发模式运行
npm run dev运行测试
npm testcurl -X POST "http://localhost:9423/api" \
-H "Content-Type: application/json" \
-d '{
"method": "search_jobs",
"params": {
"search_term": "software engineer",
"location": "San Francisco, CA",
"site_names": "indeed,linkedin",
"results_wanted": 10,
"format": "json"
}
}'许可证
麻省理工学院
