Job Search MCP
직업 검색 엔진
5대 주요 제약회사에서 빠르고 안정적인 직업 검색.
Amgen, Bayer, GSK, Novartis, Pfizer 채용 사이트에서 직접 직업을 검색하세요. 직무 제목, 설명, 요구사항, 지원 링크를 즉시 추출합니다.
데모: https://[your-vercel-app].vercel.app/
기능
✅ 5개 회사에서 동시에 검색
✅ 상세 직무 정보 추출 (제목, 설명, 요구사항, 마감일)
✅ 오류 코드로 실패한 추출 추적 (404, 타임아웃 등)
✅ 결과로 CSV 보고서 생성
✅ 외부 의존성 제로, 빠른 정규식 기반 파싱
✅ TypeScript + 엄격한 타입 안전성
✅ 포괄적인 오류 처리 및 분류
✅ 요금 제한 API (IP당 하루 5회 검색)
Related MCP server: trackly-cli
기술 스택
프론트엔드: React + TypeScript + Tailwind CSS
백엔드: Next.js + Node.js
파싱: 정규식 기반 HTML 추출 (무거운 의존성 없음)
런타임: Node.js (v18+)
언어: TypeScript 5.3+
빌드: TypeScript 컴파일러 (tsc)
배포: Vercel (권장) 또는 AWS Lambda
빠른 시작
데모 사용해보기
방문: https://[your-vercel-app].vercel.app/
직업 검색 인터페이스로 리디렉션됩니다. 직무 제목을 입력하고 회사를 선택한 후 결과를 즉시 확인하세요.
로컬 개발
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run a test
node dist/test/test-manager-jobs.js
# Start development server (requires Next.js setup)
npm run dev프로덕션 배포
# Deploy to Vercel (recommended)
npm install -g vercel
vercel
# Or deploy to AWS
# See docs/DEPLOYMENT.md for AWS Lambda setup프로젝트 아키텍처
User searches for jobs → Demo page (/app/demo/page.tsx)
↓
React UI Component
- Search input
- Company multi-select
- Sortable results tables
↓
REST API (/api/search-jobs)
↓
┌───────────────┬────────────────┬────────────────┐
│ │ │ │
Amgen Bayer GSK Novartis Pfizer
(Workday) (Eightfold AI) (Workday) (Drupal) (Workday)
│ │ │ │
└───────────────┴────────────────┴────────────────┘
↓
Search Executor (src/search-executor.ts)
- Fetches job URLs from each site
- Parses HTML for job listings
↓
Extractor Registry (src/extractors/)
- Extracts job details from each URL
- Company-specific parsers
- Error tracking & classification
↓
Extraction Helpers (src/extraction-helpers.ts)
- CSV report generation
- Error aggregation
↓
REST API Response (JSON)
↓
Demo Page displays results
- Success table: Jobs with details
- Error table: Failed extractions
- Download CSV buttons구성
src/config.json은 프로젝트가 지원하는 회사의 진실의 원천(source of truth)입니다.
예시:
{
"projectname": "Job Search MCP",
"sites": [
{
"name": "Amgen",
"search_url": "https://amgen.wd1.myworkdayjobs.com/Careers?q=Engineer"
},
{
"name": "Pfizer",
"search_url": "..."
}
]
}새 회사를 추가할 때는 회사 이름과 사용 가능한 검색 URL만 제공하면 됩니다.
사이트 정의
각 회사는 sites/ 아래의 별도 파일로 표현됩니다.
예를 들어:
sites/amgen.json구조는 test/sample.json을 따라야 합니다.
사이트 정의에는 다음이 포함됩니다:
회사 이름
채용 URL
검색 URL
지원되는 검색 파라미터
파라미터 라벨
파라미터 유형
사용 가능한 파라미터 값
파라미터 구조는 고정된 JSON 키가 아닌 의도적으로 배열로 되어 있습니다. 채용 사이트마다 서로 다른 검색 파라미터를 노출하기 때문입니다.
예를 들어, 한 사이트는 다음을 노출할 수 있고:
location
country
jobType다른 사이트는 다음을 노출할 수 있습니다:
location
timeType
LocationCountry
jobFamilyGroup
workerSubTypeMCP는 모든 회사가 동일한 파라미터를 지원한다고 가정해서는 안 됩니다.
직무 추출기
프로젝트에는 개별 채용 공고 URL을 파싱하고 상세 정보를 추출하는 사이트별 직무 추출기가 포함되어 있습니다.
추출 데이터
각 추출기는 다음을 검색합니다:
직무 제목 - 포지션 이름
직무 설명 - 전체 직무 설명/책임 (헤더/푸터 제외)
자격 요건 - 요구사항, 자격, 기술
마감일 - 지원 마감 날짜 (YYYY-MM-DD 형식, 없으면 비어 있음)
지원 링크 - 지원하기 위한 직접 URL (채용 공고 URL과 다를 수 있음)
사용 가능한 추출기
src/extractors/
├── types.ts # JobExtractor interface & types
├── amgen.ts # Amgen (Workday-based)
├── pfizer.ts # Pfizer (Workday-based)
├── bayer.ts # Bayer (Eightfold AI)
├── gsk.ts # GSK (Workday-based)
├── novartis.ts # Novartis (Drupal)
└── index.ts # ExtractorRegistry사용 예시
import { ExtractorRegistry } from './src/extractors/index.js';
const registry = new ExtractorRegistry();
const amgenExtractor = registry.getExtractor('amgen');
const result = await amgenExtractor?.extract(
'https://amgen.wd1.myworkdayjobs.com/job/India---Hyderabad/Assoc-Director---Data-Product-Mgmt_R-219150'
);
if (result?.success && result.data) {
console.log(result.data.jobTitle);
console.log(result.data.jobDescription);
console.log(result.data.eligibility);
}테스트
프로젝트에는 검색 및 추출 기능을 검증하기 위한 포괄적인 테스트 스위트가 포함되어 있습니다.
테스트 스위트 개요
모든 테스트는 독립적으로 실행할 수 있는 자체 포함 TypeScript 파일입니다:
npm run build
node dist/test/[test-name].js사용 가능한 테스트
1. test-config.ts - 구성 로딩 테스트
회사 구성이 src/config.json에서 올바르게 로드되는지 테스트합니다.
node dist/test/test-config.js목적: 구성 구조 및 회사 검색 검증 출력: 사용 가능한 회사 및 해당 검색 URL 목록
2. test-search.ts - 직업 검색 테스트
모든 회사에서 검색 기능을 테스트합니다.
node dist/test/test-search.js목적: 검색이 유효한 직업 URL을 반환하는지 확인 출력: 각 회사의 "Manager" 직업 검색 결과 참고: 실제 채용 사이트에 대한 인터넷 연결 필요
3. test-extractors.ts - 직업 추출 테스트
각 회사의 직업 URL에 대한 직무 상세 추출이 작동하는지 테스트합니다.
node dist/test/test-extractors.js목적: 직무 제목, 설명, 자격 요건 추출 검증 출력: 추출 성공률 및 필드 세부 정보 참고: test-search.ts 출력의 실제 직업 URL 필요
4. test-manager-jobs.ts - 종단 간 통합 테스트
완전한 파이프라인 테스트: 직업 검색 → 상세 추출 → 보고서 생성
node dist/test/test-manager-jobs.js목적: 오류 추적 및 CSV 보고서 생성이 포함된 전체 통합 테스트 출력:
test/manager-jobs-success.csv- 성공적으로 추출된 직무 데이터test/manager-jobs-errors.csv- 추출 오류 (404, 타임아웃 등)성공률 및 오류 분석을 보여주는 콘솔 요약
모든 테스트 실행
npm run build
node dist/test/test-config.js
node dist/test/test-search.js
node dist/test/test-extractors.js
node dist/test/test-manager-jobs.js테스트 출력 파일
생성된 CSV 보고서는 test/ 폴더에 저장됩니다:
manager-jobs-success.csv- 성공적인 직무 추출manager-jobs-errors.csv- 오류 코드가 포함된 실패한 추출 시도디버깅용 샘플 HTML 파일
이 파일들은 테스트 실행 중에 생성되며 안전하게 삭제할 수 있습니다. .gitignore에 포함되어 있습니다.
test/sample.json
test/sample.json은 개별 회사 파일의 예상 구조를 정의합니다.
회사 레지스트리가 아닌 예제 기반 스키마/템플릿입니다.
현재 예제는 location, timeType, LocationCountry, jobFamilyGroup, workerSubType과 같은 파라미터를 사용합니다.
BUILD.md
BUILD.md에는 회사 구성에서 MCP를 빌드하는 AI/개발 프로세스에 대한 지침이 포함되어 있습니다.
빌드 프로세스는 다음을 수행해야 합니다:
src/config.json을 읽습니다.sites에 나열된 모든 회사를 처리합니다.제공된 검색 URL을 방문/분석합니다.
회사의 실제 채용/검색 구조를 파악합니다.
사용 가능한 검색 파라미터와 해당 값을 발견합니다.
해당
sites/<company>.json을 생성하거나 업데이트합니다.생성된 파일이
test/sample.json에 정의된 구조를 따르는지 확인합니다.공통 MCP 구현을 빌드/업데이트합니다.
구성된 모든 사이트를 검색할 수 있는지 검증합니다.
UPDATE.md
새 릴리스가 생성될 때 프로젝트를 재빌드하는 방법에 대한 지침은 ai/UPDATE.md를 참조하세요.
src/config.json이 변경되면 AI는 새로 추가된 회사뿐만 아니라 모든 회사 정의를 재빌드해야 합니다.
이는 의도적입니다.
기존 채용 사이트는 다음을 변경할 수 있습니다:
검색 URL
쿼리 파라미터
필터 이름
필터 값
채용 사이트 구조
ATS 구현
따라서 모든 릴리스는 기존 sites/*.json 파일을 현재 라이브 채용 사이트와 대조하여 재확인해야 합니다.
src/config.json updated
│
▼
Rebuild ALL sites
│
├── New company → create site JSON
│
└── Existing company → re-analyze and update
│
▼
Rebuild common MCP
│
▼
Validate
프로젝트 구조
JobSearchMCP/
├── src/ # Source code & configs
│ ├── server.ts # MCP server entry point
│ ├── search-executor.ts # Search execution & parsing
│ ├── config-loader.ts # Configuration loader
│ ├── types.ts # TypeScript types
│ ├── config.json # Company registry
│ ├── site_configurations.json
│ └── site_analysis.json
├── sites/ # Company-specific configs
│ ├── amgen.json
│ ├── pfizer.json
│ ├── novartis.json
│ ├── bayer.json
│ └── gsk.json
├── test/ # Tests & test data
│ ├── test-*.js # Test scripts
│ ├── sample.json # Configuration template
│ └── *.html # Sample HTML files
├── ai/ # AI development notes (Gitignored)
│ ├── AI.md
│ └── UPDATE.md
├── reports/ # Documentation
│ ├── IMPLEMENTATION.md
│ ├── ANALYSIS_GUIDE.md
│ ├── MCP_USAGE.md
│ └── MIGRATION.md
├── dist/ # Compiled JavaScript
├── package.json # Dependencies & scripts
├── tsconfig.json # TypeScript config
└── README.md # This file기술
런타임: Node.js 언어: TypeScript MCP SDK: 공식 Model Context Protocol TypeScript SDK 구성: JSON
설계 원칙
프로젝트는 사이트별 지식과 공통 MCP 로직을 분리합니다.
sites/*.json
= How a particular company career site works
MCP implementation
= How to search any configured company
AI
= Understand the user's request and select/use the appropriate
company search configurationMCP에는 location, remote, full_time, job_type과 같은 파라미터에 대한 하드코딩된 가정이 포함되어서는 안 됩니다.
파라미터는 해당 회사의 채용 사이트가 실제로 지원하거나 구성에 필요한 정보를 노출하는 경우에만 해당 회사에 존재합니다.
목표
목표는 재사용 가능한 직업 검색 MCP를 만드는 것입니다. 회사 추가는 주로 config.json에 검색 URL을 추가하는 문제로, AI 빌드 프로세스가 사이트별 구성을 자동으로 발견하고 유지 관리할 수 있게 합니다.
This server cannot be deployed
Maintenance
Related MCP Connectors
Public MCP server for discovering open jobs. Search, filter, and get application links.
GetJobzi MCP server for job search, application tracking, and career forecasting.
JobsPipe — data pipeline of every job posting on the web. Search live, normalized job postings from 30+ ATS feeds and job boards for AI agents via MCP.
AI job search MCP — fact-checked jobs, application tracker, alerts. ChatGPT, Claude, Cursor.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceMCP server that exposes job search data from multiple boards, enabling clients to query and manage job listings via natural language.7MIT

trackly-cliofficial
AlicenseNot gradedqualityAmaintenanceMCP server for job search and application tracking, enabling AI agents to search jobs, get details, manage applications, and find contacts across 128K+ jobs and 1,900+ companies.258 npm3MIT- AlicenseCqualityCmaintenanceAn MCP server that enables AI-assisted job search workflows including job discovery, application tracking, resume evaluation, and cover letter generation, with support for multiple job sources and scheduled scraping.8342 npm1AGPL 3.0
- AlicenseNot gradedqualityDmaintenanceA custom MCP server that exposes a jobs database to any MCP-compatible LLM client, allowing users to ask in plain English to search, filter, and match job openings.MIT