Skip to main content
Glama
rgthelen

LinkedIn MCP Server

by rgthelen

LinkedIn MCP Server

A Model Context Protocol (MCP) server for LinkedIn integration, allowing Claude to create posts, comment on posts, manage your LinkedIn presence, and share content with media attachments.

Features

  • Post Management: Create, delete, and view LinkedIn posts

  • Media Sharing: Upload and share images/videos with posts

  • Comment System: Comment on LinkedIn posts

  • Feed Management: View your LinkedIn feed

  • Profile Access: Get your LinkedIn profile information

  • Post Engagement: Like and share LinkedIn posts

Related MCP server: LinkedIn MCP Server

Prerequisites

  • Node.js 18+

  • LinkedIn Developer Account and Access Token

  • Claude Desktop App

Installation

  1. Clone this repository:

git clone https://github.com/rgthelen/linkedin-mcp-server.git
cd linkedin-mcp-server
  1. Install dependencies:

npm install
  1. Set up LinkedIn API credentials:

    • Go to LinkedIn Developer Portal

    • Create an app or use existing app

    • Generate an access token with appropriate scopes:

      • r_liteprofile (to read profile)

      • r_emailaddress (to read email)

      • w_member_social (to post content)

  2. Configure environment variables:

cp .env.example .env
# Edit .env with your LinkedIn access token
  1. Build the project:

npm run build

Configuration

See CLAUDE.md for detailed Claude Desktop setup instructions.

Available Tools

  • test_linkedin_connection - Test the LinkedIn API connection

  • get_profile - Get your LinkedIn profile information

  • create_post - Create a new LinkedIn post (with optional media)

  • delete_post - Delete a LinkedIn post

  • get_post - Get details of a specific post

  • get_feed - Get posts from your LinkedIn feed

  • comment_post - Comment on a LinkedIn post

  • like_post - Like a LinkedIn post

  • share_post - Share a LinkedIn post

Usage Examples

With Claude Desktop configured, you can ask Claude:

  • "Create a LinkedIn post about my latest project"

  • "Share this image with a caption about AI developments"

  • "Comment on this LinkedIn post with my professional thoughts"

  • "Show me my recent LinkedIn feed"

  • "Get my LinkedIn profile information"

Media Support

The server supports uploading images and videos according to LinkedIn's official API v2 specification:

  • Supported formats: JPG, PNG, GIF (images), MP4, MOV, AVI (videos)

  • Process: Automatic media upload, registration, and post creation

  • Usage: Just provide the file path when creating posts

License

MIT

Available Tools

9 tools
create_commentC

Comment on a LinkedIn post

ParametersJSON Schema
NameRequiredDescriptionDefault
postUrnYesThe URN or ID of the post to comment on
textYesThe comment text

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It does not disclose any behavioral traits such as whether it modifies data, requires authentication, has rate limits, or returns success/failure. Simply stating 'Comment on a LinkedIn post' is minimal for a mutation action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and to the point. It is not verbose, but missing contextual information. It could be improved with additional structure, but it is not overly short to the point of being useless.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simplicity of the tool (2 required string parameters, no nested objects, no output schema), the description is barely adequate. It lacks information about return values or side effects, but the context from sibling tools and schema partially compensates.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides descriptions for both parameters (postUrn and text) with 100% coverage. The description adds no additional meaning beyond the schema, so it meets the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Comment') and the resource ('a LinkedIn post'), distinguishing it from siblings like create_post, like_post, and share_post. However, it could be more explicit by using 'Create a comment' to emphasize creation, but it is sufficient.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives, such as when to comment versus like or share. There is no mention of prerequisites or context for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_postB

Create a new LinkedIn post with optional media

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text content of the post
visibilityNoPost visibility (PUBLIC or CONNECTIONS)PUBLIC
articleUrlNoOptional URL to share with the post
mediaPathNoOptional path to image or video file to upload
mediaTypeNoType of media being uploaded (image or video)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry full burden but only states the basic action, lacking details on authentication requirements, rate limits, side effects, or response behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence that is front-loaded, but it omits important usage details for efficiency.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 5 parameters including media upload, the description lacks information on return values, media upload constraints, or post-creation behavior, making it incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents parameters. The description adds marginal value by noting media is optional, but doesn't exceed the baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Create' and the resource 'LinkedIn post', and mentions optional media, distinguishing it from sibling tools like delete_post or get_post.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like share_post, nor does it mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_postB

Delete a LinkedIn post

ParametersJSON Schema
NameRequiredDescriptionDefault
postIdYesThe ID of the post to delete

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only states the deletion action. It does not disclose irreversible effects, permission requirements, or error conditions, leaving the agent without critical behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. While minimal, it is appropriately concise for a simple tool, though it lacks structural elements like usage notes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one parameter, no output schema), the description covers the basic purpose. However, it omits important context about irreversibility and authentication, which is needed for safe invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage for the single parameter 'postId' with a clear description. The tool description adds no additional meaning beyond the schema, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Delete' and the resource 'a LinkedIn post', making the tool's purpose unambiguous. It implicitly distinguishes from sibling tools like 'like_post' and 'share_post' by specifying a different action.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool vs alternatives, or any prerequisites (e.g., ownership of the post). The description does not include when-not-to-use information.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_feedB

