Skip to main content
Glama
isteamhq

@isteam/linkedin-mcp

by isteamhq
README.md
# @isteam/linkedin-mcp

[![npm version](https://img.shields.io/npm/v/@isteam/linkedin-mcp.svg)](https://www.npmjs.com/package/@isteam/linkedin-mcp)
[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)

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

Built by [is.team](https://is.team) — the AI-native project management platform.

## Quick Start

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

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

## 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](https://www.linkedin.com/developers/apps)
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`:

```json
{
  "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](https://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](https://is.team) open-source MCP ecosystem:
- [@isteam/mcp](https://www.npmjs.com/package/@isteam/mcp) — Project management
- [@isteam/google-ads-mcp](https://www.npmjs.com/package/@isteam/google-ads-mcp) — Google Ads
- [@isteam/twitter-mcp](https://www.npmjs.com/package/@isteam/twitter-mcp) — Twitter/X
- [@isteam/bluesky-mcp](https://www.npmjs.com/package/@isteam/bluesky-mcp) — Bluesky
- [@isteam/linkedin-mcp](https://www.npmjs.com/package/@isteam/linkedin-mcp) — LinkedIn

## License

MIT

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.

Maintenance

ActivityMaintained
ResponsivenessNo issues