LinkedIn MCP Server
A powerful Model Context Protocol (MCP) server for seamless LinkedIn integration with automatic OAuth 2.0 authentication. Get instant access to LinkedIn data through AI assistants like SIYA Desktop with zero manual setup required.
β¨ Key Features
π Zero-Setup Authentication
- Automatic OAuth flow - Browser opens automatically for LinkedIn login
- Seamless integration - Works immediately with SIYA Desktop
- Secure token management - 60-day tokens with automatic refresh
- Multi-user support - Manage multiple LinkedIn accounts effortlessly
π§ Complete LinkedIn Toolkit
- Profile Management - Access your profile and others' profiles
- Advanced Search - Find users, companies, and jobs with filters
- Content Creation - Post, like, comment, and share on LinkedIn
- Job Management - Search jobs, apply, save, and track applications
- Networking - Manage connections and send messages
- Company Insights - Follow companies and access detailed information
π Quick Start
1. Install
npm install -g linkedin-mcp-server
2. Get LinkedIn API Credentials
- Go to LinkedIn Developer Portal
- Create a new application
- Add redirect URI:
http://localhost:44002/auth/linkedin/callback
- Copy your Client ID and Client Secret
3. Configure SIYA Desktop
Option A: Using Environment Variables (Recommended)
Add to your SIYA Desktop configuration file:
{
"mcpServers": {
"linkedin": {
"command": "linkedin-mcp-server",
"env": {
"LINKEDIN_CLIENT_ID": "your_client_id_here",
"LINKEDIN_CLIENT_SECRET": "your_client_secret_here"
}
}
}
}
Option B: Using Command Line Arguments
{
"mcpServers": {
"linkedin": {
"command": "linkedin-mcp-server",
"args": [
"--client-id", "your_client_id_here",
"--client-secret", "your_client_secret_here"
]
}
}
}
Option C: Using npx (No Installation Required)
{
"mcpServers": {
"linkedin": {
"command": "npx",
"args": [
"linkedin-mcp-server",
"--client-id", "your_client_id_here",
"--client-secret", "your_client_secret_here"
]
}
}
}
4. Start Using
That's it! Ask SIYA to use LinkedIn tools and authentication happens automatically.
π LinkedIn Partnership Access Enabled
Full LinkedIn API access is now active! This server has been approved for all LinkedIn advanced partnerships, enabling complete access to LinkedIn's professional networking features.
β
Partnership Status:
- Community Management API β
- Social features fully enabled
- Talent Solutions API β
- Job features fully enabled
- Sales Solutions API β
- Connection & messaging features fully enabled
- Marketing Solutions API β
- Analytics features fully enabled
All Features Now Available:
- β
Social Features: Post creation, likes, comments, shares, feed access
- β
Job Management: Job search, applications, saved jobs, recommendations
- β
People Search: Advanced user search with filters
- β
Connection Management: Send requests, manage connections
- β
Messaging: Direct messaging with LinkedIn users
- β
Company Data: Full company profiles and analytics
- β
Analytics: Profile views, post analytics, engagement metrics
No Restrictions:
All 28 LinkedIn tools are now fully functional with proper API access through approved partnerships.
π οΈ Available Tools (All Enabled - 28 Tools)
β
Authentication & Profile (3)
authenticate_linkedin
- Authenticate with LinkedIn OAuth
revoke_linkedin_auth
- Revoke LinkedIn authentication
get_my_profile
- Get your LinkedIn profile information
β
Company Information (2)
get_company_info
- Get basic company details
get_company_profile
- Get comprehensive company information
create_post
- Create LinkedIn posts with content and visibility settings
get_my_posts
- Retrieve your published posts with engagement metrics
get_feed
- Access your LinkedIn feed with posts from your network
like_post
- Like posts to show appreciation
comment_on_post
- Add thoughtful comments to posts
share_post
- Share posts with optional commentary
β
Job Features (5) - Talent Solutions API
search_jobs
- Search LinkedIn jobs with advanced filters
get_job
- Get comprehensive details about specific job postings
save_job
- Bookmark jobs for later review and application
get_saved_jobs
- Retrieve all your saved and bookmarked jobs
get_job_applications
- Track status and details of your applications
β
Search & Discovery (2) - Sales/Talent Solutions API
search_people
- Search LinkedIn professionals with advanced filters
get_profile
- Access detailed profile information for any user
β
Connection Features (4) - Sales Solutions API
get_connections
- Retrieve your complete LinkedIn connections list
send_connection_request
- Send personalized connection requests
get_connection_requests
- View and manage pending incoming requests
accept_connection_request
- Accept requests to grow your network
β
Messaging Features (3) - Sales Solutions API
get_conversations
- Access your conversation threads and chat history
get_messages
- Retrieve messages from specific conversation threads
send_message
- Send direct messages to your LinkedIn connections
β
Analytics Features (2) - Marketing Solutions API
get_profile_analytics
- Access comprehensive profile performance metrics
get_post_analytics
- Get detailed analytics and engagement data for posts
β
Partnership Management (1)
update_partnerships
- Configure LinkedIn API partnership access levels
β Previously Deprecated Tools (Now Fully Restored)
Content & Social (6)
create_linkedin_post
- β οΈ DEPRECATED: Requires Community Management API
get_my_posts
- β οΈ DEPRECATED: Requires Community Management API
like_post
- β οΈ DEPRECATED: Requires special partnerships
comment_on_post
- β οΈ DEPRECATED: Requires special partnerships
share_post
- β οΈ DEPRECATED: Requires Community Management API
get_feed
- β οΈ DEPRECATED: Completely removed by LinkedIn
Job Features (6)
search_linkedin_jobs
- β οΈ DEPRECATED: Requires Talent Solutions
get_job_details
- β οΈ DEPRECATED: Requires Talent Solutions
get_recommended_jobs
- β οΈ DEPRECATED: Requires Talent Solutions
apply_to_job
- β οΈ DEPRECATED: Requires Talent Solutions
save_job
- β οΈ DEPRECATED: Requires Talent Solutions
get_saved_jobs
- β οΈ DEPRECATED: Requires Talent Solutions
Connection & Messaging (3)
send_connection_request
- β οΈ DEPRECATED: Requires Sales Solutions
get_linkedin_connections
- β οΈ DEPRECATED: Requires Sales Solutions
send_linkedin_message
- β οΈ DEPRECATED: Requires Sales Solutions
Search & Discovery (2)
search_linkedin_users
- β οΈ DEPRECATED: Requires Sales/Talent Solutions
get_other_profile
- β οΈ DEPRECATED: Requires Sales Solutions
Analytics & Insights (6)
get_post_analytics
- β οΈ DEPRECATED: Requires Community Management API
get_profile_views
- β οΈ DEPRECATED: Requires special access
get_connection_analytics
- β οΈ DEPRECATED: Requires Sales Solutions
get_company_analytics
- β οΈ DEPRECATED: Requires Marketing Solutions
get_industry_insights
- β οΈ DEPRECATED: Requires special access
get_skill_endorsements
- β οΈ DEPRECATED: Requires special access
π― Working Examples (All Features Enabled)
β
Profile & Company Access
{
"tool": "get_my_profile"
}
{
"tool": "get_company_info",
"companyId": "1441"
}
{
"tool": "create_post",
"content": "Excited to share my latest project! π",
"visibility": "PUBLIC"
}
{
"tool": "get_feed",
"count": 10
}
{
"tool": "like_post",
"postId": "urn:li:activity:1234567890"
}
β
Job Features (Talent Solutions API)
{
"tool": "search_jobs",
"keywords": "software engineer",
"location": "San Francisco",
"experienceLevel": "mid-level"
}
{
"tool": "save_job",
"jobId": "1234567890"
}
β
People Search & Connections (Sales Solutions API)
{
"tool": "search_people",
"title": "Software Engineer",
"companyName": "Google",
"location": "San Francisco"
}
{
"tool": "send_connection_request",
"profileId": "john-doe-123",
"message": "Hi John, I'd love to connect and discuss our shared interests in AI!"
}
{
"tool": "send_message",
"recipientId": "john-doe-123",
"subject": "Great meeting you!",
"body": "Thanks for the insightful conversation about machine learning."
}
β
Analytics (Marketing Solutions API)
{
"tool": "get_profile_analytics"
}
{
"tool": "get_post_analytics",
"postId": "urn:li:activity:1234567890"
}
π Previously Deprecated Examples (Now Restored)
π Content Creation (DEPRECATED - Requires Community Management API)
{
"tool": "create_linkedin_post",
"content": "Excited to share my latest project!",
"visibility": "PUBLIC"
}
π People Search (DEPRECATED - Requires Sales/Talent Solutions)
{
"tool": "search_linkedin_users",
"keywords": "software engineer",
"location": "San Francisco"
}
πΌ Job Search (DEPRECATED - Requires Talent Solutions)
{
"tool": "search_linkedin_jobs",
"keywords": "python developer",
"location": "remote"
}
π€ Social Features (DEPRECATED - Requires Special Partnerships)
{
"tool": "like_post",
"postId": "activity:1234567890"
}
{
"tool": "send_connection_request",
"profileId": "john-doe-123",
"message": "Let's connect!"
}
π Authentication Modes
Single-User Mode (Default)
Perfect for personal use. Tokens stored in ~/.linkedin-mcp/tokens_default.json
.
Environment Variables:
{
"mcpServers": {
"linkedin": {
"command": "linkedin-mcp-server",
"env": {
"LINKEDIN_CLIENT_ID": "your_client_id",
"LINKEDIN_CLIENT_SECRET": "your_client_secret"
}
}
}
}
Command Line Arguments:
{
"mcpServers": {
"linkedin": {
"command": "linkedin-mcp-server",
"args": ["--client-id", "your_client_id", "--client-secret", "your_client_secret"]
}
}
}
Using npx:
{
"mcpServers": {
"linkedin": {
"command": "npx",
"args": ["linkedin-mcp-server", "--client-id", "your_client_id", "--client-secret", "your_client_secret"]
}
}
}
Multi-User Mode
For teams or multiple accounts. Each user gets separate token storage.
Environment Variables:
{
"mcpServers": {
"linkedin-personal": {
"command": "linkedin-mcp-server",
"env": {
"LINKEDIN_CLIENT_ID": "your_client_id",
"LINKEDIN_CLIENT_SECRET": "your_client_secret",
"LINKEDIN_USER_ID": "personal"
}
},
"linkedin-work": {
"command": "linkedin-mcp-server",
"env": {
"LINKEDIN_CLIENT_ID": "your_client_id",
"LINKEDIN_CLIENT_SECRET": "your_client_secret",
"LINKEDIN_USER_ID": "work"
}
}
}
}
Command Line Arguments:
{
"mcpServers": {
"linkedin-personal": {
"command": "linkedin-mcp-server",
"args": [
"--client-id", "your_client_id",
"--client-secret", "your_client_secret",
"--default-user-id", "personal"
]
},
"linkedin-work": {
"command": "linkedin-mcp-server",
"args": [
"--client-id", "your_client_id",
"--client-secret", "your_client_secret",
"--default-user-id", "work"
]
}
}
}
Using npx:
{
"mcpServers": {
"linkedin-personal": {
"command": "npx",
"args": [
"linkedin-mcp-server",
"--client-id", "your_client_id",
"--client-secret", "your_client_secret",
"--default-user-id", "personal"
]
},
"linkedin-work": {
"command": "npx",
"args": [
"linkedin-mcp-server",
"--client-id", "your_client_id",
"--client-secret", "your_client_secret",
"--default-user-id", "work"
]
}
}
}
π» Command Line Usage
New: Command Line Arguments β
Pass credentials directly as arguments (highest priority):
linkedin-mcp-server --client-id "your_id" --client-secret "your_secret" --setup
linkedin-mcp-server --client-id "your_id" --client-secret "your_secret" --auth
linkedin-mcp-server --client-id "your_id" --client-secret "your_secret" --setup --user-id work
linkedin-mcp-server --default-user-id "work" --setup --user-id personal
Command Line Arguments (All Options)
--client-id CLIENT_ID LinkedIn OAuth2 client ID (overrides LINKEDIN_CLIENT_ID env var)
--client-secret SECRET LinkedIn OAuth2 client secret (overrides LINKEDIN_CLIENT_SECRET env var)
--default-user-id USER_ID Default user identifier (overrides LINKEDIN_USER_ID env var)
--access-token TOKEN LinkedIn access token (legacy mode)
--user-id USER_ID Specific user identifier for multi-user support
--setup Run authentication setup wizard
--auth Check authentication status
--logout Clear saved authentication tokens
--list-users List all registered users
--remove-user USER_ID Remove a specific user and their tokens
--debug, -d Enable debug logging
--help, -h Show help message
Priority Order
- Command line arguments (highest priority)
- Environment variables (medium priority)
- Default values (lowest priority)
Authentication Commands
linkedin-mcp-server --setup
linkedin-mcp-server --auth
linkedin-mcp-server --logout
linkedin-mcp-server
Multi-User Commands
linkedin-mcp-server --setup --user-id work
linkedin-mcp-server --list-users
linkedin-mcp-server --remove-user work
LINKEDIN_USER_ID=work linkedin-mcp-server
π npx Usage (No Installation Required)
Use LinkedIn MCP Server without installing it globally using npx:
Basic npx Setup
npx linkedin-mcp-server --client-id "your_id" --client-secret "your_secret" --setup
npx linkedin-mcp-server --client-id "your_id" --client-secret "your_secret" --auth
npx linkedin-mcp-server --client-id "your_id" --client-secret "your_secret"
SIYA Desktop Configuration with npx
Single-User npx Configuration
{
"mcpServers": {
"linkedin": {
"command": "npx",
"args": [
"linkedin-mcp-server",
"--client-id", "86yi0odon2lx3g",
"--client-secret", "WPL_AP1.your_secret_here.actual_secret"
]
}
}
}
Multi-User npx Configuration
{
"mcpServers": {
"linkedin-personal": {
"command": "npx",
"args": [
"linkedin-mcp-server",
"--client-id", "86yi0odon2lx3g",
"--client-secret", "WPL_AP1.your_secret_here.actual_secret",
"--default-user-id", "personal"
]
},
"linkedin-work": {
"command": "npx",
"args": [
"linkedin-mcp-server",
"--client-id", "86yi0odon2lx3g",
"--client-secret", "WPL_AP1.your_secret_here.actual_secret",
"--default-user-id", "work"
]
}
}
}
Advanced npx Configuration (with Claude Desktop)
For Claude Desktop users who want to use npx:
Location: ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS)
{
"mcpServers": {
"linkedin": {
"command": "npx",
"args": [
"linkedin-mcp-server",
"--client-id", "your_client_id",
"--client-secret", "your_client_secret"
]
}
}
}
npx Benefits
- β
No global installation - Always uses latest version
- β
Auto-updates - Gets latest features automatically
- β
Clean system - No global packages cluttering your system
- β
Version flexibility - Can specify exact versions if needed
npx Version Pinning (Optional)
{
"mcpServers": {
"linkedin": {
"command": "npx",
"args": [
"linkedin-mcp-server@1.0.1",
"--client-id", "your_client_id",
"--client-secret", "your_client_secret"
]
}
}
}
π§ LinkedIn API Setup
Required OAuth Scopes
Your LinkedIn app needs these scopes (configured automatically):
openid
- OpenID Connect authentication
profile
- Basic profile access
email
- Email address access
Application Configuration
- Application Type: Choose appropriate type for your use case
- Redirect URIs:
http://localhost:44002/auth/linkedin/callback
- Scopes: Select
openid
, profile
, email
π Security & Privacy
- Local-only storage - Tokens stored securely on your machine
- OAuth 2.0 standard - Industry-standard authentication
- No data transmission - No data sent to third parties
- Automatic token refresh - Handles token expiration seamlessly
- Secure token storage - Encrypted local storage
β οΈ Important Notes
Tool Limitations
- 2/28 tools fully working (7.1%):
get_my_profile
, logout
- 14/28 require LinkedIn Partner approval (50%): Advanced features need special permissions
- 12/28 have API restrictions (42.9%): Limited by LinkedIn's standard API access
This is normal behavior for LinkedIn's API - most advanced features require special partnership approval.
Working Tools
β
get_my_profile - Get your profile information
β
logout - Clear authentication tokens
LinkedIn API Limitations
- Most LinkedIn APIs require LinkedIn Partner Program approval
- Standard developer accounts have very limited access
- This affects job tools, messaging tools, content tools, etc.
- Profile access works perfectly for standard accounts
π οΈ Development
Local Development
git clone <repository-url>
cd linkedin-mcp-server
npm install
npm run build
export LINKEDIN_CLIENT_ID="your_client_id"
export LINKEDIN_CLIENT_SECRET="your_client_secret"
npm run auth:setup
npm run dev
Testing
npm run test:auth
npm run test:tools
π Environment Variables
All Supported Variables
LINKEDIN_CLIENT_ID="your_linkedin_app_client_id"
LINKEDIN_CLIENT_SECRET="your_linkedin_app_client_secret"
LINKEDIN_USER_ID="default_user_identifier"
LINKEDIN_REDIRECT_URI="http://localhost:44002/auth/linkedin/callback"
LINKEDIN_ACCESS_TOKEN="your_access_token"
Priority Order
Configuration values are resolved in this order:
-
Command Line Arguments (highest priority)
--client-id
overrides LINKEDIN_CLIENT_ID
--client-secret
overrides LINKEDIN_CLIENT_SECRET
--default-user-id
overrides LINKEDIN_USER_ID
--access-token
overrides LINKEDIN_ACCESS_TOKEN
-
Environment Variables (medium priority)
LINKEDIN_CLIENT_ID
LINKEDIN_CLIENT_SECRET
LINKEDIN_USER_ID
LINKEDIN_ACCESS_TOKEN
-
Default Values (lowest priority)
- Default redirect URI:
http://localhost:44002/auth/linkedin/callback
- Default user ID:
default
Flexible Configuration Examples
Pure Environment Variables:
export LINKEDIN_CLIENT_ID="86yi0odon2lx3g"
export LINKEDIN_CLIENT_SECRET="WPL_AP1.your_secret"
linkedin-mcp-server --setup
Pure Command Line Arguments:
linkedin-mcp-server --client-id "86yi0odon2lx3g" --client-secret "WPL_AP1.your_secret" --setup
Mixed Configuration (arguments override environment):
export LINKEDIN_CLIENT_ID="old_id"
export LINKEDIN_CLIENT_SECRET="old_secret"
linkedin-mcp-server --client-id "new_id" --setup
π Troubleshooting
Common Issues
Authentication Failed
linkedin-mcp-server --logout
linkedin-mcp-server --setup
Missing Credentials
- Ensure
LINKEDIN_CLIENT_ID
and LINKEDIN_CLIENT_SECRET
are set
- Check SIYA Desktop configuration file
Tool Errors
- Most tools require LinkedIn Partner approval (expected behavior)
- Use
get_my_profile
to test basic functionality
Debug Mode
linkedin-mcp-server --debug
π€ Contributing
We welcome contributions! Please:
- Fork the repository
- Create a feature branch
- Submit a pull request
π License
MIT License - see LICENSE file for details.
π Resources
π― Perfect for: Personal LinkedIn automation, AI-powered networking, automated job searching, and seamless LinkedIn integration with AI assistants.