LinkedIn MCP Server
A Model Context Protocol (MCP) server using the TypeScript SDK for LinkedIn integration. Allows an AI agent (e.g. Claude) to authenticate with LinkedIn and share posts or links.
Prerequisites
- Node.js (>=14) and npm
- LinkedIn Developer App:
- Create an app at https://www.linkedin.com/developers/apps
- Under "Products", add Sign In with LinkedIn (OpenID Connect) and Share on LinkedIn
- Authorized Redirect URI must match
.env:http://localhost:8000/auth/linkedin/callback - Copy your Client ID and Client Secret into
.env
Setup
git clone <repo_url>
cd linkedin-mcp
npm install
Create a .env in project root with:
SESSION_SECRET=your-session-secret
AUTH_PORT=8000 # OAuth callback server port
HTTP_PORT=8001 # HTTP/SSE server port
LINKEDIN_CLIENT_ID=your-client-id
LINKEDIN_CLIENT_SECRET=your-client-secret
LINKEDIN_REDIRECT_URI=http://localhost:8000/auth/linkedin/callback
Running
- OAuth Callback Server (must stay running):
npm run dev:auth
- MCP Server:
- Via Claude Desktop:
claude-desktop
- Or manually:
npm run dev
- This starts stdio transport + HTTP+SSE server.
- Inspector UI:
npm run build
npx @modelcontextprotocol/inspector node build/server.js
- Open the Inspector in browser → Tools
- Use
linkedin-share-postorlinkedin-share-linktools.
Testing
- Visit
http://localhost:8000/auth/linkedinin browser → complete LinkedIn login. - Confirm “Authentication successful!”.
- In Inspector, run sample post/link tools.
- Verify content on your LinkedIn profile.
Claude Desktop Integration
- Run
npm run dev:auth - Visit
http://localhost:8000/auth/linkedinin browser → complete LinkedIn login. - Confirm “Authentication successful!”. A token file should be generated. Do not close this terminal.
- Open Claude Desktop and verify the tools are listed
Configure your claude_desktop_config.json file:
{
"mcpServers": {
"linkedin": {
"command": "node",
"args": ["/Users/ken/Desktop/lab/linkedin-mcp/build/server.js"],
"transport": "http",
"url": "http://localhost:8001",
"sseEndpoint": "/stream",
"httpEndpoint": "/message",
"env": {
"SESSION_SECRET": "your-session-secret",
"AUTH_PORT": "8000",
"HTTP_PORT": "8001",
"LINKEDIN_CLIENT_ID": "your-client-id",
"LINKEDIN_CLIENT_SECRET": "your-client-secret",
"LINKEDIN_REDIRECT_URI": "http://localhost:8000/auth/linkedin/callback"
}
}
},
"globalShortcut": "Ctrl+Space"
}
(You can find this file from Claude Desktop by going to settings > developer > edit config)
Save and restart Claude Desktop to apply changes.











