hardiksharmmaaaa/MCP_Servers_
If you are the rightful owner of MCP_Servers_ 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 for LinkedIn automation that provides tools for job searching, networking, and contact management.
LinkedIn MCP Server
A Model Context Protocol (MCP) server for LinkedIn automation that provides three powerful tools for job searching, networking, and contact management.
š Features
1. Job Search Tool (find_job_openings
)
- Searches for the latest job openings based on your skills
- Filters by location, experience level, and job type
- Returns formatted job listings with company details and direct links
2. Auto Connect & Outreach Tool (auto_connect_and_outreach
)
- Automatically finds and connects with relevant professionals
- Sends personalized outreach messages
- Targets specific roles and companies
- Rate-limited to avoid LinkedIn restrictions
3. Contact Scraper Tool (scrape_contacts_to_excel
)
- Scrapes contact information from LinkedIn profiles
- Exports data to Excel spreadsheets
- Supports both direct profile URLs and search queries
- Collects names, titles, companies, and available contact info
š Project Structure
linkedin-mcp-server/
āāā src/
ā āāā index.js # Main MCP server implementation
ā āāā linkedin-automation.js # Core LinkedIn automation logic
āāā package.json # Dependencies and scripts
āāā config.example.env # Environment configuration template
āāā README.md # This documentation
š ļø Installation
Prerequisites
- Node.js 18.0.0 or higher
- npm or yarn
- A LinkedIn account
Setup Steps
-
Clone and install dependencies:
npm install
-
Configure environment (optional):
cp config.example.env .env # Edit .env with your preferences
-
Start the server:
npm start
š§ How It Works
Architecture Flow:
-
MCP Server Setup (
src/index.js
)- Initializes the MCP server with tool definitions
- Handles incoming tool requests and routes them to appropriate functions
- Returns formatted responses back to the MCP client
-
LinkedIn Automation (
src/linkedin-automation.js
)- Uses Puppeteer to control a Chrome browser
- Handles LinkedIn login (manual for security)
- Implements web scraping and interaction logic
- Manages rate limiting and error handling
-
Tool Execution Flow:
MCP Client ā MCP Server ā LinkedIn Automation ā Browser ā LinkedIn ā Results
Security & Privacy:
- Manual login required - No password storage
- Rate limiting - Prevents account restrictions
- Headless mode option - For production use
- Error handling - Graceful failure management
š Tool Usage
1. Find Job Openings
{
"name": "find_job_openings",
"arguments": {
"skills": ["JavaScript", "React", "Node.js"],
"location": "San Francisco",
"experience_level": "mid",
"job_type": "full-time"
}
}
Parameters:
skills
(required): Array of your skills to match against job postingslocation
(optional): Preferred job location (default: "Remote")experience_level
(optional): "entry", "mid", "senior", or "executive"job_type
(optional): "full-time", "part-time", "contract", or "internship"
2. Auto Connect & Outreach
{
"name": "auto_connect_and_outreach",
"arguments": {
"target_roles": ["Software Engineer", "Frontend Developer"],
"company_names": ["Google", "Microsoft", "Apple"],
"message_template": "Hi {name}, I'm interested in opportunities at {company}. Would love to connect!",
"max_connections": 15
}
}
Parameters:
target_roles
(required): Array of job titles/roles to targetcompany_names
(optional): Specific companies to focus onmessage_template
(optional): Custom message with {name} and {company} placeholdersmax_connections
(optional): Maximum connections to send (default: 10, max: 50)
3. Scrape Contacts to Excel
{
"name": "scrape_contacts_to_excel",
"arguments": {
"search_query": "Product Manager at Tech Companies",
"excel_filename": "product_managers.xlsx"
}
}
Or with specific profile URLs:
{
"name": "scrape_contacts_to_excel",
"arguments": {
"profile_urls": [
"https://www.linkedin.com/in/johndoe/",
"https://www.linkedin.com/in/janedoe/"
],
"excel_filename": "specific_contacts.xlsx"
}
}
Parameters:
profile_urls
(optional): Array of LinkedIn profile URLs to scrapeexcel_filename
(optional): Name of Excel file to save (default: "linkedin_contacts.xlsx")search_query
(optional): Search query to find profiles automatically
ā ļø Important Notes
LinkedIn Terms of Service
- This tool is for educational and personal use
- Respect LinkedIn's rate limits and terms of service
- Use responsibly to avoid account restrictions
- Consider LinkedIn's Premium features for enhanced functionality
Limitations
- Contact Information: Email/phone numbers are often protected by LinkedIn's privacy settings
- Rate Limiting: LinkedIn enforces strict limits on automated actions
- Selector Changes: LinkedIn may update their website structure, requiring code updates
- Account Security: Use manual login to maintain account security
Best Practices
- Start Small: Test with low limits first (5-10 connections)
- Add Delays: Respect rate limits to avoid detection
- Personalize Messages: Use meaningful connection requests
- Monitor Results: Check success rates and adjust accordingly
- Stay Updated: LinkedIn may change their interface
š ļø Development
Running in Development Mode
npm run dev
Testing
npm test
Browser Configuration
- Set
HEADLESS_MODE=true
in.env
for production - Browser will open for manual login on first run
- Session persists until server restart
š¤ Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
š License
MIT License - See LICENSE file for details
š® Future Enhancements
- Support for LinkedIn Sales Navigator
- Advanced message templates with AI
- Integration with CRM systems
- Automated follow-up sequences
- Analytics and reporting dashboard
- Multi-account management
- Webhook integrations
Disclaimer: This tool is for educational purposes. Users are responsible for complying with LinkedIn's Terms of Service and applicable laws.