job-research-mcp-server

baby-benzing/job-research-mcp-server

3.2

If you are the rightful owner of job-research-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

A Model Context Protocol (MCP) server designed for comprehensive job research across multiple platforms, currently supporting LinkedIn with plans to expand to Indeed, Glassdoor, and others.

Tools
5
Resources
0
Prompts
0

Job Research MCP Server

A Model Context Protocol (MCP) server for comprehensive job research across multiple platforms. Currently supports LinkedIn with plans to add Indeed, Glassdoor, and other job platforms.

Features

Current Platforms

LinkedIn (Active)
  • Profile Fetching: Retrieve public LinkedIn profile information
  • Job & People Search: Search for jobs and professionals
  • Batch Processing: Fetch multiple profiles with concurrency control
  • Rate Limiting: Built-in rate limiting to respect LinkedIn's servers

Coming Soon

Indeed
  • Job search and filtering
  • Salary insights
  • Company reviews integration
Glassdoor
  • Company ratings and reviews
  • Salary data and trends
  • Interview experiences

Installation

Prerequisites

  • Python 3.10 or higher
  • Chrome browser (if using Selenium mode)

Setup

  1. Clone the repository:
git clone <repository-url>
cd job-research-mcp-server
  1. Create a virtual environment:
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. Install dependencies:
pip install -r requirements.txt
  1. Configure environment variables:
cp .env.example .env
# Edit .env with your preferences

Configuration

The server can be configured through environment variables in the .env file:

  • SCRAPING_METHOD: Set to 'public' for public data only
  • USER_AGENT: Browser user agent string
  • REQUEST_DELAY_MIN: Minimum seconds between requests (default: 2)
  • REQUEST_DELAY_MAX: Maximum seconds between requests (default: 5)
  • USE_SELENIUM: Set to 'true' to use Selenium for JavaScript rendering

Usage

Starting the Server

Run the MCP server:

cd src
python server.py

The server will start on http://localhost:8000 by default.

Available Tools

LinkedIn Tools
1. linkedin_fetch_profile

Fetches public profile data for a single LinkedIn profile.

Parameters:

  • profile_id (string): The LinkedIn profile ID

Returns:

  • Profile data including name, headline, location, experience, education, and skills
2. linkedin_search

Search LinkedIn for people or jobs.

Parameters:

  • query (string): Search query
  • company (string, optional): Company filter
  • search_type (string): "people" or "jobs"

Returns:

  • Search URL and query parameters
3. linkedin_batch_fetch

Fetch multiple LinkedIn profiles with rate limiting.

Parameters:

  • profile_ids (list): List of profile IDs
  • max_concurrent (int): Maximum concurrent requests

Returns:

  • List of profile data dictionaries
General Tools
4. search_all_platforms

Search across multiple job platforms simultaneously.

Parameters:

  • query (string): Search query
  • platforms (list, optional): Platforms to search

Returns:

  • Combined results from all platforms
5. get_server_info

Returns server configuration and available features.

Project Structure

job-research-mcp-server/
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ tools/
│   │   ā”œā”€ā”€ common/         # Base classes and shared utilities
│   │   ā”œā”€ā”€ linkedin/       # LinkedIn-specific implementation
│   │   ā”œā”€ā”€ indeed/         # Indeed implementation (coming soon)
│   │   └── glassdoor/      # Glassdoor implementation (coming soon)
│   ā”œā”€ā”€ server.py           # Main MCP server
│   └── server_test.py      # Test server (Python 3.9 compatible)
ā”œā”€ā”€ tests/                   # Comprehensive test suite
ā”œā”€ā”€ .env.example            # Environment configuration template
ā”œā”€ā”€ requirements.txt        # Production dependencies
└── README.md              # This file

Testing

Run the test suite:

pytest tests/

Run specific test categories:

pytest tests/test_linkedin_scraper.py  # Unit tests
pytest tests/test_integration.py       # Integration tests
pytest tests/test_performance.py       # Performance tests

Adding New Platforms

To add support for a new job platform:

  1. Create a new directory under src/tools/[platform_name]/
  2. Implement a scraper class inheriting from BaseJobScraper
  3. Add platform-specific tools in server.py
  4. Update tests and documentation

Example structure for a new platform:

# src/tools/newplatform/scraper.py
from ..common.base_scraper import BaseJobScraper

class NewPlatformScraper(BaseJobScraper):
    async def fetch_profile(self, profile_id: str):
        # Implementation
        pass

    async def search(self, query: str, **kwargs):
        # Implementation
        pass

Legal and Ethical Considerations

āš ļø Important:

  • This server only accesses publicly available data
  • Respects rate limiting to avoid overwhelming servers
  • Does not bypass authentication or access private data
  • Users are responsible for ensuring their use case complies with platform Terms of Service

Roadmap

  • LinkedIn profile fetching
  • LinkedIn job search
  • Multi-platform architecture
  • Indeed job search integration
  • Glassdoor company data
  • Resume matching
  • Job alert system
  • Analytics dashboard

Contributing

Contributions are welcome! Please ensure:

  • Code follows the existing architecture
  • Tests are added for new features
  • Documentation is updated
  • Ethical scraping practices are maintained

License

[Your License Here]

Disclaimer

This tool is for educational and research purposes only. Users are responsible for complying with all applicable Terms of Service and laws. The authors are not responsible for any misuse of this software.