Skip to main content
Glama
linkedin-mcp-server

linkedin-mcp-server

by ihiteshgupta

linkedin-mcp-server

LinkedIn MCP Server — post content, share articles, and manage your LinkedIn profile through Claude using the official LinkedIn API.

npm version License: MIT Node.js

6 tools for creating posts, sharing articles, managing your profile, and more — powered by the official LinkedIn REST API with OAuth 2.0.

Tools

Tool

Description

Permissions Required

linkedin_get_profile

Get your LinkedIn profile information

Basic (OpenID)

linkedin_create_post

Create a text post (up to 3000 chars)

Share on LinkedIn

linkedin_create_article_post

Share an article link with commentary

Share on LinkedIn

linkedin_get_posts

Get your recent posts

Share on LinkedIn ⚠️

linkedin_delete_post

Delete a post by ID

Share on LinkedIn

linkedin_get_connections_count

Get your total connection count

⚠️ May need partner access

⚠️ API Limitations: linkedin_get_posts and linkedin_get_connections_count use LinkedIn endpoints that may require elevated or partner-level API access depending on your app's approval status. The core tools (get profile, create post, share article, delete post) work with standard access.


Related MCP server: linkedin-mcp-server

Setup

LinkedIn requires creating a Developer App to get OAuth credentials. This takes about 10 minutes.

Step 1 — Create a LinkedIn Developer App

  1. Go to developer.linkedin.com/apps

  2. Click "Create app"

  3. Fill in the required fields:

    • App name: e.g. My LinkedIn MCP

    • LinkedIn Page: You need a LinkedIn company page linked — create a simple one at linkedin.com/company/setup/new if you don't have one

    • App logo: Upload any image (required)

  4. Agree to the terms and click "Create app"

Step 2 — Configure OAuth Redirect URL

  1. In your new app, go to the "Auth" tab

  2. Under "OAuth 2.0 settings", find "Authorized redirect URLs for your app"

  3. Click "Add redirect URL" and enter exactly:

    http://127.0.0.1:3000/callback
  4. Click "Update"

  5. Copy your Client ID and Client Secret from this page — you'll need them next

Step 3 — Request API Products

  1. Go to the "Products" tab in your app

  2. Request access to both of these products:

    • Sign In with LinkedIn using OpenID Connect — click "Request access" → Select → Agree

    • Share on LinkedIn — click "Request access" → Select → Agree

  3. Both are typically approved instantly for personal use

Step 4 — Install & Configure

# Install globally
npm install -g @dev-hitesh-gupta/linkedin-mcp-server

# Create config directory and add your credentials
mkdir -p ~/.linkedin-mcp
cat > ~/.linkedin-mcp/credentials.json << 'EOF'
{
  "client_id": "YOUR_CLIENT_ID",
  "client_secret": "YOUR_CLIENT_SECRET"
}
EOF

# Authenticate — opens browser for LinkedIn sign-in
linkedin-mcp-server auth

Your access token is saved to ~/.linkedin-mcp/token.json and valid for 60 days.

Step 5 — Add to Claude Code

claude mcp add linkedin -- npx @dev-hitesh-gupta/linkedin-mcp-server

Or manually in your Claude config (~/.claude/claude_desktop_config.json):

{
  "mcpServers": {
    "linkedin": {
      "command": "npx",
      "args": ["@dev-hitesh-gupta/linkedin-mcp-server"]
    }
  }
}

Usage Examples

Create a post:

Post to LinkedIn: "Just shipped a new open-source MCP server for LinkedIn automation! Check it out. #opensource #ai"

Share an article:

Share this article on LinkedIn: https://example.com/article
My commentary: "Great read on the future of AI tooling"

Control visibility:

Value

Who sees it

PUBLIC

Everyone on LinkedIn (default)

CONNECTIONS

Your 1st-degree connections only

LOGGED_IN

Any logged-in LinkedIn member


Re-authentication

LinkedIn tokens expire after 60 days. Re-authenticate when needed:

rm ~/.linkedin-mcp/token.json
linkedin-mcp-server auth

Data & Auth Storage

All data is stored locally:

~/.linkedin-mcp/
├── credentials.json    # Your LinkedIn app Client ID + Secret
└── token.json          # OAuth access token (expires in 60 days)

Security: Never commit these files to version control.


Troubleshooting

"Not authenticated" error:

linkedin-mcp-server auth

"Unable to determine member URN": Ensure the Sign In with LinkedIn using OpenID Connect product is approved in your app's Products tab.

Post creation fails: Ensure the Share on LinkedIn product is approved. Check the Products tab in your LinkedIn Developer app.

"Access blocked" during sign-in: Your LinkedIn app may still be under review. Check the Products tab for approval status.

Token expired:

rm ~/.linkedin-mcp/token.json && linkedin-mcp-server auth

linkedin_get_posts or linkedin_get_connections_count returns errors: These tools use LinkedIn API endpoints that require elevated permissions not available with standard developer access. This is a LinkedIn API restriction.


Requirements

  • Node.js 18+

  • A LinkedIn account

  • LinkedIn Developer App with OAuth credentials (see setup above)

License

MIT — Hitesh Gupta

Available Tools

6 tools
linkedin_create_article_postA

Create a LinkedIn post with an article/link. Great for sharing blog posts, news articles, or any web content with your network.

Inputs: text (required), articleUrl (required), title, visibility, +1 more.

linkedin_create_postA

Create a text post on LinkedIn. Supports different visibility options: PUBLIC (everyone), CONNECTIONS (1st degree connections only), or LOGGED_IN (LinkedIn members only).

Inputs: text (required), visibility.

linkedin_delete_postA

Delete a LinkedIn post by its ID.

Inputs: postId (required).

linkedin_get_connections_countA

Get the number of LinkedIn connections. Note: This may require additional API permissions.

Inputs: no named parameters.

linkedin_get_postsA

Get the authenticated user's recent LinkedIn posts. Note: This may require additional API permissions.

Inputs: count.

linkedin_get_profileA

Get the authenticated user's LinkedIn profile information including name, email, and profile picture.

Inputs: no named parameters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 6 tools

    Disambiguation5/5

    Each tool targets a distinct operation: creating article vs text posts, deleting posts, retrieving posts, profile, and connections count. No overlap in functionality.

    Naming Consistency5/5

    All tools follow a consistent 'linkedin_verb_noun' pattern (e.g., linkedin_create_post, linkedin_get_profile), making the naming predictable and clear.

    Tool Count5/5

    With 6 tools covering posting, reading, and profile operations, the count is well-scoped for a focused LinkedIn server, not too many or too few.

    Completeness3/5

    Covers core post creation, deletion, and retrieval, but lacks update post and more detailed connection data, leaving notable gaps for a complete LinkedIn interaction surface.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Post to LinkedIn from Claude — create posts, upload images, edit/delete posts, and manage company pages via natural language. Uses the official LinkedIn REST API with OAuth 2.0.
      9
      149 npm
      2
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Enables Claude Desktop to manage your LinkedIn profile and company pages, including posting, reading posts, and fetching profile information.
      7
      149 npm
      4
      MIT