openlinkedinmcp
Playwright-powered MCP server for LinkedIn that automates jobs, profile edits, messaging, network actions, and feed posts using a real logged-in browser session.
README
openlinkedinmcp
Playwright-powered MCP server for LinkedIn. Automate jobs, profile edits, messaging, network actions, feed posts, and more using a real logged-in browser session.
LinkedIn’s official API cannot cover most member actions. This server drives linkedin.com in Chromium instead. UI changes can break selectors — treat tools as best-effort automation.
Requirements
- Node.js 20+
- Chromium for Playwright (
npx playwright install chromium)
Setup
npm install
npm run build
Install into Cursor / Claude (recommended)
Register this server in your MCP client config (builds if needed, merges without wiping other servers):
./scripts/install.sh # interactive: Cursor, Claude, or both
./scripts/install.sh --cursor # ~/.cursor/mcp.json
./scripts/install.sh --claude # Claude Code (~/.claude.json) and Desktop if present
./scripts/install.sh --both
./scripts/install.sh --dry-run --both # preview only
Or via npm:
npm run install:mcp -- --cursor
Claude targets: Claude Code CLI (claude mcp add when available, else ~/.claude.json) and Claude Desktop (claude_desktop_config.json on macOS/Linux/Windows when the app config dir exists).
Session data (cookies / browser profile) is stored at:
~/.openlinkedinmcp/browser-profile
Override with OPENLINKEDINMCP_DATA_DIR.
Manual MCP config
If you prefer to edit configs by hand, add (path must be absolute):
{
"mcpServers": {
"openlinkedinmcp": {
"command": "node",
"args": ["/absolute/path/to/openlinkedinmcp/dist/index.js"],
"env": {
"OPENLINKEDINMCP_HEADLESS": "1"
}
}
}
}
Typical locations:
- Cursor:
~/.cursor/mcp.json - Claude Code:
~/.claude.json - Claude Desktop (macOS):
~/Library/Application Support/Claude/claude_desktop_config.json - Claude Desktop (Linux):
~/.config/Claude/claude_desktop_config.json
For local iteration without building:
{
"command": "npx",
"args": ["tsx", "/absolute/path/to/openlinkedinmcp/src/index.ts"]
}
First-time login
- Call
linkedin_loginfrom your MCP client. - A visible browser window opens on LinkedIn’s login page.
- Sign in (complete 2FA if prompted).
- When the feed loads, the tool returns success and the session is reused.
Environment flags:
| Variable | Meaning |
|---|---|
OPENLINKEDINMCP_HEADLESS=0 |
Always show the browser |
OPENLINKEDINMCP_LOGIN_TIMEOUT_MS |
Login wait (default 300000) |
OPENLINKEDINMCP_TIMEOUT_MS |
Default Playwright timeout |
OPENLINKEDINMCP_DATA_DIR |
Custom data directory |
Tools
Auth
linkedin_login— interactive Playwright loginlinkedin_auth_statuslinkedin_logout
Profile
get_my_profile,get_profileupdate_headline,update_aboutopen_profile_section— experience, education, skills, featured, interests, contact-info
Jobs
search_jobs,get_job,save_jobget_saved_jobs,get_job_applicationseasy_apply_job— defaults todry_run=true
Feed
get_feed,create_post,like_post,comment_on_post,repost
Messaging
list_conversations,get_conversation,send_message,start_conversation
Network
search_people,send_connection_requestget_pending_invitations,accept_invitationget_connections,follow_person
Companies & notifications
search_companies,get_company,follow_companyget_notifications
Browser helpers
navigate,screenshot_page,close_browser
Destructive or outbound actions (create_post, send_message, easy_apply_job, connection requests, etc.) support dry_run where noted. Prefer dry runs until you trust the flow.
Scripts
npm run dev # stdio MCP via tsx
npm run build # compile to dist/
npm run typecheck # tsc --noEmit
npm start # node dist/index.js
npm run install:mcp # register with Cursor / Claude (see Setup)
License
MIT (see LICENSE).
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.