OAuth2 CLI and MCP server for the LinkedIn API
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
We haven't yet run this listing's install command through our automated sandbox check. This isn't a red flag β we're steadily working through the catalog.
π‘ Paste the JSON block into your client's configuration file under mcpServers, then restart the application.
Inspect callable tools, capabilities, and parameters exposed to AI agents by Linkedctl.
whoamiShow the current user's name, email, and profile picture URL
auth_statusShow authentication status for a profile
auth_revokeRevoke the access token server-side and clear local credentials
post_createCreate a post on LinkedIn with optional media, poll, or article attachment
post_getFetch a single post by URN
post_listList posts with pagination (supports `as_org` for organization posts)

OAuth2 CLI and MCP server for the LinkedIn API.
Or run directly:
See the OAuth Setup Guide for detailed step-by-step instructions.
Add to your Claude Desktop configuration (claude_desktop_config.json):
Add to .cursor/mcp.json in your project root:
Add to ~/.codeium/windsurf/mcp_config.json:
All tools accept an optional profile parameter to select a configuration profile.
| Tool | Description |
|---|---|
whoami | Show the current user's name, email, and profile picture URL |
auth_status | Show authentication status for a profile |
auth_revoke | Revoke the access token server-side and clear local credentials |
| Tool | Description |
|---|---|
post_create | Create a post on LinkedIn with optional media, poll, or article attachment |
post_get | Fetch a single post by URN |
post_list | List posts with pagination (supports as_org for organization posts) |
post_update | Update the commentary text of an existing post |
post_delete | Delete a post by URN |
post_create supports rich content types:
| Parameter | Description |
|---|---|
text | Post text content (required) |
visibility | PUBLIC or CONNECTIONS (default PUBLIC) |
draft | Save as draft instead of publishing |
image / image_file | Attach a single image (URN or local file path) |
video / video_file | Attach a video (URN or local file path) |
document / document_file | Attach a document (URN or local file path) |
images / image_files | Attach multiple images (minimum 2) |
article_url | Attach an article link |
poll | Poll question text |
poll_options | Poll answer options (2β4 required when poll is set) |
poll_duration | ONE_DAY, THREE_DAYS, ONE_WEEK, or TWO_WEEKS |
as_org | Post as an organization (numeric ID) |
| Tool | Description |
|---|---|
comment_create | Create a comment on a post (supports as_org) |
comment_list | List comments on a post |
comment_get | Get a specific comment by URN |
comment_delete | Delete a comment by URN |
| Tool | Description |
|---|---|
reaction_create | Add a reaction to a post (supports as_org). Types: LIKE, PRAISE, EMPATHY, INTEREST, APPRECIATION, ENTERTAINMENT |
reaction_list | List reactions on a post |
reaction_delete | Remove a reaction from a post (supports as_org) |
| Tool | Description |
|---|---|
org_list | List organizations the authenticated user administers |
org_get | Fetch a single organization by ID |
org_followers | Get the follower count for an organization |
| Tool | Description |
|---|---|
stats_post | Get analytics for a single post (impressions, reach, reactions, comments, reshares) |
stats_me | Get aggregated analytics across all your posts |
stats_org | Get share statistics for an organization (lifetime or time-bucketed) |
| Tool | Description |
|---|---|
document_upload | Upload a document to LinkedIn (PDF, DOCX, PPTX, DOC, PPT; max 100 MB) |
LinkedCtl stores configuration in YAML files. Each file represents a single profile:
Available keys:
| Key | Description |
|---|---|
api-version | LinkedIn API version (e.g. 202601) |
oauth.client-id | OAuth 2.0 client ID |
oauth.client-secret | OAuth 2.0 client secret |
oauth.access-token | OAuth 2.0 access token |
oauth.refresh-token | OAuth 2.0 refresh token |
oauth.token-expires-at | Token expiration timestamp (ISO 8601) |
Config files are written with 0600 permissions (owner read/write only).
Without a profile, LinkedCtl searches for config files in this order:
.linkedctl.yaml in the current working directory~/.linkedctl.yaml in the home directoryThe first file found is used. When writing (e.g. after auth login), LinkedCtl writes to the CWD file if it exists, otherwise to the home directory file.
Profiles let you manage multiple LinkedIn accounts or configurations. Each profile is stored as a separate YAML file under ~/.linkedctl/:
| Profile | Config file path |
|---|---|
| (default) | ~/.linkedctl.yaml |
work | ~/.linkedctl/work.yaml |
personal | ~/.linkedctl/personal.yaml |
Use the --profile flag with any command:
Factual signals from GitHub, npm, and our automated checks β not a rating.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/linkedctl)<a href="https://allmcps.com/mcp/linkedctl"><img src="https://allmcps.com/api/badge/linkedctl?style=directory" alt="Linkedctl on AllMCPs" /></a>