Skip to main content
Glama

LinkedIn Browser MCP Server

by alinaqi
# LinkedIn Browser MCP Server A FastMCP-based server for LinkedIn automation and data extraction using browser automation. This server provides a set of tools for interacting with LinkedIn programmatically while respecting LinkedIn's terms of service and rate limits. ## Features - **Secure Authentication** - Environment-based credential management - Session persistence with encrypted cookie storage - Rate limiting protection - Automatic session recovery - **Profile Operations** - View and extract profile information - Search for profiles based on keywords - Browse LinkedIn feed - Profile visiting capabilities - **Post Interactions** - Like posts - Comment on posts - Read post content and engagement metrics ## Prerequisites - Python 3.8+ - Playwright - FastMCP library - LinkedIn account ## Installation 1. Clone the repository: ```bash git clone [repository-url] cd mcp-linkedin-server ``` 2. Create and activate a virtual environment: ```bash python -m venv env source env/bin/activate # On Windows: env\Scripts\activate ``` 3. Install dependencies: ```bash pip install -r requirements.txt playwright install chromium ``` 4. Set up environment variables: Create a `.env` file in the root directory with: ```env LINKEDIN_USERNAME=your_email@example.com LINKEDIN_PASSWORD=your_password COOKIE_ENCRYPTION_KEY=your_encryption_key # Optional: will be auto-generated if not provided ``` ## Usage 1. Start the MCP server: ```bash python linkedin_browser_mcp.py ``` 2. Available Tools: - `login_linkedin_secure`: Securely log in using environment credentials - `browse_linkedin_feed`: Browse and extract posts from feed - `search_linkedin_profiles`: Search for profiles matching criteria - `view_linkedin_profile`: View and extract data from specific profiles - `interact_with_linkedin_post`: Like, comment, or read posts ### Example Usage ```python from fastmcp import FastMCP # Initialize client client = FastMCP.connect("http://localhost:8000") # Login result = await client.login_linkedin_secure() print(result) # Search profiles profiles = await client.search_linkedin_profiles( query="software engineer", count=5 ) print(profiles) # View profile profile_data = await client.view_linkedin_profile( profile_url="https://www.linkedin.com/in/username" ) print(profile_data) ``` ## Security Features - Encrypted cookie storage - Rate limiting protection - Secure credential management - Session persistence - Browser automation security measures ## Best Practices 1. **Rate Limiting**: The server implements rate limiting to prevent excessive requests: - Maximum 5 login attempts per hour - Automatic session reuse - Cookie persistence to minimize login needs 2. **Error Handling**: Comprehensive error handling for: - Network issues - Authentication failures - LinkedIn security challenges - Invalid URLs or parameters 3. **Session Management**: - Automatic cookie encryption - Session persistence - Secure storage practices ## Contributing 1. Fork the repository 2. Create a feature branch 3. Commit your changes 4. Push to the branch 5. Create a Pull Request ## License MIT ## Disclaimer This tool is for educational purposes only. Ensure compliance with LinkedIn's terms of service and rate limiting guidelines when using this software.

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/alinaqi/mcp-linkedin-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server