LinkedIn MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@LinkedIn MCP ServerGet my LinkedIn profile"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
LinkedIn MCP Server
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-httpAuthentication
Related MCP server: LinkedIn Bulk Data Scraper
1. Scraping (LinkedIn Cookie)
Get your li_at cookie:
Log in to LinkedIn in Chrome
Press F12
Application โ Cookies โ https://www.linkedin.com
Copy the
li_atcookie valueAdd to
.env:
LINKEDIN_COOKIE=li_at=YOUR_COOKIE_VALUE2. 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=202510Quick OAuth Link
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_emailaddressExchange 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_profileget_company_profileget_job_detailssearch_jobssearch_recommended_jobsclose_session
๐ Post Management
create_linkedin_postupdate_linkedin_postdelete_linkedin_post
๐ผ๏ธ Media
upload_linkedin_imageget_linkedin_image
๐ Reactions
add_linkedin_reactionremove_linkedin_reactionget_linkedin_reactions
๐ค Profile & Auth
get_linkedin_profilevalidate_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.mdTesting
# unit tests
uv run pytest tests/unit -v
# integration tests
uv run pytest tests/integration -v
# all tests
uv run pytest tests/ -vQuick API test:
uv run python scripts/test_api.pyTroubleshooting
โ "426 Client Error: Upgrade Required"
Fix:
LINKEDIN_API_VERSION=202510โ "LINKEDIN_COOKIE required"
Get fresh cookie from Chrome.
โ "401 Unauthorized"
Generate a new access token.
ChromeDriver issues
pip install --upgrade selenium webdriver-managerAPI Versioning
Current default:
202510Check latest: https://learn.microsoft.com/en-us/linkedin/marketing/versioning
Update:
LINKEDIN_API_VERSION=202511Restart 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-filesPull 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
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