Linekedin MCP server
LinkedIn MCP Server
A comprehensive, containerized Model Context Protocol (MCP) server for LinkedIn. This professional-grade server allows large language models and agents to interact with LinkedIn's official REST API seamlessly. It provides granular tools to manage user profiles, handle network connections, author posts, and oversee organizations.
🚀 Key Features
The project leverages a highly modular architecture, making it easy to extend and maintain:
- 👤 Profile Management (
src/tools/profile)- Retrieve authenticated user profile information (
get_my_profile).
- Retrieve authenticated user profile information (
- 📝 Content Creation (
src/tools/content)- Share simple text updates to the user's feed (
create_text_post). - Share rich articles with URL and descriptive commentary (
create_article_post).
- Share simple text updates to the user's feed (
- 🔗 Network Management (
src/tools/network)- View and list 1st-degree connections (
get_connections) (requiresr_networkpermission).
- View and list 1st-degree connections (
- 🏢 Organization Management (
src/tools/organization)- List the company pages and organizations you administer (
get_organizations).
- List the company pages and organizations you administer (
📋 Prerequisites
To run this server, you will need:
- LinkedIn Developer Account: An application registered in the LinkedIn Developer Portal.
- Access Token: An OAuth 2.0 Access Token with necessary scopes (e.g.,
w_member_social,r_liteprofile,r_organization_admin). - Docker (Optional but recommended for robust execution).
- Node.js v20+ (Required if running natively without Docker).
🛠️ Installation & Setup
Option A: Using Docker (Recommended)
Containerization ensures the MCP server runs consistently regardless of your environment.
-
Build the Docker image:
docker build -t linkedin-mcp-server . -
Configure your MCP client (e.g.,
mcp.jsonfor Claude Desktop):{ "mcpServers": { "linkedin": { "command": "docker", "args": [ "run", "-i", "--rm", "-e", "LINKEDIN_ACCESS_TOKEN=your_linkedin_access_token_here", "linkedin-mcp-server" ] } } }
Option B: Running Locally
-
Install dependencies:
npm install -
Build the TypeScript code:
npm run build -
Configure your MCP client:
{ "mcpServers": { "linkedin": { "command": "node", "args": ["/absolute/path/to/Linekedin_MCP_server/build/index.js"], "env": { "LINKEDIN_ACCESS_TOKEN": "your_linkedin_access_token_here" } } } }
🔍 Available Tools Reference
get_my_profile: Fetches the currently authenticated user's profile details.create_text_post: Posts a plain-text status update on the LinkedIn feed.create_article_post: Shares a URL to an article with a customized title and description.get_connections: Retrieves 1st-degree connections.get_organizations: Gets a list of LinkedIn pages/organizations that the authenticated user manages.
🛡️ Troubleshooting
- 401 Unauthorized: Ensure your
LINKEDIN_ACCESS_TOKENis correct, well-formed, and has not expired. - 403 Forbidden: Your LinkedIn App lacks the necessary permissions for the endpoint. Check your app's authorized "Products" in the LinkedIn Developer Portal and ensure your token includes the right scopes.
📁 Architecture
The project is split cleanly into isolated modules:
src/index.ts: The MCP Server entry point.src/linkedin-client.ts: The robust API wrapper usingaxios.src/tools/*: Directory containing individually exported toolsets.