LinkedIn Post MCP
An MCP (Model Context Protocol) server that lets an MCP client (e.g. Claude) publish posts to a LinkedIn profile via the official LinkedIn API.
How it works
- 3-legged OAuth (member token) against LinkedIn (
openid profile w_member_social) โ the member authorizes once, the resulting access/refresh token is persisted locally and refreshed automatically. - FastMCP server, HTTP transport on
/sse. Authentication towards the MCP client is expected to be handled upstream (e.g. by an MCP gateway); here OAuth is only towards LinkedIn. - Tools: import an existing token, run the interactive OAuth flow, post a text post (supports markdown formatting โ LinkedIn richtext), inspect token state.
Setup
See SETUP.md for the full LinkedIn app configuration (credentials, redirect URI, scopes) and server deployment.
Quick start
python -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env # then fill in LINKEDIN_CLIENT_ID / LINKEDIN_CLIENT_SECRET
python oauth_cli.py auth # interactive 3-legged OAuth
python server.py # start the MCP server
Configuration
All settings come from environment variables (see .env.example):
| Variable | Description |
|---|---|
LINKEDIN_CLIENT_ID / LINKEDIN_CLIENT_SECRET |
LinkedIn app credentials |
LINKEDIN_REDIRECT_URI |
Must match an authorized redirect URL in the LinkedIn app |
LINKEDIN_SCOPES |
openid profile w_member_social |
LINKEDIN_VERSION |
LinkedIn API version (YYYYMM) |
BASE_URL / PORT |
Where the server listens |
TOKEN_PATH |
Where the persisted member token is stored (perm 600) |
License
MIT