{"id":28767752,"url":"https://github.com/stickerdaniel/linkedin-mcp-server","last_synced_at":"2026-04-01T20:31:21.776Z","repository":{"id":287761022,"uuid":"965394516","full_name":"stickerdaniel/linkedin-mcp-server","owner":"stickerdaniel","description":"This MCP server allows Claude and other AI assistants to access your LinkedIn. Scrape LinkedIn profiles, companies and jobs, and perform job searches.","archived":false,"fork":false,"pushed_at":"2026-03-26T10:02:31.000Z","size":2058,"stargazers_count":1160,"open_issues_count":15,"forks_count":222,"subscribers_count":8,"default_branch":"main","last_synced_at":"2026-03-26T23:38:05.836Z","etag":null,"topics":["anthropic","chatgpt","chatgpt-desktop","claude","claude-desktop","desktop-extension","dxt","linkedin","linkedin-mcp","linkedin-profile-scraper","linkedin-scraper","mcp","mcp-server","server"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stickerdaniel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2025-04-13T04:12:09.000Z","updated_at":"2026-03-26T22:01:34.000Z","dependencies_parsed_at":"2026-01-27T12:03:01.446Z","dependency_job_id":null,"html_url":"https://github.com/stickerdaniel/linkedin-mcp-server","commit_stats":null,"previous_names":["stickerdaniel/linkedin-mcp-server"],"tags_count":58,"template":false,"template_full_name":null,"purl":"pkg:github/stickerdaniel/linkedin-mcp-server","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stickerdaniel%2Flinkedin-mcp-server","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stickerdaniel%2Flinkedin-mcp-server/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stickerdaniel%2Flinkedin-mcp-server/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stickerdaniel%2Flinkedin-mcp-server/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stickerdaniel","download_url":"https://codeload.github.com/stickerdaniel/linkedin-mcp-server/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stickerdaniel%2Flinkedin-mcp-server/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31291661,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T13:12:26.723Z","status":"ssl_error","status_checked_at":"2026-04-01T13:12:25.102Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["anthropic","chatgpt","chatgpt-desktop","claude","claude-desktop","desktop-extension","dxt","linkedin","linkedin-mcp","linkedin-profile-scraper","linkedin-scraper","mcp","mcp-server","server"],"created_at":"2025-06-17T13:02:36.698Z","updated_at":"2026-04-01T20:31:21.769Z","avatar_url":"https://github.com/stickerdaniel.png","language":"Python","funding_links":[],"categories":["🤖 AI \u0026 Machine Learning","📚 Projects (1974 total)","🤖 AI/ML","Chatbots","APIs and HTTP Requests","Containerised MCP Servers","MCP Servers","🤝 Sales / BD","Python","MCP Servers \u0026 Protocol"],"sub_categories":["MCP Servers","Web \u0026 Content","Browser Automation","Prospecting \u0026 Lead Research"],"readme":"# LinkedIn MCP Server\n\n\u003cp align=\"left\"\u003e\n  \u003ca href=\"https://pypi.org/project/linkedin-scraper-mcp/\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/pypi/v/linkedin-scraper-mcp?color=blue\" alt=\"PyPI\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/stickerdaniel/linkedin-mcp-server/actions/workflows/ci.yml\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/stickerdaniel/linkedin-mcp-server/actions/workflows/ci.yml/badge.svg?branch=main\" alt=\"CI Status\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/stickerdaniel/linkedin-mcp-server/actions/workflows/release.yml\" target=\"_blank\"\u003e\u003cimg src=\"https://github.com/stickerdaniel/linkedin-mcp-server/actions/workflows/release.yml/badge.svg?branch=main\" alt=\"Release\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/stickerdaniel/linkedin-mcp-server/blob/main/LICENSE\" target=\"_blank\"\u003e\u003cimg src=\"https://img.shields.io/badge/License-Apache%202.0-%233fb950?labelColor=32383f\" alt=\"License\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\nThrough this LinkedIn MCP server, AI assistants like Claude can connect to your LinkedIn. Access profiles and companies, search for jobs, or get job details.\n\n## Installation Methods\n\n[![uvx](https://img.shields.io/badge/uvx-Quick_Install-de5fe9?style=for-the-badge\u0026logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNDEiIGhlaWdodD0iNDEiIHZpZXdCb3g9IjAgMCA0MSA0MSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KPHBhdGggZD0iTS01LjI4NjE5ZS0wNiAwLjE2ODYyOUwwLjA4NDMwOTggMjAuMTY4NUwwLjE1MTc2MiAzNi4xNjgzQzAuMTYxMDc1IDM4LjM3NzQgMS45NTk0NyA0MC4xNjA3IDQuMTY4NTkgNDAuMTUxNEwyMC4xNjg0IDQwLjA4NEwzMC4xNjg0IDQwLjA0MThMMzEuMTg1MiA0MC4wMzc1QzMzLjM4NzcgNDAuMDI4MiAzNS4xNjgzIDM4LjIwMjYgMzUuMTY4MyAzNlYzNkwzNy4wMDAzIDM2TDM3LjAwMDMgMzkuOTk5Mkw0MC4xNjgzIDM5Ljk5OTZMMzkuOTk5NiAtOS45NDY1M2UtMDdMMjEuNTk5OCAwLjA3NzU2ODlMMjEuNjc3NCAxNi4wMTg1TDIxLjY3NzQgMjUuOTk5OEwyMC4wNzc0IDI1Ljk5OThMMTguMzk5OCAyNS45OTk4TDE4LjQ3NzQgMTYuMDMyTDE4LjM5OTggMC4wOTEwNTkzTC01LjI4NjE5ZS0wNiAwLjE2ODYyOVoiIGZpbGw9IiNERTVGRTkiLz4KPC9zdmc+Cg==)](#-uvx-setup-recommended---universal)\n[![Install MCP Bundle](https://img.shields.io/badge/Claude_Desktop_MCPB-d97757?style=for-the-badge\u0026logo=anthropic)](#-claude-desktop-mcp-bundle-formerly-dxt)\n[![Docker](https://img.shields.io/badge/Docker-Universal_MCP-008fe2?style=for-the-badge\u0026logo=docker\u0026logoColor=008fe2)](#-docker-setup)\n[![Development](https://img.shields.io/badge/Development-Local-ffdc53?style=for-the-badge\u0026logo=python\u0026logoColor=ffdc53)](#-local-setup-develop--contribute)\n\n\u003chttps://github.com/user-attachments/assets/eb84419a-6eaf-47bd-ac52-37bc59c83680\u003e\n\n## Usage Examples\n\n```\nResearch the background of this candidate https://www.linkedin.com/in/stickerdaniel/\n```\n\n```\nGet this company profile for partnership discussions https://www.linkedin.com/company/inframs/\n```\n\n```\nSuggest improvements for my CV to target this job posting https://www.linkedin.com/jobs/view/4252026496\n```\n\n```\nWhat has Anthropic been posting about recently? https://www.linkedin.com/company/anthropicresearch/\n```\n\n## Features \u0026 Tool Status\n\n| Tool | Description | Status |\n|------|-------------|--------|\n| `get_person_profile` | Get profile info with explicit section selection (experience, education, interests, honors, languages, contact_info, posts) | Working |\n| `connect_with_person` | Send a connection request or accept an incoming one, with optional note | Working |\n| `get_sidebar_profiles` | Extract profile URLs from sidebar recommendation sections (\"More profiles for you\", \"Explore premium profiles\", \"People you may know\") on a profile page | Working |\n| `get_inbox` | List recent conversations from the LinkedIn messaging inbox | Working |\n| `get_conversation` | Read a specific messaging conversation by username or thread ID | Working |\n| `search_conversations` | Search messages by keyword | Working |\n| `send_message` | Send a message to a LinkedIn user (requires confirmation) | Working |\n| `get_company_profile` | Extract company information with explicit section selection (posts, jobs) | Working |\n| `get_company_posts` | Get recent posts from a company's LinkedIn feed | Working |\n| `search_jobs` | Search for jobs with keywords and location filters | Working |\n| `search_people` | Search for people by keywords and location | Working |\n| `get_job_details` | Get detailed information about a specific job posting | Working |\n| `close_session` | Close browser session and clean up resources | Working |\n\n\u003e [!IMPORTANT]\n\u003e **Breaking change:** LinkedIn recently made some changes to prevent scraping. The newest version uses [Patchright](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python) with persistent browser profiles instead of Playwright with session files. Old `session.json` files and `LINKEDIN_COOKIE` env vars are no longer supported. Run `--login` again to create a new profile + cookie file that can be mounted in docker. 02/2026\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n## 🚀 uvx Setup (Recommended - Universal)\n\n**Prerequisites:** [Install uv](https://docs.astral.sh/uv/getting-started/installation/).\n\n### Installation\n\n**Client Configuration**\n\n```json\n{\n  \"mcpServers\": {\n    \"linkedin\": {\n      \"command\": \"uvx\",\n      \"args\": [\"linkedin-scraper-mcp\"]\n    }\n  }\n}\n```\n\nThe server starts quickly, prepares the shared Patchright Chromium browser cache in the background under `~/.linkedin-mcp/patchright-browsers`, and opens a LinkedIn login browser window on the first tool call that needs authentication.\n\n\u003e [!NOTE]\n\u003e Early tool calls may return a setup/authentication-in-progress error until browser setup or login finishes. If you prefer to create a session explicitly, run `uvx linkedin-scraper-mcp --login`.\n\n### uvx Setup Help\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e🔧 Configuration\u003c/b\u003e\u003c/summary\u003e\n\n**Transport Modes:**\n\n- **Default (stdio)**: Standard communication for local MCP servers\n- **Streamable HTTP**: For web-based MCP server\n- If no transport is specified, the server defaults to `stdio`\n- An interactive terminal without explicit transport shows a chooser prompt\n\n**CLI Options:**\n\n- `--login` - Open browser to log in and save persistent profile\n- `--no-headless` - Show browser window (useful for debugging scraping issues)\n- `--log-level {DEBUG,INFO,WARNING,ERROR}` - Set logging level (default: WARNING)\n- `--transport {stdio,streamable-http}` - Optional: force transport mode (default: stdio)\n- `--host HOST` - HTTP server host (default: 127.0.0.1)\n- `--port PORT` - HTTP server port (default: 8000)\n- `--path PATH` - HTTP server path (default: /mcp)\n- `--logout` - Clear stored LinkedIn browser profile\n- `--timeout MS` - Browser timeout for page operations in milliseconds (default: 5000)\n- `--user-data-dir PATH` - Path to persistent browser profile directory (default: ~/.linkedin-mcp/profile)\n- `--chrome-path PATH` - Path to Chrome/Chromium executable (for custom browser installations)\n\n**Basic Usage Examples:**\n\n```bash\n# Run with debug logging\nuvx linkedin-scraper-mcp --log-level DEBUG\n```\n\n**HTTP Mode Example (for web-based MCP clients):**\n\n```bash\nuvx linkedin-scraper-mcp --transport streamable-http --host 127.0.0.1 --port 8080 --path /mcp\n```\n\nRuntime server logs are emitted by FastMCP/Uvicorn.\n\nTool calls are serialized within a single server process to protect the shared\nLinkedIn browser session. Concurrent client requests queue instead of running in\nparallel. Use `--log-level DEBUG` to see scraper lock wait/acquire/release logs.\n\n**Test with mcp inspector:**\n\n1. Install and run mcp inspector ```bunx @modelcontextprotocol/inspector```\n2. Click pre-filled token url to open the inspector in your browser\n3. Select `Streamable HTTP` as `Transport Type`\n4. Set `URL` to `http://localhost:8080/mcp`\n5. Connect\n6. Test tools\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e❗ Troubleshooting\u003c/b\u003e\u003c/summary\u003e\n\n**Installation issues:**\n\n- Ensure you have uv installed: `curl -LsSf https://astral.sh/uv/install.sh | sh`\n- Check uv version: `uv --version` (should be 0.4.0 or higher)\n\n**Session issues:**\n\n- Browser profile is stored at `~/.linkedin-mcp/profile/`\n- Managed browser downloads are cached at `~/.linkedin-mcp/patchright-browsers/`\n- Make sure you have only one active LinkedIn session at a time\n\n**Login issues:**\n\n- LinkedIn may require a login confirmation in the LinkedIn mobile app for `--login`\n- You might get a captcha challenge if you logged in frequently. Run `uvx linkedin-scraper-mcp --login` which opens a browser where you can solve it manually.\n\n**Timeout issues:**\n\n- If pages fail to load or elements aren't found, try increasing the timeout: `--timeout 10000`\n- Users on slow connections may need higher values (e.g., 15000-30000ms)\n- Can also set via environment variable: `TIMEOUT=10000`\n\n**Custom Chrome path:**\n\n- If Chrome is installed in a non-standard location, use `--chrome-path /path/to/chrome`\n- Can also set via environment variable: `CHROME_PATH=/path/to/chrome`\n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n## 📦 Claude Desktop MCP Bundle (formerly DXT)\n\n**Prerequisites:** [Claude Desktop](https://claude.ai/download).\n\n**One-click installation** for Claude Desktop users:\n\n1. Download the latest `.mcpb` artifact from [releases](https://github.com/stickerdaniel/linkedin-mcp-server/releases/latest)\n2. Click the downloaded `.mcpb` file to install it into Claude Desktop\n3. Call any LinkedIn tool\n\nOn startup, the MCP Bundle starts preparing the shared Patchright Chromium browser cache in the background. If you call a tool too early, Claude will surface a setup-in-progress error. On the first tool call that needs authentication, the server opens a LinkedIn login browser window and asks you to retry after sign-in.\n\n### MCP Bundle Setup Help\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e❗ Troubleshooting\u003c/b\u003e\u003c/summary\u003e\n\n**First-time setup behavior:**\n\n- Claude Desktop starts the bundle immediately; browser setup continues in the background\n- If the Patchright Chromium browser is still downloading, retry the tool after a short wait\n- Managed browser downloads are shared under `~/.linkedin-mcp/patchright-browsers/`\n\n**Login issues:**\n\n- Make sure you have only one active LinkedIn session at a time\n- LinkedIn may require a login confirmation in the LinkedIn mobile app for `--login`\n- You might get a captcha challenge if you logged in frequently. Run `uvx linkedin-scraper-mcp --login` which opens a browser where you can solve captchas manually. See the [uvx setup](#-uvx-setup-recommended---universal) for prerequisites.\n\n**Timeout issues:**\n\n- If pages fail to load or elements aren't found, try increasing the timeout: `--timeout 10000`\n- Users on slow connections may need higher values (e.g., 15000-30000ms)\n- Can also set via environment variable: `TIMEOUT=10000`\n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n## 🐳 Docker Setup\n\n**Prerequisites:** Make sure you have [Docker](https://www.docker.com/get-started/) installed and running, and [uv](https://docs.astral.sh/uv/getting-started/installation/) installed on the host for the one-time `--login` step.\n\n### Authentication\n\nDocker runs headless (no browser window), so you need to create a browser profile locally first and mount it into the container.\n\n**Step 1: Create profile on the host (one-time setup)**\n\n```bash\nuvx linkedin-scraper-mcp --login\n```\n\nThis opens a browser window where you log in manually (5 minute timeout for 2FA, captcha, etc.). The browser profile and cookies are saved under `~/.linkedin-mcp/`. On startup, Docker derives a Linux browser profile from your host cookies and creates a fresh session each time. If you experience stability issues with Docker, consider using the [uvx setup](#-uvx-setup-recommended---universal) instead.\n\n**Step 2: Configure Claude Desktop with Docker**\n\n```json\n{\n  \"mcpServers\": {\n    \"linkedin\": {\n      \"command\": \"docker\",\n      \"args\": [\n        \"run\", \"--rm\", \"-i\",\n        \"-v\", \"~/.linkedin-mcp:/home/pwuser/.linkedin-mcp\",\n        \"stickerdaniel/linkedin-mcp-server:latest\"\n      ]\n    }\n  }\n}\n```\n\n\u003e [!NOTE]\n\u003e Docker creates a fresh session on each startup. Sessions may expire over time — run `uvx linkedin-scraper-mcp --login` again if you encounter authentication issues.\n\n\u003e [!NOTE]\n\u003e **Why can't I run `--login` in Docker?** Docker containers don't have a display server. Create a profile on your host using the [uvx setup](#-uvx-setup-recommended---universal) and mount it into Docker.\n\n### Docker Setup Help\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e🔧 Configuration\u003c/b\u003e\u003c/summary\u003e\n\n**Transport Modes:**\n\n- **Default (stdio)**: Standard communication for local MCP servers\n- **Streamable HTTP**: For a web-based MCP server\n- If no transport is specified, the server defaults to `stdio`\n- An interactive terminal without explicit transport shows a chooser prompt\n\n**CLI Options:**\n\n- `--log-level {DEBUG,INFO,WARNING,ERROR}` - Set logging level (default: WARNING)\n- `--transport {stdio,streamable-http}` - Optional: force transport mode (default: stdio)\n- `--host HOST` - HTTP server host (default: 127.0.0.1)\n- `--port PORT` - HTTP server port (default: 8000)\n- `--path PATH` - HTTP server path (default: /mcp)\n- `--logout` - Clear all stored LinkedIn auth state, including source and derived runtime profiles\n- `--timeout MS` - Browser timeout for page operations in milliseconds (default: 5000)\n- `--user-data-dir PATH` - Path to persistent browser profile directory (default: ~/.linkedin-mcp/profile)\n- `--chrome-path PATH` - Path to Chrome/Chromium executable (rarely needed in Docker)\n\n\u003e [!NOTE]\n\u003e `--login` and `--no-headless` are not available in Docker (no display server). Use the [uvx setup](#-uvx-setup-recommended---universal) to create profiles.\n\n**HTTP Mode Example (for web-based MCP clients):**\n\n```bash\ndocker run -it --rm \\\n  -v ~/.linkedin-mcp:/home/pwuser/.linkedin-mcp \\\n  -p 8080:8080 \\\n  stickerdaniel/linkedin-mcp-server:latest \\\n  --transport streamable-http --host 0.0.0.0 --port 8080 --path /mcp\n```\n\nRuntime server logs are emitted by FastMCP/Uvicorn.\n\n**Test with mcp inspector:**\n\n1. Install and run mcp inspector ```bunx @modelcontextprotocol/inspector```\n2. Click pre-filled token url to open the inspector in your browser\n3. Select `Streamable HTTP` as `Transport Type`\n4. Set `URL` to `http://localhost:8080/mcp`\n5. Connect\n6. Test tools\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e❗ Troubleshooting\u003c/b\u003e\u003c/summary\u003e\n\n**Docker issues:**\n\n- Make sure [Docker](https://www.docker.com/get-started/) is installed\n- Check if Docker is running: `docker ps`\n\n**Login issues:**\n\n- Make sure you have only one active LinkedIn session at a time\n- LinkedIn may require a login confirmation in the LinkedIn mobile app for `--login`\n- You might get a captcha challenge if you logged in frequently. Run `uvx linkedin-scraper-mcp --login` which opens a browser where you can solve captchas manually. See the [uvx setup](#-uvx-setup-recommended---universal) for prerequisites.\n- If Docker auth becomes stale after you re-login on the host, restart Docker once so it can fresh-bridge from the new source session generation.\n\n**Timeout issues:**\n\n- If pages fail to load or elements aren't found, try increasing the timeout: `--timeout 10000`\n- Users on slow connections may need higher values (e.g., 15000-30000ms)\n- Can also set via environment variable: `TIMEOUT=10000`\n\n**Custom Chrome path:**\n\n- If Chrome is installed in a non-standard location, use `--chrome-path /path/to/chrome`\n- Can also set via environment variable: `CHROME_PATH=/path/to/chrome`\n\n\u003c/details\u003e\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n## 🐍 Local Setup (Develop \u0026 Contribute)\n\nContributions are welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for architecture guidelines and checklists. Please [open an issue](https://github.com/stickerdaniel/linkedin-mcp-server/issues) first to discuss the feature or bug fix before submitting a PR.\n\n**Prerequisites:** [Git](https://git-scm.com/downloads) and [uv](https://docs.astral.sh/uv/) installed\n\n### Installation\n\n```bash\n# 1. Clone repository\ngit clone https://github.com/stickerdaniel/linkedin-mcp-server\ncd linkedin-mcp-server\n\n# 2. Install UV package manager (if not already installed)\ncurl -LsSf https://astral.sh/uv/install.sh | sh\n\n# 3. Install dependencies\nuv sync\nuv sync --group dev\n\n# 4. Install pre-commit hooks\nuv run pre-commit install\n\n# 5. Start the server\nuv run -m linkedin_mcp_server\n```\n\nThe local server uses the same managed-runtime flow as MCPB and `uvx`: it prepares the Patchright Chromium browser cache in the background and opens LinkedIn login on the first auth-requiring tool call. You can still run `uv run -m linkedin_mcp_server --login` when you want to create the session explicitly.\n\n### Local Setup Help\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e🔧 Configuration\u003c/b\u003e\u003c/summary\u003e\n\n**CLI Options:**\n\n- `--login` - Open browser to log in and save persistent profile\n- `--no-headless` - Show browser window (useful for debugging scraping issues)\n- `--log-level {DEBUG,INFO,WARNING,ERROR}` - Set logging level (default: WARNING)\n- `--transport {stdio,streamable-http}` - Optional: force transport mode (default: stdio)\n- `--host HOST` - HTTP server host (default: 127.0.0.1)\n- `--port PORT` - HTTP server port (default: 8000)\n- `--path PATH` - HTTP server path (default: /mcp)\n- `--logout` - Clear stored LinkedIn browser profile\n- `--timeout MS` - Browser timeout for page operations in milliseconds (default: 5000)\n- `--status` - Check if current session is valid and exit\n- `--user-data-dir PATH` - Path to persistent browser profile directory (default: ~/.linkedin-mcp/profile)\n- `--slow-mo MS` - Delay between browser actions in milliseconds (default: 0, useful for debugging)\n- `--user-agent STRING` - Custom browser user agent\n- `--viewport WxH` - Browser viewport size (default: 1280x720)\n- `--chrome-path PATH` - Path to Chrome/Chromium executable (for custom browser installations)\n- `--help` - Show help\n\n\u003e **Note:** Most CLI options have environment variable equivalents. See `.env.example` for details.\n\n**HTTP Mode Example (for web-based MCP clients):**\n\n```bash\nuv run -m linkedin_mcp_server --transport streamable-http --host 127.0.0.1 --port 8000 --path /mcp\n```\n\n**Claude Desktop:**\n\n```json\n{\n  \"mcpServers\": {\n    \"linkedin\": {\n      \"command\": \"uv\",\n      \"args\": [\"--directory\", \"/path/to/linkedin-mcp-server\", \"run\", \"-m\", \"linkedin_mcp_server\"]\n    }\n  }\n}\n```\n\n`stdio` is used by default for this config.\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cb\u003e❗ Troubleshooting\u003c/b\u003e\u003c/summary\u003e\n\n**Login issues:**\n\n- Make sure you have only one active LinkedIn session at a time\n- LinkedIn may require a login confirmation in the LinkedIn mobile app for `--login`\n- You might get a captcha challenge if you logged in frequently. The `--login` command opens a browser where you can solve it manually.\n\n**Scraping issues:**\n\n- Use `--no-headless` to see browser actions and debug scraping problems\n- Add `--log-level DEBUG` to see more detailed logging\n\n**Session issues:**\n\n- Browser profile is stored at `~/.linkedin-mcp/profile/`\n- Use `--logout` to clear the profile and start fresh\n\n**Python/Patchright issues:**\n\n- Check Python version: `python --version` (should be 3.12+)\n- Reinstall Patchright: `uv run patchright install chromium`\n- Reinstall dependencies: `uv sync --reinstall`\n\n**Timeout issues:**\n\n- If pages fail to load or elements aren't found, try increasing the timeout: `--timeout 10000`\n- Users on slow connections may need higher values (e.g., 15000-30000ms)\n- Can also set via environment variable: `TIMEOUT=10000`\n\n**Custom Chrome path:**\n\n- If Chrome is installed in a non-standard location, use `--chrome-path /path/to/chrome`\n- Can also set via environment variable: `CHROME_PATH=/path/to/chrome`\n\n\u003c/details\u003e\n\n\n\u003cbr/\u003e\n\u003cbr/\u003e\n\n## Acknowledgements\n\nBuilt with [FastMCP](https://gofastmcp.com/) and [Patchright](https://github.com/Kaliiiiiiiiii-Vinyzu/patchright-python).\n\nUse in accordance with [LinkedIn's Terms of Service](https://www.linkedin.com/legal/user-agreement). Web scraping may violate LinkedIn's terms. This tool is for personal use only.\n\n## License\n\nThis project is licensed under the Apache 2.0 license.\n\n\u003cbr\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstickerdaniel%2Flinkedin-mcp-server","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstickerdaniel%2Flinkedin-mcp-server","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstickerdaniel%2Flinkedin-mcp-server/lists"}