MCP Server

LinkedIn MCP Server Let any AI agent post to LinkedIn

Let AI agents publish text posts, PDF documents, images and video to LinkedIn, on your personal profile or a company page you manage, from a single prompt. It runs on LinkedIn’s official API.

mcp.json
{
  "mcpServers": {
    "upload-post": {
      "url": "https://mcp.upload-post.com/mcp",
      "headers": {
        "Authorization": "ApiKey YOUR_API_KEY"
      }
    }
  }
}

LinkedIn tools the agent can call

Part of the Upload-Post MCP server. The agent picks the right tool from your prompt.

Tool What it does
upload_text Publish a text post to a profile or company page, with an optional link preview
upload_document Publish a PDF, PPT(X) or DOC(X) document post, the format behind LinkedIn “carousels”
upload_photos / upload_video Publish image and video posts
get_linkedin_pages List the company pages you manage and their IDs
list_scheduled / edit_scheduled / cancel_scheduled Manage scheduled posts
get_analytics Pull company page followers, impressions and engagement

Looking for another way to post? See the LinkedIn API page or the Claude Code LinkedIn skill. Step by step: post to LinkedIn with Claude.

Add the LinkedIn MCP server to Claude or Cursor

One hosted server at mcp.upload-post.com/mcp. Sign in with OAuth or paste an Upload-Post API key, whichever your client supports.

Claude Desktop

Open it from Settings > Developer > Edit Config, paste the entry and restart Claude Desktop. It runs the open-source npm package @upload-post/mcp on your machine and needs Node.js 18 or newer.

Using Claude in the browser? Skip the file: Customize > Connectors > + Add > Add custom connector, paste https://mcp.upload-post.com/mcp and sign in with your Upload-Post account (OAuth).

claude_desktop_config.json
{
  "mcpServers": {
    "upload-post": {
      "command": "npx",
      "args": ["-y", "@upload-post/mcp"],
      "env": { "UPLOAD_POST_API_KEY": "YOUR_API_KEY" }
    }
  }
}

Claude Code

Prefer OAuth? Drop the --header line, then run /mcp inside Claude Code and sign in. Add --scope user to use the server in every project.

Terminal
claude mcp add --transport http upload-post https://mcp.upload-post.com/mcp \
  --header "Authorization: ApiKey YOUR_API_KEY"

Cursor

Put it in .cursor/mcp.json for one project or ~/.cursor/mcp.json for all of them, then reload Cursor.

.cursor/mcp.json
{
  "mcpServers": {
    "upload-post": {
      "url": "https://mcp.upload-post.com/mcp",
      "headers": {
        "Authorization": "ApiKey YOUR_API_KEY"
      }
    }
  }
}

Your API key is under API Keys in app.upload-post.com. Before the first post, connect LinkedIn to a profile in the dashboard: the agent passes that profile name as user. On ChatGPT, search for Upload-Post under Apps and click Connect; no config file needed.

Example: a PDF document post on a company page

An example flow with placeholder names, IDs and URLs, not a customer transcript. The tool names and parameters are the real ones the server exposes.

You

Post the Q3 report at https://example.com/q3-report.pdf on the Acme Analytics company page (Upload-Post profile "acme"). Title it "Q3 product report", write a two-line intro and make it public.

  1. Tool call 1

    get_linkedin_pages

    The agent looks up the page ID instead of guessing it.

    arguments
    {
      "profile": "acme"
    }
    result (trimmed)
    {
      "success": true,
      "pages": [
        {
          "id": "urn:li:organization:12345678",
          "name": "Acme Analytics",
          "vanityName": "acme-analytics"
        }
      ]
    }
  2. Tool call 2

    upload_document

    Document posts (what most people call PDF carousels) have their own tool. The page ID routes the post to the company page.

    arguments
    {
      "documentPathOrUrl": "https://example.com/q3-report.pdf",
      "user": "acme",
      "title": "Q3 product report",
      "description": "Our Q3 in 12 slides: what shipped, what moved, what comes next.",
      "targetLinkedinPageId": "urn:li:organization:12345678",
      "linkedinVisibility": "PUBLIC"
    }
    result (trimmed)
    {
      "success": true,
      "results": {
        "linkedin": {
          "success": true,
          "post_id": "urn:li:activity:7654321098765432",
          "url": "https://www.linkedin.com/feed/update/urn:li:activity:7654321098765432/",
          "content_type": "document"
        }
      }
    }

Assistant

Done. "Q3 product report" is live on the Acme Analytics page as a public document post: https://www.linkedin.com/feed/update/urn:li:activity:7654321098765432/

  • Leave out targetLinkedinPageId and the same call posts to the personal profile of the connected LinkedIn account.
  • The file has to be reachable at a public URL. A hosted MCP server cannot read files on your computer, so upload the PDF somewhere first or post it from the dashboard.
  • Add scheduledDate and timezone to any of these calls to schedule the post instead of publishing it now.

