linkedin-mcp
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-mcpsearch for senior data engineer jobs posted today with easy apply"
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-mcp
An MCP server that automates LinkedIn job search and Easy Apply using Playwright + Claude Code. Search for jobs matching your skill set, auto-fill application forms from your profile, and track applications in a local database — all from a Claude conversation.
What it does
Tool | Description |
| Open a browser to log in to LinkedIn. Run once — session is saved. |
| Search LinkedIn jobs with smart scoring against your resume skills. |
| Fetch the full job description from a LinkedIn job URL. |
| Inspect a job's Easy Apply form fields without submitting. |
| Navigate all form steps, fill from your profile, and submit. |
| Search + apply to multiple jobs in one go, with dry-run safety. |
Related MCP server: LinkedIn MCP Server
Prerequisites
Python 3.11+
Claude Code (or any MCP-compatible client)
A LinkedIn account
Setup
1. Clone and install dependencies
git clone https://github.com/Shrushti8/linkedin-mcp.git
cd linkedin-mcp
pip install -r requirements.txt
playwright install chromium2. Create your credentials file
cp .env.example .env
# Edit .env and fill in your LinkedIn email, password, and resume path3. Create your profile
Run the interactive setup script — it asks you all the questions and generates profile.json:
python setup.pyOr copy profile.template.json to profile.json and fill it in manually.
profile.json is gitignored and stays local to your machine.
4. Add the MCP server to Claude Code
Add this to your claude_desktop_config.json (or Claude Code MCP settings):
{
"mcpServers": {
"linkedin": {
"command": "python",
"args": ["/absolute/path/to/linkedin-mcp/server.py"]
}
}
}5. Log in to LinkedIn
In a Claude conversation, call the linkedin_login tool. A browser window opens — log in manually (or it auto-fills if you set LINKEDIN_EMAIL/LINKEDIN_PASSWORD in .env). Your session is saved to the session/ folder for all future calls.
Usage examples
Search for jobs:
search_jobs(keywords="Senior Data Engineer", days=1, easy_apply_only=true)Inspect a form before applying:
easy_apply_poc(url="https://www.linkedin.com/jobs/view/1234567890")Apply to a single job (dry run first):
easy_apply_submit(url="...", dry_run=true)
easy_apply_submit(url="...", dry_run=false)Batch apply to top 5 Easy Apply jobs:
batch_easy_apply(limit=5, keywords="Data Engineer", days=1)How job scoring works
Each job gets a resume_score based on how many keywords from your resume_score_weights (in profile.json) appear in the job title and description. Big-name companies get a +3 bonus. Results are sorted by score descending.
You can tune the weights in profile.json to match your own skill set.
How form filling works
easy_apply_submit uses a longest-keyword-match approach against your profile.json:
Text fields are matched by label (e.g. "years of python experience" → your Python YOE)
Salary/CTC fields use your
current_ctc_lpaandexpected_ctc_lpaYes/No questions are reasoned about using your notice period, bond preference, relocation preference, and skills you don't have
Jobs with questions the tool can't answer are returned in
needs_user_input— never submitted blind
Privacy
Your personal data (profile.json, .env, session/, applications.db) is gitignored and never committed. See .gitignore.
Troubleshooting
Tool behavior didn't change after editing a file?
The MCP server loads Python once at startup. After any code edit, reconnect the server: in Claude Code, go to /mcp → linkedin → Reconnect.
Redirected to login page during search?
Your session expired. Run linkedin_login again to refresh it.
profile.json not found warning?
Run python setup.py to create your profile.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- 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/Shrushti8/linkedin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server