LinkedIn Jobs MCP Server
A Model Context Protocol (MCP) server that enables Claude and other MCP clients to search LinkedIn jobs directly. Built with TypeScript and the official MCP SDK.
Features
- 🔍 Advanced Job Search: Search LinkedIn jobs with multiple filters
- 🎯 Smart Filtering: Filter by location, job type, experience level, salary, and more
- ⚡ Fast & Reliable: Uses the proven
linkedin-jobs-apipackage - 🔧 Easy Integration: Works with Claude Desktop, Claude Code, and any MCP-compatible client
Installation
Prerequisites
- Node.js 18 or higher
- npm or yarn
Setup
- Clone or download this repository
cd linkedin-mcp-server
- Install dependencies
npm install
- Build the server
npm run build
Usage with Claude Desktop
Configure Claude Desktop
-
Open your Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
-
Add the server configuration:
{
"mcpServers": {
"linkedin-jobs": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/linkedin-mcp-server/build/index.js"
]
}
}
}
Important: Replace /ABSOLUTE/PATH/TO/ with the actual path to your project directory.
- Restart Claude Desktop to load the new server
Using npx (Alternative)
You can also run the server using npx after publishing to npm:
{
"mcpServers": {
"linkedin-jobs": {
"command": "npx",
"args": [
"-y",
"linkedin-jobs-mcp-server"
]
}
}
}
Available Tools
search_linkedin_jobs
Search for jobs on LinkedIn with advanced filtering options.
Required Parameters:
keyword(string): Job title or keywords to search forlocation(string): Location to search in (city, state, or "remote")
Optional Parameters:
dateSincePosted(enum): "past month", "past week", "24hr"jobType(enum): "full time", "part time", "contract", "temporary", "volunteer", "internship"remoteFilter(enum): "on site", "remote", "hybrid"salary(enum): "40000", "60000", "80000", "100000", "120000" (minimum salary)experienceLevel(enum): "internship", "entry level", "associate", "senior", "director", "executive"limit(string): Number of results (1-100, default: "10")sortBy(enum): "recent", "relevant"page(string): Page number for pagination (default: "0")
Example Queries
Once configured, you can ask Claude things like:
"Search for software engineer jobs in San Francisco"
"Find remote product manager positions posted in the past week"
"Look for entry-level data analyst jobs in New York with a minimum salary of $80,000"
"Show me senior full-time positions for machine learning engineers in Seattle"
Example Response
Found 10 job(s) for "software engineer" in "San Francisco":
1. Senior Software Engineer
Company: Tech Corp
Location: San Francisco, CA
Posted: 2 days ago
Salary: $150,000 - $200,000
Apply: https://linkedin.com/jobs/view/...
2. Full Stack Software Engineer
Company: Startup Inc
Location: San Francisco, CA (Hybrid)
Posted: 1 week ago
Apply: https://linkedin.com/jobs/view/...
...
Development
Build
npm run build
Watch mode (for development)
npm run watch
Test with MCP Inspector
The MCP Inspector is a useful tool for testing your server:
npm run inspector
This will open a web interface where you can test the server's tools interactively.
How It Works
This MCP server:
- Receives requests from Claude (or any MCP client) via the stdio transport
- Validates parameters using Zod schemas
- Calls the LinkedIn Jobs API (via
linkedin-jobs-apipackage) - Formats results into readable text responses
- Returns data back to the client
The server uses web scraping through the linkedin-jobs-api package, which accesses LinkedIn's public job listings. No authentication or API keys are required.
Architecture
Claude Desktop (MCP Client)
↓
stdio transport
↓
LinkedIn MCP Server (This project)
↓
linkedin-jobs-api package
↓
LinkedIn public job listings
Troubleshooting
Server not appearing in Claude Desktop
- Check that the path in your config is absolute (not relative)
- Ensure the build directory exists (
npm run build) - Restart Claude Desktop completely
- Check Claude Desktop logs for errors
No results returned
- Try broader search terms
- Remove filters to see if you get results
- Check if LinkedIn has jobs for your search criteria
- Try different locations
Build errors
- Ensure you have Node.js 18+ installed
- Delete
node_modulesandbuilddirectories - Run
npm installagain - Run
npm run build
Technical Details
- MCP SDK Version: 1.0.4
- Transport: stdio (standard input/output)
- Language: TypeScript
- Runtime: Node.js 18+
- Data Source: LinkedIn public job listings (via linkedin-jobs-api)
Limitations
- Rate limiting: The underlying API may have rate limits
- Public data only: Only accesses publicly available job listings
- No authentication: Does not require or support LinkedIn authentication
- Scraping-based: Uses web scraping, which means it could break if LinkedIn changes their HTML structure
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - feel free to use this in your own projects!
Related Projects
- Model Context Protocol - Official MCP specification and SDKs
- linkedin-jobs-api - The LinkedIn jobs scraping package used by this server
- MCP Servers - Official collection of MCP servers
Support
If you encounter issues:
- Check the Troubleshooting section
- Review the MCP documentation at https://modelcontextprotocol.io
- Open an issue on GitHub with details about your problem
Acknowledgments
- Built with the Model Context Protocol by Anthropic
- Uses the excellent linkedin-jobs-api package
- Inspired by the growing MCP ecosystem