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.
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_flowstarts the browser OAuth flow, captures the localhost callback, exchanges the code, and stores the token locally.linkedin_auth_statusreports whether a stored token exists and when it expires.linkedin_logoutdeletes the stored token.linkedin_exchange_authorization_codeexchanges an OAuth code and stores the token, for manual fallback flows.linkedin_get_my_profilereads the authenticated member profile from/v2/userinfo.linkedin_create_text_postpublishes or drafts a text-only post through/rest/posts.linkedin_get_postretrieves a post by URN.linkedin_find_posts_by_authorlists 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 emailfor Sign In with LinkedIn using OpenID Connect.w_member_socialto 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
- In your LinkedIn developer app, add this authorized redirect URL:
http://127.0.0.1:33333/linkedin/oauth/callback
- Add the MCP server to OpenWorker with
LINKEDIN_CLIENT_ID,LINKEDIN_CLIENT_SECRET, andLINKEDIN_REDIRECT_URI. - Ask OpenWorker to run
linkedin_start_oauth_flow. - 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
- After that, LinkedIn tools automatically use the stored token. Use
linkedin_auth_statusto inspect token status andlinkedin_logoutto 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
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.