@striderlabs/mcp-linkedin
A Model Context Protocol (MCP) server for LinkedIn automation, powered by Playwright and Browserbase.
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 account with a CDP-enabled session URL
- LinkedIn account (the browser session must already be logged in to LinkedIn)
Installation
npm install @striderlabs/mcp-linkedin
Or install from a local tarball:
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
- Create a session in the Browserbase dashboard or via their API.
- The session will expose a CDP WebSocket URL, typically in the format:
wss://connect.browserbase.com?apiKey=YOUR_API_KEY&sessionId=SESSION_ID - Ensure the browser session is logged into LinkedIn before invoking LinkedIn tools.
Usage
Running the MCP server
BROWSERBASE_CDP_URL="wss://connect.browserbase.com?apiKey=..." npx @striderlabs/mcp-linkedin
Claude Desktop configuration
Add to your claude_desktop_config.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.
{
"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.
{
"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.
{
"job_url": "https://www.linkedin.com/jobs/view/1234567890"
}
get_connections
List your connections.
{
"limit": 20,
"search": "Alice"
}
search is optional. limit defaults to 20 (max 50).
get_messages
Get recent message conversations.
{
"limit": 10
}
limit defaults to 10 (max 20).
send_connection_request
Send a connection request.
{
"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.tsmay need updating. - LinkedIn ToS: Automated access to LinkedIn may violate their Terms of Service. Use for personal productivity and authorised use cases only.
Development
# Install dependencies
npm install
# Build TypeScript
npm run build
# Run in development mode
npm run dev
License
MIT โ Copyright (c) 2024 Strider Labs