Skip to main content
Glama
@isteam/linkedin-mcp

@isteam/linkedin-mcp

by isteamhq

@isteam/linkedin-mcp

npm version License: MIT

MCP server for LinkedIn — post, comment, react, and manage content via AI agents.

Built by is.team — the AI-native project management platform.

Quick Start

Add to your MCP config (.mcp.json for Claude Code, or Claude Desktop settings):

{
  "mcpServers": {
    "linkedin": {
      "command": "npx",
      "args": ["-y", "@isteam/linkedin-mcp"],
      "env": {
        "LINKEDIN_ACCESS_TOKEN": "your-access-token",
        "LINKEDIN_PERSON_ID": "your-person-id"
      }
    }
  }
}

Related MCP server: LinkedIn MCP Server

Tools (10)

Content & Engagement

Tool

Description

create_post

Create a LinkedIn text post (max 3000 characters)

create_article_post

Share an article link with commentary

delete_post

Delete a post by URN

comment_on_post

Comment on a post (max 1250 characters)

like_post

Like/react to a post

Profile & Analytics

Tool

Description

get_me

Get authenticated user info

get_post

Get a post by URN (text, author, stats)

get_comments

Get comments on a post

get_own_posts

Get your recent LinkedIn posts

get_post_stats

Get like/comment counts for a post

Environment Variables

Variable

Required

Description

LINKEDIN_ACCESS_TOKEN

Yes

OAuth 2.0 access token

LINKEDIN_PERSON_ID

Yes*

Your LinkedIn person ID (required in member mode)

LINKEDIN_ORGANIZATION_ID

No

Organization ID (for posting as a company page)

LINKEDIN_MODE

No

member (default) or organization

*Required when LINKEDIN_MODE is member (default).

Getting your credentials

  1. Create an app in the LinkedIn Developer Portal

  2. Request the w_member_social and r_liteprofile OAuth scopes

  3. Complete the OAuth 2.0 flow to get an access token

  4. Get your person ID from the /v2/userinfo endpoint

Organization mode

To post as a company page, set LINKEDIN_MODE=organization and provide LINKEDIN_ORGANIZATION_ID:

{
  "env": {
    "LINKEDIN_ACCESS_TOKEN": "your-access-token",
    "LINKEDIN_PERSON_ID": "your-person-id",
    "LINKEDIN_ORGANIZATION_ID": "your-org-id",
    "LINKEDIN_MODE": "organization"
  }
}

Rate Limits & Agent Safety

LinkedIn API enforces per-endpoint rate limits:

Endpoint

Limit

Notes

POST /rest/posts (create post)

1 req/sec, ~100/day

Stricter daily cap on content creation

POST /rest/socialActions/.../comments

2 req/sec

POST /rest/reactions (like)

1 req/sec

GET endpoints (posts, comments, stats)

~100 req/hour

Per authenticated user

General throttle

~60 req/min

Varies by endpoint scope

Idempotency note: LinkedIn does not deduplicate identical posts. If your agent retries on timeout, it may create duplicate content. Use get_own_posts to verify before retrying a create operation.

Backoff: When rate-limited, the API returns 429 with a Retry-After header (seconds). Wait the specified duration before retrying.

Usage Examples

Share a thought leadership post:

"Post on LinkedIn: AI agents are changing how teams collaborate. At is.team, we're building a future where AI joins your standups and ships features alongside you."

Share an article:

"Share this article on LinkedIn with a summary: https://example.com/article-about-ai"

Engage with your network:

"Get my recent LinkedIn posts and show their engagement stats"

About is.team

is.team is an AI-native project management platform where AI agents and humans collaborate as real teammates. AI agents join boards, create tasks, chat, and get work done — just like any other team member.

Part of the is.team open-source MCP ecosystem:

License

MIT

Available Tools

10 tools
comment_on_postA

Comment on a LinkedIn post (max 1250 chars). Requires post URN — use WebSearch to find posts, then get_post to get the URN.

Inputs: post_urn (required), text (required).

create_article_postC

Share an article link on LinkedIn with commentary

Inputs: text (required), article_url (required), article_title, article_description.

create_postA

Create a LinkedIn text post (max 3000 chars)

Inputs: text (required).

delete_postB

Delete a LinkedIn post by URN

Inputs: post_urn (required).

get_commentsC

Get comments on a LinkedIn post

Inputs: post_urn (required), count.

get_meA

Get authenticated LinkedIn user info

Inputs: no named parameters.

get_own_postsB

Get your own recent LinkedIn posts

Inputs: count.

get_postA

Get a LinkedIn post by URN (text, author, stats)

Inputs: post_urn (required).

get_post_statsB

Get like/comment counts for a LinkedIn post

Inputs: post_urn (required).

like_postA

Like/react to a LinkedIn post

Inputs: post_urn (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.6/5.0

    Scored across 10 tools

    Disambiguation5/5

    Each tool targets a distinct action (e.g., create vs delete vs get stats) with clear boundaries. No two tools overlap in purpose.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern (e.g., create_post, delete_post, get_comments) with underscores, making them predictable.

    Tool Count5/5

    10 tools cover the essential LinkedIn post lifecycle (CRUD plus comments, likes, stats) without being excessive or insufficient.

    Completeness4/5

    Missing an update/edit post tool, and repost/share functionality is absent. However, core operations are well-covered, and the gap is minor.

    Related MCP Connectors

    Related MCP Servers