LinkedIn MCP for OpenWorker

LinkedIn MCP for OpenWorker

Enables LinkedIn profile reads and post operations through a local-first MCP server, with OAuth token management and approval-friendly tools for OpenWorker.

Category
Visit Server

README

LinkedIn MCP for OpenWorker

A local-first LinkedIn MCP server for OpenWorker. It runs over stdio, keeps tokens in environment variables or explicit tool inputs, and exposes small, approval-friendly tools for LinkedIn profile reads and post operations.

Tools

  • linkedin_start_oauth_flow starts the browser OAuth flow, captures the localhost callback, exchanges the code, and stores the token locally.
  • linkedin_auth_status reports whether a stored token exists and when it expires.
  • linkedin_logout deletes the stored token.
  • linkedin_exchange_authorization_code exchanges an OAuth code and stores the token, for manual fallback flows.
  • linkedin_get_my_profile reads the authenticated member profile from /v2/userinfo.
  • linkedin_create_text_post publishes or drafts a text-only post through /rest/posts.
  • linkedin_get_post retrieves a post by URN.
  • linkedin_find_posts_by_author lists posts for a member or organization URN.

Setup

npm i linkedin-mcp-openworker

Create a LinkedIn developer app and request the products/scopes you need:

  • openid profile email for Sign In with LinkedIn using OpenID Connect.
  • w_member_social to publish as the authenticated member.
  • Organization posting requires LinkedIn-approved organization scopes such as w_organization_social.

OpenWorker supports MCP servers through Manage -> Integrations using the same mcpServers JSON format as Claude Desktop and Cursor. After building, add a server like this:

{
  "mcpServers": {
    "linkedin": {
      "command": "npm",
      "args": ["linkedin-mcp-openworker"],
      "env": {
        "LINKEDIN_CLIENT_ID": "paste-your-linkedin-client-id-here",
        "LINKEDIN_CLIENT_SECRET": "paste-your-linkedin-client-secret-here",
        "LINKEDIN_REDIRECT_URI": "http://127.0.0.1:33333/linkedin/oauth/callback",
        "LINKEDIN_VERSION": "202607"
      }
    }
  }
}

LINKEDIN_VERSION defaults to 202607, matching LinkedIn Marketing API versioning guidance current at the time this project was created.

OAuth Flow

  1. In your LinkedIn developer app, add this authorized redirect URL:
http://127.0.0.1:33333/linkedin/oauth/callback
  1. Add the MCP server to OpenWorker with LINKEDIN_CLIENT_ID, LINKEDIN_CLIENT_SECRET, and LINKEDIN_REDIRECT_URI.
  2. Ask OpenWorker to run linkedin_start_oauth_flow.
  3. The MCP starts a localhost callback server, opens your browser to LinkedIn, validates the returned state, exchanges the authorization code, and stores the token at:
~/.linkedin-mcp-openworker/token.json
  1. After that, LinkedIn tools automatically use the stored token. Use linkedin_auth_status to inspect token status and linkedin_logout to delete it.

The default managed flow uses LinkedIn's regular 3-legged OAuth authorization endpoint:

https://www.linkedin.com/oauth/v2/authorization

That is the endpoint LinkedIn documents for OpenID Connect. It requests openid profile email w_member_social by default, exchanges the authorization code with your client_secret, and stores the returned access token and ID token metadata locally. Do not use auth_method: "pkce" with OpenID scopes; LinkedIn rejects that combination with Open ID permission is not supported for PKCE flows.

LinkedIn's general 3-legged OAuth documentation says redirect URLs should be HTTPS. If LinkedIn rejects the localhost callback URL for your app, use an HTTPS callback/tunnel URL that forwards to this machine and set LINKEDIN_REDIRECT_URI to the exact URL registered in the LinkedIn Developer Portal.

By default, OAuth tools redact tokens in tool results. Pass return_access_token: true only when you explicitly want a result to include token values.

Notes

LinkedIn API access depends on the products approved for your developer app. A token without w_member_social cannot publish member posts, and organization posts require organization permissions plus an authenticated member with the right page role.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured