Last updated: January 28, 2026
mcp-linkedin follows a phased development approach. Phases 1–4 are complete with 21 tools and 135 tests. Phase 5 covers future integrations.
Phase 1 — Essential Posting Complete
Core LinkedIn posting and retrieval via the Posts API.
Tools Delivered
- linkedin_create_post — Text posts with hashtags, mentions, configurable visibility
- linkedin_create_post_with_link — Posts with link previews (custom title/description)
- linkedin_get_my_posts — Paginated retrieval of recent posts
- linkedin_delete_post — Delete by URN (idempotent)
- linkedin_get_auth_url — OAuth flow with local callback server
- linkedin_save_credentials — Save credentials from OAuth callback
- linkedin_exchange_code — Exchange OAuth code for access token
- linkedin_get_user_info — Get authenticated user profile
Phase 2 — Content Management Complete
Editing posts, image uploads, and token refresh.
Tools Delivered
- linkedin_update_post — Edit commentary, CTA label, landing page URL via PARTIAL_UPDATE
- linkedin_create_post_with_image — Upload PNG/JPG/GIF via Images API, create post with image URN, supports alt text
- linkedin_refresh_token — Refresh expired access tokens (60-day expiry)
Phase 2.5 — Social Interactions Complete
Commenting and reacting to posts.
Tools Delivered
- linkedin_add_comment — Comment on posts (max 1250 characters)
- linkedin_add_reaction — React with LIKE, PRAISE, EMPATHY, INTEREST, APPRECIATION, or ENTERTAINMENT
Phase 3 — Scheduling Complete
LinkedIn API does not support native scheduling. A custom solution was built using JSON file storage and node-cron.
Tools Delivered
- linkedin_schedule_post — Schedule posts for future publication (stored locally)
- linkedin_list_scheduled_posts — List posts by status (pending, published, failed, cancelled)
- linkedin_cancel_scheduled_post — Cancel pending posts
- linkedin_get_scheduled_post — Get details of a single scheduled post
Infrastructure
- Background scheduler daemon (
npm run scheduler) checks every minute - Retry logic: 3 attempts max per post
- Graceful shutdown on SIGINT/SIGTERM
- JSON file storage at
~/.mcp-linkedin-scheduled-posts.json
Phase 4 — Rich Media Complete
All rich media types supported by the LinkedIn API for personal accounts.
Tools Delivered
- linkedin_create_poll — Poll posts with 2–4 options, 1–14 day duration
- linkedin_create_post_with_document — Upload PDF/DOC/DOCX/PPT/PPTX (max 100 MB, 300 pages)
- linkedin_create_post_with_video — Upload MP4/MOV/AVI/WMV/WebM/MKV/M4V/FLV (max 200 MB)
- linkedin_create_post_with_multi_images — 2–20 images per post with optional alt text
Phase 5 — Integrations Planned
Future features for extended workflow automation.
Draft Management
Save and manage draft posts locally. LinkedIn API does not support drafts, so this would use local storage similar to the scheduling system.
GitHub Integration
Automatically create LinkedIn posts from GitHub releases and pull requests.
Content Support Matrix
| Content Type | Status | Notes |
|---|---|---|
| Text | Supported | Posts API |
| Link/Article | Supported | Posts API with article content |
| Image | Supported | Images API + Posts API |
| Multi-Image | Supported | Images API + MultiImage content (2–20) |
| Video | Supported | Videos API + Posts API (initialize, upload, finalize) |
| Document | Supported | Documents API + Posts API |
| Poll | Supported | Poll API via Posts API |
| Carousel | Not available | Requires sponsored accounts only |
API Limitations
These are LinkedIn API constraints, not permission issues. All implemented features work with the w_member_social OAuth scope.
| Feature | Status |
|---|---|
| Native post scheduling | Not supported by API (custom solution built) |
| Draft storage | Not supported by API |
| Rate limits | Undocumented (exponential backoff used) |
| Analytics for personal posts | Unknown / undocumented |
| Profile editing | Not available via API |
| Connections list | Requires Partner Program |
| Messaging | Not available via API |