Metadata-Version: 2.4
Name: iflow-mcp_mcp-linkedin-server
Version: 1.0.0
Summary: A FastMCP-based server for LinkedIn automation and data extraction using browser automation
Author-email: iflow-mcp <iflow-mcp@example.com>
License: MIT
Project-URL: Homepage, https://github.com/iflow-mcp/mcp-linkedin-server
Project-URL: Repository, https://github.com/iflow-mcp/mcp-linkedin-server
Requires-Python: >=3.8
Description-Content-Type: text/markdown
Requires-Dist: mcp>=1.2.0
Requires-Dist: fastmcp>=0.4.1
Requires-Dist: playwright==1.40.0
Requires-Dist: python-dotenv>=0.19.0
Requires-Dist: cryptography>=35.0.0
Requires-Dist: asyncio>=3.4.3
Requires-Dist: httpx>=0.24.0

# 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. 
