npm package: @striderlabs/mcp-linkedin
Description: MCP server for LinkedIn automation via Playwright and Browserbase
Author: Strider Labs
Latest version: 1.0.0

# @striderlabs/mcp-linkedin

A Model Context Protocol (MCP) server for LinkedIn automation, powered by [Playwright](https://playwright.dev/) and [Browserbase](https://www.browserbase.com/).

## Features

| Tool | Description |
|------|-------------|
| `get_profile` | Get a LinkedIn user profile (name, headline, experience, education) |
| `search_jobs` | Search job listings by title, location, and company |
| `get_job_details` | Get full details of a specific job posting |
| `get_connections` | List your LinkedIn connections with optional name filter |
| `get_messages` | Get recent messages and InMail conversations |
| `send_connection_request` | Send a connection request with an optional personalised note |

## Requirements

- Node.js 18+
- A [Browserbase](https://www.browserbase.com/) account with a CDP-enabled session URL
- LinkedIn account (the browser session must already be logged in to LinkedIn)

## Installation

```bash
npm install @striderlabs/mcp-linkedin
```

Or install from a local tarball:

```bash
npm install ./striderlabs-mcp-linkedin-1.0.0.tgz
```

## Configuration

Set the following environment variable before starting the server:

| Variable | Required | Description |
|----------|----------|-------------|
| `BROWSERBASE_CDP_URL` | Yes | Browserbase CDP WebSocket endpoint URL |

### Getting your Browserbase CDP URL

1. Create a session in the [Browserbase dashboard](https://www.browserbase.com/) or via their API.
2. The session will expose a CDP WebSocket URL, typically in the format:
   ```
   wss://connect.browserbase.com?apiKey=YOUR_API_KEY&sessionId=SESSION_ID
   ```
3. Ensure the browser session is logged into LinkedIn before invoking LinkedIn tools.

## Usage

### Running the MCP server

```bash
BROWSERBASE_CDP_URL="wss://connect.browserbase.com?apiKey=..." npx @striderlabs/mcp-linkedin
```

### Claude Desktop configuration

Add to your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "linkedin": {
      "command": "npx",
      "args": ["-y", "@striderlabs/mcp-linkedin"],
      "env": {
        "BROWSERBASE_CDP_URL": "wss://connect.browserbase.com?apiKey=YOUR_KEY&sessionId=YOUR_SESSION"
      }
    }
  }
}
```

## Tool Reference

### `get_profile`

Fetch a LinkedIn profile summary.

```json
{
  "profile_url": "https://www.linkedin.com/in/username"
}
```

Omit `profile_url` to fetch the currently logged-in user's own profile.

---

### `search_jobs`

Search for job listings.

```json
{
  "title": "Software Engineer",
  "location": "San Francisco",
  "company": "Anthropic",
  "limit": 10
}
```

All fields are optional. `limit` defaults to 10 (max 25).

---

### `get_job_details`

Get full details of a job posting.

```json
{
  "job_url": "https://www.linkedin.com/jobs/view/1234567890"
}
```

---

### `get_connections`

List your connections.

```json
{
  "limit": 20,
  "search": "Alice"
}
```

`search` is optional. `limit` defaults to 20 (max 50).

---

### `get_messages`

Get recent message conversations.

```json
{
  "limit": 10
}
```

`limit` defaults to 10 (max 20).

---

### `send_connection_request`

Send a connection request.

```json
{
  "profile_url": "https://www.linkedin.com/in/username",
  "note": "Hi! I'd love to connect and discuss opportunities."
}
```

`note` is optional and must be 300 characters or fewer (LinkedIn limit).

## Important Notes

- **Authentication**: This server does not handle LinkedIn login. Your Browserbase session must already be authenticated with LinkedIn.
- **Rate limits**: LinkedIn may rate-limit or flag automated activity. Use responsibly.
- **Selectors**: LinkedIn frequently updates its UI. If scraping breaks, the CSS selectors in `src/index.ts` may need updating.
- **LinkedIn ToS**: Automated access to LinkedIn may violate their Terms of Service. Use for personal productivity and authorised use cases only.

## Development

```bash
# Install dependencies
npm install

# Build TypeScript
npm run build

# Run in development mode
npm run dev
```

## License

MIT — Copyright (c) 2024 Strider Labs