linkedin-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LINKEDIN_CLIENT_ID | No | LinkedIn OAuth client ID for PKCE login flow | |
| LINKEDIN_ACCESS_TOKEN | No | Your LinkedIn access token (requires appropriate scopes) | |
| LINKEDIN_CLIENT_SECRET | No | LinkedIn OAuth client secret for PKCE login flow |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| linkedin_oauth_loginA | Authenticate with LinkedIn using OAuth PKCE flow. Opens your browser to LinkedIn's authorization page, captures the callback, exchanges the authorization code for an access token, and saves it to the config file for future use. This is the recommended way to authenticate. Once complete, all other tools can use the saved token automatically. Prerequisites:
Args:
Returns: Confirmation message with token expiry and granted scopes. |
| linkedin_get_my_profileA | Get the authenticated user's LinkedIn profile information. Returns your full profile details including name, headline, vanity URL, profile picture, email, and locale. Combines both the OpenID Connect userinfo endpoint and the LinkedIn profile API. Args:
Returns (JSON format): { "id": string, // LinkedIn member ID "firstName": string, // First name "lastName": string, // Last name "fullName": string, // Full display name "headline": string, // Professional headline "vanityName": string, // Custom URL identifier "profileUrl": string, // Full LinkedIn URL "email": string, // Email address (if available) "pictureUrl": string, // Profile picture URL "locale": string // Locale setting } Requires scope: openid + r_liteprofile (or r_basicprofile) |
| linkedin_get_user_infoA | Get basic user identity information via OpenID Connect. This works with the minimal "openid" scope and returns:
Unlike getMyProfile, this always works even with minimal scopes. Args:
Returns (JSON format): { "sub": string, // Unique member ID "name": string, // Full name "givenName": string, // First name "familyName": string, // Last name "email": string, // Email address "emailVerified": boolean // Whether email is verified "picture": string, // Profile picture URL "locale": string // Locale } Requires scope: openid (always available with Sign In with LinkedIn) |
| linkedin_create_postA | Create and publish a new LinkedIn post. Publishes a text post to your LinkedIn feed. Supports PUBLIC, CONNECTIONS-only, or LOGGED_IN visibility settings. Args:
Returns (JSON format): { "postId": string, // Post ID "urn": string, // LinkedIn URN "text": string, // Text preview (first 100 chars) "visibility": string, // Visibility setting used "status": string, // Always "PUBLISHED" "url": string // Direct link to the post } Requires scope: w_member_social (Share on LinkedIn product) |
| linkedin_list_postsA | List LinkedIn posts for a member. Returns posts published by the specified member (or the authenticated user by default). Posts are returned newest-first with pagination support. Args:
Returns (JSON format): { "total": number, // Total posts available "count": number, // Posts in this response "start": number, // Current offset "has_more": boolean, // Whether more pages exist "next_offset": number, // Offset for next page "posts": [{ "id": string, // Post ID "text": string, // Post commentary/text "author": string, // Author URN "created": string, // Human-readable date "created_timestamp": number, // Unix timestamp ms "visibility": string,// Visibility setting "url": string // Direct link }] } Requires scope: r_member_social or r_organization_social |
| linkedin_delete_postA | Permanently delete a LinkedIn post by its ID or URN. ⚠️ DESTRUCTIVE — This action cannot be undone. Args:
Returns (JSON format): { "postId": string, // The ID that was deleted "status": "DELETED", // Always "DELETED" "note": string // Warning about permanence } Requires scope: w_member_social |
| linkedin_get_feedA | Get recent activity from the authenticated user's LinkedIn feed. Returns recent posts and activities from your network. Args:
Returns (JSON format): { "total": number, "count": number, "start": number, "has_more": boolean, "items": [{ "id": string, // Activity URN "actor": string, // Actor URN "time": string, // Human-readable timestamp "timestamp": number,// Unix timestamp ms "content": string // Content preview }] } Note: LinkedIn's public API has limited feed access. |
| linkedin_get_connectionsA | Get the authenticated user's LinkedIn connections. Lists your 1st-degree connections with pagination support. Args:
Returns (JSON format): { "total": number, "count": number, "start": number, "has_more": boolean, "connections": [{ "id": string, // Member ID "name": string, // Display name "profileUrl": string // LinkedIn profile URL }] } ⚠️ NOTE: Connections API requires LinkedIn Partner Program access. Standard OAuth apps will receive an error message explaining the limitation. |
| linkedin_send_messageA | Send a direct message to a LinkedIn member. ⚠️ NOTE: This tool is NOT available with standard OAuth apps. Direct messaging requires LinkedIn's Messaging API (partner program). This tool returns a clear error message explaining the limitation. Args:
|
| linkedin_search_peopleA | Search for LinkedIn members by keywords. ⚠️ NOTE: This tool is NOT available with standard OAuth apps. People search requires LinkedIn Sales Navigator API or a third-party provider. This tool returns a clear error message explaining the limitation. Args:
|
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/EgiStr/linkedin-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server