The same agent, other LinkedIn posts

upload_photos: An image post on your personal profile, visible to connections only.

{
  "photosPathsOrUrls": [
    "https://example.com/team-offsite.jpg"
  ],
  "user": "acme",
  "platforms": [
    "linkedin"
  ],
  "title": "Three things we changed after our team offsite. Number two surprised me.",
  "platformOptions": {
    "linkedinVisibility": "CONNECTIONS"
  }
}

upload_text: A text post with a link preview, scheduled for Monday 9:00 Madrid time.

{
  "title": "We rewrote our onboarding from scratch. Here is what changed and why.",
  "user": "acme",
  "platforms": [
    "linkedin"
  ],
  "linkUrl": "https://example.com/blog/onboarding",
  "scheduledDate": "2026-10-05T09:00:00",
  "timezone": "Europe/Madrid"
}

Official LinkedIn API. No scraping, no shared password

How the LinkedIn MCP server actually reaches your account.

The MCP server never logs in as you, scrapes LinkedIn or drives a browser. Your AI client calls the server, the server calls Upload-Post, and Upload-Post publishes through LinkedIn’s REST API with its own approved LinkedIn app. You connect LinkedIn once, on LinkedIn’s own permission screen, so your LinkedIn password never reaches Upload-Post or your AI client.

The permissions LinkedIn asks you to approve are the standard ones for third-party posting tools: w_member_social to post as yourself and w_organization_social to post as a company page. LinkedIn only lets you post as a page if you hold an admin role on it (administrator or content admin), and that rule applies here too.

LinkedIn’s User Agreement bans unauthorized automated methods for creating or sharing posts, scraping tools and browser plugins, and sharing log-in credentials. Those are the things that usually get automated accounts restricted. An approved app on the official API is the route LinkedIn built for tools like this. It does not exempt you from LinkedIn’s rules on spam and content, so write posts a person would stand behind.

LinkedIn access tokens last about 60 days and refresh with regular use. You can disconnect LinkedIn from your Upload-Post profile at any time, and revoke an AI client that signed in with OAuth under Connected Apps in the dashboard.

Sources: LinkedIn Posts API, LinkedIn User Agreement, section 8.2, Upload-Post LinkedIn guide, upload-post-mcp on GitHub.

LinkedIn MCP servers compared: official API or your browser session

The four kinds of LinkedIn MCP server you will find, and how each one reaches your account. Checked 28 September 2026.

How it reaches LinkedInCan it post?What you installRisk to your accountPrice
Upload-Post MCP LinkedIn’s official API through an approved app. You grant access on LinkedIn’s own OAuth screen.Yes: text, images, video and PDF documents, to your profile or any page you administer, now or scheduled.Nothing. It is hosted at mcp.upload-post.com. An open-source npm package exists if you would rather run it locally.Low. No password, no cookies, no browser automation.Free plan with 10 uploads a month. Unlimited uploads from $24/month.
Open-source browser-session servers (e.g. stickerdaniel/linkedin-mcp-server) Drives a real browser logged in as you and keeps your LinkedIn session cookies.Built for research and outreach: profiles, people and job search, messages. The most popular one does not publish posts.A local install (uvx, Docker or a desktop bundle).High. The README itself warns that accounts using automated tools can be restricted or banned.Free, open source.
Automation platforms (e.g. Zapier MCP) The platform’s own LinkedIn integration.Two actions: a share update on your profile and a company page update.Nothing, but calls run through your Zapier account.Low.Needs a Zapier account.
LinkedIn content apps (e.g. Taplio, Postiv) Hosted, connected to LinkedIn through the app.Yes, inside that app’s drafting and scheduling workflow.Nothing, but you need an account with that app.Low.Not listed on their MCP pages.

There is no official LinkedIn MCP server. LinkedIn has not published one, so every LinkedIn MCP server is third-party. What matters is how it reaches your account: through LinkedIn’s official API with your permission, or by driving a browser with your session cookie.

Upload-Post is not a writing app. Your AI client writes the post and the server publishes it, so you keep the assistant, prompts and voice you already use. The same server also posts to TikTok, Instagram, YouTube, X and 17 more platforms, so one connection covers every network you publish to.

What it will not do: read other people’s profiles, search for people, send connection requests or messages, or export leads. LinkedIn does not open those actions to ordinary third-party apps, which is why the tools that offer them work through a browser session.

Sources: stickerdaniel/linkedin-mcp-server README, Zapier LinkedIn MCP, Taplio LinkedIn MCP, Postiv LinkedIn MCP, LinkedIn User Agreement, section 8.2.

LinkedIn limits the agent works within

What LinkedIn and Upload-Post accept per post, checked September 2026.

