LinkedIn Jobs MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LinkedIn Jobs MCP ServerFind remote product manager jobs posted in the past week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
Related MCP server: LinkedIn Job Search MCP Server
Installation
Prerequisites
Node.js 18 or higher
npm or yarn
Setup
Clone or download this repository
cd linkedin-mcp-serverInstall dependencies
npm installBuild the server
npm run buildUsage with Claude Desktop
Configure Claude Desktop
Open your Claude Desktop configuration file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.json
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 buildWatch mode (for development)
npm run watchTest with MCP Inspector
The MCP Inspector is a useful tool for testing your server:
npm run inspectorThis 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 listingsTroubleshooting
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_modulesandbuilddirectoriesRun
npm installagainRun
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
Available Tools
1 toolsearch_linkedin_jobsA
Search for jobs on LinkedIn with advanced filtering options. Returns job listings with position titles, company names, locations, salary information, and application links.
| Name | Required | Description | Default |
|---|---|---|---|
| keyword | Yes | Job title or keywords to search for (e.g., 'software engineer', 'product manager') | |
| location | Yes | Location to search in (e.g., 'San Francisco', 'New York', 'remote') | |
| dateSincePosted | No | Filter by posting date | |
| jobType | No | Type of employment | |
| remoteFilter | No | Work location type | |
| salary | No | Minimum salary filter | |
| experienceLevel | No | Required experience level | |
| limit | No | Number of jobs to return (1-100, default: 10) | |
| sortBy | No | Sort results by recency or relevance | |
| page | No | Page number for pagination (default: 0) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the output fields but does not mention any behavioral aspects like side effects, authentication, or rate limits. Since no annotations are provided, the description should carry more burden; however, the output focus is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the purpose and output. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a search tool with detailed schema, the description covers purpose and output. Lacks mention of pagination or sorting defaults, but these are in schema. Overall complete given constraints.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have schema descriptions (100% coverage), so the description adds little beyond mentioning 'advanced filtering options.' Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches for jobs on LinkedIn with filtering options, using specific verbs and resource. No siblings exist, so differentiation is irrelevant.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for job search from LinkedIn, but does not explicitly state when to use or when not to use. With no sibling tools, the lack of exclusions is acceptable, making the context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
With only one tool, there is no possibility of ambiguity between tools. The tool's purpose is clearly described.
The single tool name 'search_linkedin_jobs' follows a clear verb_noun pattern, which is consistent and descriptive.
A single tool for a LinkedIn Jobs server is far too few. Expected tools for job details, applications, or filters are missing, making the server feel underdeveloped for its intended domain.
The tool set is severely incomplete, providing only search functionality. No tools for retrieving individual job details, applying, or managing job listings are present, leading to significant gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
Google Jobs listings with direct apply links via the Apify Google Jobs Scraper, hosted MCP.
Public MCP server for discovering open jobs. Search, filter, and get application links.
Hosted MCP server for LinkedIn: 31 tools for profiles, search, messaging, posts, enrichment.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables users to interact with LinkedIn feeds and search for job listings through natural language. It provides tools for retrieving recent feed posts and searching for professional opportunities based on specific keywords and locations.The Unlicense
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search LinkedIn jobs with built-in rate limiting to prevent IP bans. Supports job search, filtering, company profiles, and job categories through MCP tools.MIT
- FlicenseNot gradedqualityBmaintenanceEnables job search on LinkedIn through MCP tools, including keyword and location search, filtering by remote, easy apply, experience level, job type, and date, and retrieving job details.
- FlicenseNot gradedqualityBmaintenanceEnables searching real job listings from multiple job boards (Indeed, LinkedIn, Glassdoor, Google Jobs, etc.) through a single MCP tool, designed for use as a custom connector in Claude Cowork.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/administrativetrick/linkedin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server