Get posts from your LinkedIn feed

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of posts to retrieve

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description does not disclose behavior beyond fetching posts. Does not mention ordering, rate limits, authentication, or what happens with an empty feed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence is concise but under-specified. Not verbose, but could include more useful information without becoming too long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool is simple with 1 param and no output schema, but description does not clarify what 'posts from your LinkedIn feed' entails (e.g., recency, personal feed). Missing hints about return structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter 'count' with full schema description. Description adds no additional meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Get posts from your LinkedIn feed' with a specific verb and resource. It distinguishes from siblings like 'get_post' (single post) or 'create_post'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'get_post' for a single post. No mention of context or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_postB

Get details of a specific LinkedIn post

ParametersJSON Schema
NameRequiredDescriptionDefault
postIdYesThe ID of the post to retrieve

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and the description does not disclose any behavioral traits such as authentication requirements, rate limits, or data freshness. 'Get details' is vague.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is front-loaded and concise, with no unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (1 parameter, no output schema), the description is minimally adequate but lacks any detail about what 'details' means or the expected return format.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single parameter 'postId' described as 'The ID of the post to retrieve'. The description adds no additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description uses specific verb 'Get' with resource 'details of a specific LinkedIn post', clearly distinguishing it from sibling tools like create_post, delete_post, get_feed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives, nor any exclusions or prerequisites. The description is purely functional.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_profileA

Get your LinkedIn profile information

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description only states 'Get your LinkedIn profile information' with no annotations to supplement. It does not disclose any behavioral traits such as authentication needs, rate limits, or the structure of the returned profile data. The burden falls entirely on the description, which is insufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the purpose without any fluff. It is front-loaded and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given there are no parameters, no output schema, and no annotations, the description is minimally adequate. However, it does not describe what information is returned or any other context, leaving room for improvement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are no parameters, so the description does not need to add meaning beyond what the schema already indicates (empty). According to the baseline for 0 parameters, score 4 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'your LinkedIn profile information', making it obvious what the tool does. It is distinct from sibling tools which focus on posts, comments, and likes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While no explicit when-to-use or alternative guidance is given, the sibling tools cover different operations, so the context of getting profile info is clear. There is no exclusion stated, but the simplicity makes it adequate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

like_postB

Like a LinkedIn post

ParametersJSON Schema
NameRequiredDescriptionDefault
postUrnYesThe URN or ID of the post to like

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided; description does not disclose behavioral traits like idempotency, limits, or whether it can be undone. Adds little beyond the name.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Extremely concise; single sentence with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Minimally adequate for a simple tool with one parameter. Lacks behavioral details but the core action is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description does not add meaning beyond the schema; no format or example for postUrn.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description 'Like a LinkedIn post' is a specific verb+resource combination. It clearly distinguishes from siblings like create_comment or delete_post.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use vs alternatives (e.g., share_post, create_comment). No conditions or prerequisites mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

share_postC

Share an existing LinkedIn post

ParametersJSON Schema
NameRequiredDescriptionDefault
postUrnYesThe URN or ID of the post to share
commentaryNoOptional commentary to add when sharing

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It only states the action without mentioning effects (e.g., creates a new post in feed), permissions needed, or side effects. This is a significant gap for a mutation tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler, which is efficient. However, it may be too terse for adequate clarity, earning a 4 instead of 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, output schema, or behavioral details, the description is incomplete. For a 2-parameter mutation tool, it should explain what sharing does and any constraints (e.g., can share own post?). Fails to provide sufficient context for confident use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% (both parameters have descriptions). The tool description adds no extra meaning beyond the schema; it doesn't explain URN format or usage, but the schema already provides basic info. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Share an existing LinkedIn post' clearly indicates the verb (share) and the resource (existing LinkedIn post). It distinguishes from sibling tools like create_post (creating new) and delete_post, but could be more specific about what sharing entails (e.g., reposting to feed).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No usage guidelines are provided. The description does not indicate when to use this tool versus alternatives like create_post (for new posts) or like_post (for reactions). No when-not or context cues are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

test_linkedin_connectionA

Test the LinkedIn MCP Server connection

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description does not disclose behavioral traits such as what the test entails (e.g., network request, authentication check) or what the expected outcome is (e.g., success/failure message). With no annotations, this is a significant gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, short sentence that is front-loaded with the core purpose. Every word is meaningful and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no parameters, no output schema, no annotations), the description is largely complete. It could be improved by mentioning the expected return value, but it is adequate for a basic connectivity test.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so schema coverage is 100%. The description adds no parameter information, but none is needed. It provides the purpose, which is sufficient.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Test the LinkedIn MCP Server connection'. It uses a specific verb 'Test' and a clear resource, distinguishing it from sibling tools that perform actions like create, delete, or get.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool vs. alternatives. For example, it could mention it should be used before other operations to verify connectivity, but this is absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.6/5.0
Disambiguation5/5

Each tool has a distinct purpose: commenting, posting, deleting, viewing feed/post/profile, liking, sharing, and testing. No overlapping functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with underscores (e.g., create_post, get_feed, like_post). The naming convention is uniform.

Tool Count5/5

9 tools is well-scoped for a LinkedIn server, covering essential actions without being excessive or insufficient.

Completeness4/5

The set covers core LinkedIn interactions (posting, commenting, liking, sharing, viewing), but lacks tools for retrieving comments or updating posts, which are minor gaps.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/rgthelen/linkedin-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server