Skip to main content
Glama
SandeshKhilari01

LinkedInMCP

README.md
# <img src="https://content.linkedin.com/content/dam/me/business/en-us/amp/brand-site/v2/bg/LI-Bug.svg.original.svg" alt="LinkedIn Logo" width="32" height="32"> LinkedInMCP: Revolutionizing LinkedIn API Interactions

## šŸš€ Comprehensive Setup Guide

### Prerequisites
- Node.js 16+
- LinkedIn Developer Account
- MCP-Compatible LLM (Claude, OpenAI, etc.)

### 1. LinkedIn Developer Setup

1. Go to [LinkedIn Developer Portal](https://www.linkedin.com/developers/)
2. Create a new application
3. Obtain Client ID and Client Secret

> **Important:** For detailed instructions on obtaining access tokens and authentication for LinkedIn API, refer to the official documentation: [Getting Access to LinkedIn API](https://learn.microsoft.com/en-us/linkedin/shared/authentication/getting-access)

### 2. Project Installation

```bash
git clone https://github.com/Dishant27/linkedin-mcp-server.git
cd linkedin-mcp-server
npm install
```

### 3. Configuration Files

#### `.env` File
Create a `.env` file in the project root:
```
LINKEDIN_CLIENT_ID=your_client_id_here
LINKEDIN_CLIENT_SECRET=your_client_secret_here
```

#### `claude_desktop_config.json` (for Claude Desktop)
```json
{
  "mcpServers": {
    "linkedin": {
      "command": "node",
      "args": ["/absolute/path/to/linkedin-mcp-server/dist/index.js"],
      "env": {
        "LINKEDIN_CLIENT_ID": "your_client_id",
        "LINKEDIN_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}
```

### 4. LLM Configuration Example

#### Claude.ai / Claude Desktop MCP Integration

```json
{
  "tools": [
    {
      "name": "search-people",
      "description": "Search for LinkedIn profiles",
      "parameters": {
        "type": "object",
        "properties": {
          "keywords": {
            "type": "string",
            "description": "Keywords to search for in profiles"
          },
          "currentCompany": {
            "type": "array",
            "items": {"type": "string"},
            "description": "Filter by current company"
          },
          "industries": {
            "type": "array",
            "items": {"type": "string"},
            "description": "Filter by industries"
          },
          "location": {
            "type": "string", 
            "description": "Filter by location"
          }
        }
      }
    },
    {
      "name": "get-profile",
      "description": "Retrieve detailed LinkedIn profile information",
      "parameters": {
        "type": "object",
        "properties": {
          "publicId": {
            "type": "string",
            "description": "Public ID of the LinkedIn profile"
          },
          "urnId": {
            "type": "string", 
            "description": "URN ID of the LinkedIn profile"
          }
        }
      }
    }
  ]
}
```

### 5. Typical Workflow

1. Start the MCP Server:
```bash
npm run build
npm start
```

2. Example LLM Interactions:
```
> Find software engineers in San Francisco working at tech companies

# The LLM will use the search-people tool to:
# 1. Search LinkedIn profiles
# 2. Filter by location (San Francisco)
# 3. Filter by industry (Technology)
# 4. Return relevant profile details
```

## šŸ“– Learn More
Check out the detailed article explaining the concept and implementation:

[LinkedIn MCP Server for LLMs](https://dishantraghav27.medium.com/linkedin-mcp-server-for-llms-c96fd9bb4e39)

## šŸš€ Project Background

**LinkedInMCP** is an innovative Model Context Protocol (MCP) server designed to transform how developers interact with LinkedIn's API. Born from the need for more flexible and powerful LinkedIn data integration, this project provides a robust, extensible framework for advanced LinkedIn data retrieval and interaction.

## 🌟 Project Vision

Recognizing the limitations of traditional LinkedIn API approaches, this solution creates a more intelligent, context-aware method of working with professional network data.

## ✨ Key Innovations

- **Intelligent Context Management**: Leverage MCP's advanced context handling
- **Secure, Typed Interactions**: Type-safe LinkedIn API interactions
- **Extensible Architecture**: Easy to expand and customize
- **Standardized Protocol**: Follows Model Context Protocol specifications

## šŸ› ļø Technologies

- TypeScript
- Model Context Protocol
- LinkedIn API
- OAuth 2.0
- Zod for Type Validation
- Axios for HTTP Requests

## šŸ” Core Capabilities

- Advanced People Search
- Detailed Profile Retrieval
- Job Market Intelligence
- Messaging Capabilities
- Secure Authentication Workflow

## šŸ’¼ Enterprise Use Cases

LinkedInMCP enables powerful applications for business settings:

### Talent Acquisition
- **Candidate Sourcing**: Find qualified candidates matching specific skill and experience criteria
- **Talent Pool Analysis**: Map talent distribution across industries and geographies
- **Outreach Automation**: Streamline initial contact with potential candidates
- **Competitive Intelligence**: Understand recruitment patterns at competitor organizations

### Sales & Business Development
- **Lead Generation**: Identify decision-makers at target companies
- **Account-Based Marketing**: Build comprehensive profiles of key accounts
- **Relationship Mapping**: Visualize connection networks within organizations
- **Market Penetration Analysis**: Track industry adoption of products or services

### Market Research
- **Industry Trends**: Monitor employment shifts across sectors
- **Skill Demand Analysis**: Track emerging skills and technologies
- **Organizational Structure Insights**: Map reporting relationships and team compositions
- **Geographic Movement Patterns**: Understand talent migration between regions

### Integration Capabilities
- **CRM Synchronization**: Update contact data from LinkedIn to CRM systems
- **ATS Enhancement**: Enrich applicant tracking systems with LinkedIn data
- **Business Intelligence Tools**: Feed LinkedIn data to dashboards and analytics platforms
- **Custom Workflow Integration**: Add LinkedIn capabilities to internal tools via API

## šŸ”’ Security Framework

The comprehensive security model of LinkedInMCP implements multiple layers of protection:

### Authentication Security
- **OAuth 2.0 Implementation**: Industry-standard token-based authentication
- **Token Refresh Management**: Automated handling of token expiration
- **Credential Isolation**: Environment-based secret management
- **Rate Limiting**: Protection against excessive API requests

### Data Security
- **End-to-End Encryption**: Secure data transmission
- **Minimal Data Storage**: Processing data without persistent storage
- **Selective Information Return**: Only returning requested data fields
- **Automatic Data Sanitization**: Preventing injection vulnerabilities

### Compliance Features
- **GDPR Adherence**: Configurable data handling for European compliance
- **API Terms Enforcement**: Built-in LinkedIn API usage policy compliance
- **Audit Logging**: Comprehensive activity tracking for compliance reporting
- **Data Governance Tools**: Simplifying regulatory compliance management

## šŸ“¦ Generated Project Structure

```
linkedin-mcp-server/
│
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ index.ts         # Main server entry point
│   ā”œā”€ā”€ auth.ts          # LinkedIn authentication handler
│   └── client.ts        # LinkedIn API interaction client
│
ā”œā”€ā”€ dist/                # Compiled JavaScript files
│   ā”œā”€ā”€ index.js
│   ā”œā”€ā”€ auth.js
│   └── client.js
│
ā”œā”€ā”€ .env                 # Secret environment variables
ā”œā”€ā”€ .env.example         # Template for environment variables
ā”œā”€ā”€ package.json         # Project dependencies and scripts
ā”œā”€ā”€ tsconfig.json        # TypeScript configuration
└── README.md            # Project documentation
```

## šŸ¤ Contributing

Inspired by the project? Contributions are welcome!

1. Fork the repository
2. Create your feature branch
3. Commit your changes
4. Push to the branch
5. Open a Pull Request

## šŸ“„ License

Distributed under the MIT License.

---

**Disclaimer**: This project is an independent innovation and is not officially affiliated with LinkedIn or Microsoft.