LinkedIn Sales & Navigator MCP Server
# LinkedIn Sales Navigator MCP Server
[](https://www.typescriptlang.org/)
[](https://modelcontextprotocol.io)
[](https://opensource.org/licenses/ISC)
A [Model Context Protocol](https://modelcontextprotocol.io) server for LinkedIn Sales Navigator -- automate lead generation, profile research, and outreach workflows through AI assistants.
---
## Features
- **Lead search** -- search LinkedIn Sales Navigator with filters for title, company, location, industry
- **Profile enrichment** -- extract detailed profile data including experience, education, skills
- **Company research** -- get company details, employee counts, recent updates
- **Connection management** -- send connection requests with personalized messages
- **InMail automation** -- draft and send InMail messages via AI
- **Cookie-based auth** -- uses your browser session, no LinkedIn API partnership required
- **Stealth browsing** -- Puppeteer with stealth plugin to avoid detection
- **MCP standard** -- works with Claude Desktop, Claude Code, and any MCP-compatible client
---
## Prerequisites
- **Node.js** >= 18.0.0
- **npm** >= 8.0.0
- **LinkedIn Sales Navigator** subscription with active browser session
---
## Installation
```bash
git clone https://github.com/aditya-ai-architect/Lindin-Sales-and-Navigator-MCP.git
cd Lindin-Sales-and-Navigator-MCP
npm install
npm run build
```
---
## Getting Your LinkedIn Cookies
1. Open [linkedin.com](https://www.linkedin.com) and log in
2. Open **Developer Tools** (F12)
3. Go to **Application** > **Cookies** > `https://www.linkedin.com`
4. Copy the `li_at` cookie value
| Cookie | Description |
|--------|-------------|
| `li_at` | LinkedIn session authentication token |
---
## Configuration
### Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `LINKEDIN_SESSION_COOKIE` | Yes | The `li_at` cookie value |
Create a `.env` file:
```env
LINKEDIN_SESSION_COOKIE=your_li_at_cookie_here
```
### Claude Desktop
```json
{
"mcpServers": {
"linkedin": {
"command": "node",
"args": ["/absolute/path/to/Lindin-Sales-and-Navigator-MCP/build/index.js"],
"env": {
"LINKEDIN_SESSION_COOKIE": "your_li_at_cookie_here"
}
}
}
}
```
### Claude Code
```bash
claude mcp add linkedin -- node /absolute/path/to/Lindin-Sales-and-Navigator-MCP/build/index.js
```
---
## Usage Examples
**Search for leads:**
```
Find VP of Engineering at Series B startups in San Francisco
```
**Research a company:**
```
Get company details and recent updates for Anthropic
```
**Outreach:**
```
Send a connection request to [profile] with a personalized note about their recent post on AI agents
```
---
## Project Structure
```
Lindin-Sales-and-Navigator-MCP/
src/
index.ts # MCP server setup and tool registration
linkedin-client.ts # LinkedIn API client
build/ # Compiled output
package.json
tsconfig.json
```
---
## Troubleshooting
| Issue | Solution |
|-------|----------|
| Auth errors | Cookie expired -- extract fresh `li_at` from browser |
| Rate limiting | LinkedIn limits requests; add delays between operations |
| Profile not found | Check if the profile URL or username is correct |
| Detection/block | Clear cookies, wait 24h, then use fresh session |
---
## Tech Stack
- **Runtime:** Node.js (ES2022)
- **Language:** TypeScript 5.x
- **MCP SDK:** @modelcontextprotocol/sdk
- **Browser:** Puppeteer + puppeteer-extra-plugin-stealth
- **Validation:** Zod
---
## Disclaimer
This tool uses LinkedIn's internal APIs via session cookies. Automated access may violate LinkedIn's Terms of Service. Use responsibly for personal and educational purposes only.
---
## License
ISC
---
**Built by [Aditya Gaurav](https://github.com/aditya-ai-architect)**
TDQS
Scored across 22 tools
Most tools have distinct purposes, but there is some overlap between get_profile, get_profile_details, get_profile_experience, and get_profile_skills, which could cause confusion about which to use for comprehensive profile data. However, the descriptions clarify their specific scopes, and other tools like get_company vs. search_companies are well-differentiated.
Tool names follow a highly consistent verb_noun pattern throughout, with clear and predictable naming such as get_company, search_people, and send_message. All tools use snake_case, and verbs like 'get', 'search', and 'send' are applied consistently across related functions.
With 22 tools, the count is slightly high but reasonable for the broad scope of LinkedIn Sales & Navigator, covering profile management, messaging, search, and Sales Navigator features. It feels comprehensive without being overwhelmingly bloated, though it could benefit from some consolidation in the profile-related tools.
The tool set provides complete coverage for the domain, including CRUD-like operations for profiles, companies, conversations, and Sales Navigator leads, with no obvious gaps. It supports core workflows like searching, retrieving details, sending messages, and managing connections, ensuring agents can handle typical LinkedIn tasks effectively.