Skip to main content
Glama
selvin-paul-raj

LinkedIn MCP Server

LinkedIn MCP Server

License: MIT Python 3.12+ LinkedIn API

Complete LinkedIn automation toolkit. Scrape profiles, manage posts, read any LinkedIn content, and automate interactions via MCP (Model Context Protocol).


๐Ÿ“˜ Table of Contents


Overview

linkedin-mcp is a fully featured MCP server that provides automation tools for LinkedIn.
It supports browser-based scraping and API-based operations for content management, media uploads, and reactions.

Repository: Linkedin MCP Server


Features

๐Ÿ” Scraping (Browser-Based)

  • Extract full LinkedIn profiles

  • Scrape company pages

  • Read job listings

  • Read ANY LinkedIn post

  • Extract images, videos, engagement metrics

๐Ÿ“ API-Based Post Management

  • Create, update, delete LinkedIn posts

  • Add or remove reactions

  • Upload images and documents

  • Supports all official LinkedIn REST API features

๐Ÿงฉ MCP Integration

  • Works with Claude Desktop and any MCP-compatible client

  • 17 total tools included

๐Ÿงช Testing

  • 50+ tests

  • Covers scraping, API, and MCP tools


Quickstart

Install

git clone https://github.com/selvin-paul-raj/Linkedin-MCP-Server.git
cd Linkedin-MCP-Server

# create environment config
cp .env.example .env

# install dependencies
pip install -e .

Run

# Standard MCP server
uv run linkedin-mcp

# Debug mode (shows browser)
uv run main.py --debug --no-headless --no-lazy-init

# HTTP mode
uv run main.py --transport streamable-http

Authentication

Related MCP server: LinkedIn Bulk Data Scraper

Get your li_at cookie:

  1. Log in to LinkedIn in Chrome

  2. Press F12

  3. Application โ†’ Cookies โ†’ https://www.linkedin.com

  4. Copy the li_at cookie value

  5. Add to .env:

LINKEDIN_COOKIE=li_at=YOUR_COOKIE_VALUE

2. API (OAuth Access Token)

Add these fields to .env:

LINKEDIN_CLIENT_ID=your_id
LINKEDIN_CLIENT_SECRET=your_secret
LINKEDIN_ACCESS_TOKEN=your_access_token
LINKEDIN_API_VERSION=202510
https://www.linkedin.com/oauth/v2/authorization?response_type=code&client_id=YOUR_CLIENT_ID&redirect_uri=YOUR_REDIRECT_URI&scope=w_member_social%20r_liteprofile%20r_emailaddress

Exchange auth code:

curl -X POST https://www.linkedin.com/oauth/v2/accessToken \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=authorization_code" \
  -d "code=YOUR_CODE" \
  -d "redirect_uri=YOUR_REDIRECT_URI" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "client_secret=YOUR_CLIENT_SECRET"

Usage

Read any LinkedIn post

{
  "tool": "read_linkedin_post",
  "input": "https://www.linkedin.com/posts/...activity-123456..."
}

Create a post

{
  "tool": "create_linkedin_post",
  "input": {
    "text": "Excited to announce our new product launch! ๐Ÿš€",
    "visibility": "PUBLIC"
  }
}

Upload image

{
  "tool": "upload_linkedin_image",
  "input": { "image_url": "https://example.com/image.jpg" }
}

Claude Desktop Integration

Add this to claude_desktop_config.json:

{
  "mcpServers": {
    "linkedin": {
      "command": "uv",
      "args": [
        "--directory",
        "D:\\MCP\\linkedin-mcp",
        "run",
        "linkedin-mcp"
      ],
      "env": {
        "LINKEDIN_COOKIE": "li_at=YOUR_COOKIE",
        "LINKEDIN_ACCESS_TOKEN": "YOUR_TOKEN"
      }
    }
  }
}

Available Tools

๐Ÿ“– Content Reading

  • read_linkedin_post

๐ŸŒ Scraping

  • get_person_profile

  • get_company_profile

  • get_job_details

  • search_jobs

  • search_recommended_jobs

  • close_session

๐Ÿ“ Post Management

  • create_linkedin_post

  • update_linkedin_post

  • delete_linkedin_post

๐Ÿ–ผ๏ธ Media

  • upload_linkedin_image

  • get_linkedin_image

๐Ÿ’™ Reactions

  • add_linkedin_reaction

  • remove_linkedin_reaction

  • get_linkedin_reactions

๐Ÿ‘ค Profile & Auth

  • get_linkedin_profile

  • validate_linkedin_credentials

More details. See TOOLS_REFERENCE.md.


Project Structure

linkedin-mcp/
โ”œโ”€โ”€ linkedin_mcp_server/
โ”‚   โ”œโ”€โ”€ server.py
โ”‚   โ”œโ”€โ”€ cli.py
โ”‚   โ”œโ”€โ”€ config/
โ”‚   โ”œโ”€โ”€ drivers/
โ”‚   โ””โ”€โ”€ tools/
โ”œโ”€โ”€ tests/
โ”‚   โ”œโ”€โ”€ unit/
โ”‚   โ”œโ”€โ”€ integration/
โ”œโ”€โ”€ scripts/
โ”œโ”€โ”€ .env.example
โ”œโ”€โ”€ pyproject.toml
โ”œโ”€โ”€ README.md
โ””โ”€โ”€ TOOLS_REFERENCE.md

Testing

# unit tests
uv run pytest tests/unit -v

# integration tests
uv run pytest tests/integration -v

# all tests
uv run pytest tests/ -v

Quick API test:

uv run python scripts/test_api.py

Troubleshooting

โŒ "426 Client Error: Upgrade Required"

Fix:

LINKEDIN_API_VERSION=202510

Get fresh cookie from Chrome.

โŒ "401 Unauthorized"

Generate a new access token.

ChromeDriver issues

pip install --upgrade selenium webdriver-manager

API Versioning

Current default:

202510

Check latest: https://learn.microsoft.com/en-us/linkedin/marketing/versioning

Update:

LINKEDIN_API_VERSION=202511

Restart the server.


Contributing

git clone https://github.com/selvin-paul-raj/Linkedin-MCP-Server.git
cd Linkedin-MCP-Server
uv sync
uv run pytest tests/ -v
uv run ruff format .
uv run pre-commit run --all-files

Pull requests welcome.


License

MIT License. See the LICENSE file.


Disclaimer

This tool is for educational and automation purposes. Follow LinkedIn TOS, API terms, and usage limits. Use responsibly.


Built with โค๏ธ for LinkedIn automation

Install Server
A
license - permissive license
A
quality
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/selvin-paul-raj/Linkedin-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server