@isteam/linkedin-mcp
by isteamhq
README.md
# @isteam/linkedin-mcp
[](https://www.npmjs.com/package/@isteam/linkedin-mcp)
[](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