linkedin-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LINKEDIN_API_VERSION | No | LinkedIn API version (default: 202604) | 202604 |
| LINKEDIN_ACCESS_TOKEN | Yes | Your LinkedIn access token for authentication |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| linkedin_get_profileA | Retrieve the authenticated LinkedIn member's profile information via the OIDC userinfo endpoint. Returns the member's name, profile picture, email address, and locale. Requires scopes: openid, profile, email Args:
Returns: For JSON format: { "sub": string, // LinkedIn member URN (e.g., "urn:li:person:abc123") "name": string, // Full display name "given_name": string, // First name "family_name": string, // Last name "picture": string, // Profile picture URL (optional) "email": string, // Primary email address (optional) "email_verified": bool, // Whether email is verified (optional) "locale": { "country": string, // Country code "language": string // Language code } } Examples:
Error Handling:
|
| linkedin_create_postA | Create a new post on LinkedIn on behalf of a member or organization. Supports text-only posts, image posts (after uploading via linkedin_upload_image), and article/link posts. Post length is capped at 3000 characters. Requires scope: w_member_social (for member posts) or w_organization_social (for org posts) Args:
Returns: The URN of the newly created post (e.g., 'urn:li:share:7123456789') Examples:
Error Handling:
|
| linkedin_get_postA | Retrieve a LinkedIn post by its URN. NOTE: Reading posts requires the r_member_social scope for member posts or r_organization_social for org posts. These scopes require LinkedIn approval and are not available to all developers. If you only have w_member_social, use linkedin_create_post and linkedin_list_posts instead. Requires scope: r_member_social or r_organization_social Args:
Returns: For JSON format: { "id": string, // Post URN "author": string, // Author URN "commentary": string, // Post text "visibility": string, // PUBLIC | CONNECTIONS | LOGGED_IN "lifecycleState": string, // PUBLISHED | DRAFT | DELETED "createdAt": number, // Unix timestamp (ms) "lastModifiedAt": number, "content": object // Media/article content (if any) } Error Handling:
|
| linkedin_list_postsA | List posts by a LinkedIn member or organization. NOTE: Listing posts requires the r_member_social scope (member) or r_organization_social scope (org). These are approval-gated scopes. For org posts, you also need to be an admin of the organization. Requires scope: r_member_social or r_organization_social Args:
Returns: { "total": number, "count": number, "offset": number, "items": [Post], "has_more": boolean, "next_offset": number } Error Handling:
|
| linkedin_delete_postA | Permanently delete a LinkedIn post by its URN. Only the author of the post can delete it. This action cannot be undone. Requires scope: w_member_social (member posts) or w_organization_social (org posts) Args:
Returns: Confirmation message on success. Error Handling:
|
| linkedin_update_postA | Update the text or visibility of an existing LinkedIn post. Only the author of the post can update it. Note that LinkedIn only allows updating the commentary (text) and visibility after posting — content attachments (images, articles) cannot be changed post-publish. Requires scope: w_member_social (member posts) or w_organization_social (org posts) Args:
Returns: Confirmation message on success. Error Handling:
|
| linkedin_upload_imageA | Upload an image to LinkedIn and get an image URN to use when creating an image post. This is a two-step process handled automatically:
After upload, use the returned image URN as image_asset_urn in linkedin_create_post. Requires scope: w_member_social Args:
Returns: { "asset_urn": string, // e.g., "urn:li:image:C5622AQH..." "upload_url": string // The URL that was used for upload (informational) } Examples:
Error Handling:
|
| linkedin_get_organizationA | Retrieve a LinkedIn organization (company) page by its numeric ID or vanity name. Without admin access, returns public fields: id, localizedName, vanityName, localizedWebsite, primaryOrganizationType, locations, and logoV2. With admin access (rw_organization_admin scope), returns additional fields like description, industries, staffCountRange, foundedOn, and specialties. Requires scope: rw_organization_admin Args:
Returns: For JSON format: { "id": string, "localizedName": string, "vanityName": string, "localizedWebsite": string, "primaryOrganizationType": string, "locations": [...], // Additional fields if you have admin access } Examples:
Error Handling:
|
| linkedin_get_org_follower_countA | Get the total number of LinkedIn members following an organization page. Requires scope: rw_organization_admin Args:
Returns: { "organization_id": string, "follower_count": number } Examples:
Error Handling:
|
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
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/abhineet34/linkedin-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server