What Limit Source
Post text 3,000 characters Upload-Post character limits
Document or video title 400 characters (an emoji counts as 2). Longer titles are trimmed with an ellipsis. Upload-Post document upload
Documents PDF, PPT, PPTX, DOC or DOCX, up to 100 MB and 300 pages LinkedIn Documents API
Video 3 seconds to 30 minutes, 75 KB to 500 MB LinkedIn Videos API
Images JPEG, PNG or GIF, up to 36,152,320 pixels; animated GIFs up to 250 frames Upload-Post photo requirements
Visibility PUBLIC (default), CONNECTIONS, LOGGED_IN or CONTAINER Upload-Post LinkedIn guide
Posting as a page Needs an administrator or content admin role on that page LinkedIn Posts API

Works with every MCP client

Same server, same tools. Pick your AI client and follow its 3-step guide.

Try these LinkedIn prompts

No commands to memorize. Describe what you want.

“Draft and publish a LinkedIn post announcing our v2 release. Keep it plain, no hype.”
“Post this PDF as a document carousel on our company page.”
“Schedule a LinkedIn text post for next Monday at 10:00 Madrid time.”
“How did our company page do this month? Followers, impressions, engagement.”

Frequently asked questions

LinkedIn + AI agents, answered. Last updated September 2026.

What is a LinkedIn MCP server?

A LinkedIn MCP server is a Model Context Protocol server that exposes LinkedIn publishing as tools an AI agent can call. The Upload-Post MCP server lets ChatGPT, Claude, Gemini or any MCP client post text, documents, images and video to LinkedIn, with no custom code.

Can AI agents post to LinkedIn company pages?

Yes. The get_linkedin_pages tool lists the company pages you manage, and the agent can target any of them, or your personal profile, per post.

Can it publish PDF carousels?

Yes. The upload_document tool publishes a PDF, PPT, PPTX, DOC or DOCX file as a LinkedIn document post, which LinkedIn shows as a swipeable carousel. A title is required and is capped at 400 characters.

Is the LinkedIn MCP server free?

The MCP server is free and open source (MIT). Posting goes through your Upload-Post plan: the Free plan includes 10 uploads a month and 2 profiles with no card, and paid plans with unlimited uploads start at $24 a month ($16 a month billed annually).

Is there an official LinkedIn MCP server?

No. LinkedIn has not released an MCP server, so every LinkedIn MCP server is built by a third party. Upload-Post’s runs on LinkedIn’s official API through an approved app, which is the closest thing to official: you grant access on LinkedIn’s own permission screen and never share your password or cookies.

Do I need to install anything from GitHub?

No. The server is hosted at https://mcp.upload-post.com/mcp. In Claude on the web or ChatGPT you add it as a connector and sign in with OAuth; in Claude Code or Cursor you paste the URL and an API key. If you prefer to run it on your own machine, the same server is published as the open-source npm package @upload-post/mcp.

Will the AI publish to LinkedIn without asking me?

Your MCP client decides. Claude, ChatGPT and Cursor show each tool call and can ask you to approve it before it runs. You can also ask the agent to schedule the post instead of publishing it, then review or cancel it with list_scheduled and cancel_scheduled before it goes out.

How do I add the LinkedIn MCP server to Claude?

In Claude Code, run claude mcp add --transport http upload-post https://mcp.upload-post.com/mcp and sign in with /mcp, or pass your API key with --header. In Claude Desktop, add the npx @upload-post/mcp entry with your API key to claude_desktop_config.json. In Claude on the web, add the URL as a custom connector. Then connect LinkedIn to a profile in the Upload-Post dashboard.

Does it post to my personal profile or my company page?

Both. Without a page ID, posts go to the personal profile of the connected LinkedIn account. With targetLinkedinPageId set to an ID from get_linkedin_pages, the post goes out as that company page. LinkedIn requires an administrator or content admin role on the page.

Can LinkedIn restrict my account for using it?

The server uses LinkedIn’s official API through an approved app and LinkedIn’s own permission screen. It does not share your password, scrape or automate a browser, which are the practices LinkedIn’s User Agreement prohibits. You still have to follow LinkedIn’s rules on content and spam.

What are the LinkedIn post limits?

Up to 3,000 characters of post text and 400 characters for a document or video title. Documents can be PDF, PPT, PPTX, DOC or DOCX up to 100 MB and 300 pages. Videos run from 3 seconds to 30 minutes and 75 KB to 500 MB.

Can the agent read LinkedIn analytics?

For company pages you administer, yes: get_analytics takes the page URN and returns that page’s numbers. Personal profiles are not supported, because LinkedIn only grants the permission for reading a member’s posts (r_member_social) to approved developers.

Is it a LinkedIn scraper?

No. It publishes and manages your own posts and pages. It does not scrape profiles, search for people or send connection requests.

Let your AI agent run LinkedIn

Free to start, no credit card. Connect LinkedIn once and post from any MCP client.