Linkedin MCP Server vs Upload Post
A side-by-side look at the Linkedin MCP Server and Upload Post MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
L
Linkedin MCP ServerSocial Media · Local subprocess (stdio)Open-source MCP server for LinkedIn. Give Claude and any MCP-compatible AI agent access to profiles, companies, jobs, and messages.67GreatAuth: otherVerdict: choose Linkedin MCP Server for social media work as a local process; choose Upload Post for social media as a local process. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
LChoose Linkedin MCP Server when
- You need dedicated capabilities in the Social Media domain.
- You prefer a local stdio subprocess transport.
- Its auth model fits you: other.
- You want tools like
get_person_profile, search_people, connect_with_person.
Choose Upload Post when
- You need dedicated capabilities in the Social Media domain.
- You prefer a local stdio subprocess transport.
- Its auth model fits you: API key required.
- You have the keys it needs:
UPLOAD_POST_API_KEY, UPLOAD_POST_MAX_INLINE_MB. - You want tools like
upload_video, upload_photos, upload_text.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | L Linkedin MCP Server | |
|---|---|---|
| Category | Social Media | Social Media |
| Quality signal | 67/100 · Great | 65/100 · Great |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | other | API key required |
| Pricing | Free | BYOK (pay the provider) |
| Required env vars | None listed | UPLOAD_POST_API_KEYUPLOAD_POST_MAX_INLINE_MB |
| Verified owner | Community listing | Community listing |
| GitHub stars | 3,961 | 11 |
| Directory activity | 1 views 0 installs 0 upvotes | 2 views 0 installs 0 upvotes |
| Tools | 20 | 57 |
| Full listing | View Linkedin MCP Server | View Upload Post |
Tools & capabilities
Linkedin MCP Server tools 20
get_person_profileGet a specific person's LinkedIn profile.search_peopleSearch for people on LinkedIn.connect_with_personSend a LinkedIn connection request or accept an incoming one. The tool is annotated with destructiveHint so MCP clients will prompt for user confirmation before execution.get_sidebar_profilesGet profile links from sidebar recommendation sections on a LinkedIn profile page. Extracts profiles from "More profiles for you", "Explore premium profiles", and "People you may know" sidebar sections. Follows "Show all" links to return the full list from each section. Sections that redirect to linkedin.com/premium are skipped.get_my_profileGet the authenticated user's own LinkedIn profile. Navigates to /in/me/ and resolves the redirect to obtain the real username before reading the profile, so the url field in the result is the actual profile URL (e.g. linkedin.com/in/johndoe/) rather than /in/me/.get_company_profileGet a specific company's LinkedIn profile.get_company_postsGet recent posts from a company's LinkedIn feed.search_companiesSearch for companies on LinkedIn.get_company_employeesList employees at a company from the LinkedIn /people/ page, including the demographics aggregate that this view exposes: where employees live, where they studied, and a function breakdown (Engineering, Sales, Operations, etc.). The demographics are unique to this tool. For filtered search by network degree (1st/2nd/3rd) or location, prefer search_people with current_company set to the company URN id. That path also returns more result pages than the /people/ tab. The optional keywords filter narrows results by name, title, or skill. company_name must be the exact LinkedIn URL slug (the path segment after /company/), not the display name. LinkedIn assigns unique slugs and the display name often does not match. For example, the AI lab Anthropic lives at /company/anthropicresearch/, not /company/anthropic/. If you are unsure of the slug, call search_companies first and pick the slug from the returned references.get_job_detailsGet job details for a specific job posting on LinkedIn.get_job_apply_urlGet how a job posting takes applications, and the employer's application link. Reads the posting without clicking anything.search_jobsSearch for jobs on LinkedIn. Returns job_ids that can be passed to get_job_details for full info.- +8 more on the listing page
Upload Post tools 57
upload_videoPublish a video to one or more platforms. Use `videoPathOrUrl` only for public/signed HTTPS URLs, or for absolute local paths when the MCP server runs on the same machine as the file. `videoBase64` is only for clients that can provide raw bytes directly and is capped by UPLOAD_POST_MAX_INLINE_MB (default 100). Returns a `request_id` you can poll with `get_status`. Supports per-platform overrides (tiktokPrivacyLevel, youtubePrivacyStatus, youtubePlaylistId, youtubeThumbnailUrl, youtubeTags, facebookPageId, instagramMediaType, etc.). Reddit posting is currently unavailable (error_code=reddit_unavailable) until the Reddit app is restored. Do not use reddit as a publish target. A hosted MCP server cannot read files on the user's machine or chat attachments (`/mnt/data`, sandbox paths). To publish a local file: (1) if this client can run HTTP requests itself (for example a coding agent with a shell), stage it with `create_media_upload` (returns `upload_id` + `upload_url`), PUT the raw file bytes to `upload_url` with the same Content-Type, call `complete_media_upload` and pass the returned `media_url` as the media URL; (2) otherwise ask the user for a public HTTPS URL of the file, or tell them to publish it from the dashboard at https://app.upload-post.com. Staged media is deleted after 24 hours.upload_photosPublish one or more photos (single image or carousel). Each item in `photosPathsOrUrls` may be a public URL or a local path. Reddit posting is currently unavailable (error_code=reddit_unavailable) until the Reddit app is restored. Do not use reddit as a publish target.upload_textPublish a text-only post. `linkUrl` (or platform-specific *LinkUrl) attaches a link preview where supported. Reddit posting is currently unavailable (error_code=reddit_unavailable) until the Reddit app is restored. Do not use reddit as a publish target.upload_documentPublish a document (PDF / PPT / PPTX / DOC / DOCX) to LinkedIn. Title is required.get_statusCheck the status of an async upload by `request_id`. Poll this until `status` is 'success' or 'failed'.get_job_statusCheck the status of a scheduled or queued upload by `job_id`. Use this for posts created with `addToQueue` or `scheduledDate`.get_historyPaginated history of uploads across all profiles.get_mediaRetrieve recent media (videos, photos, text posts) pulled directly from a profile's connected social accounts. Supports instagram, tiktok, youtube, linkedin, facebook, x, threads, pinterest, bluesky, reddit. Useful for browsing what already exists on a platform before posting more. Paginated: the response carries `pagination` = { limit, next_cursor, has_more }; pass `next_cursor` back as `cursor` for the next page (the last page returns next_cursor null and has_more false).list_scheduledList all currently scheduled (not-yet-published) posts.cancel_scheduledCancel a scheduled post by its `job_id`.edit_scheduledEdit a pending scheduled post in place, keeping its job ID and media: reschedule it (scheduledDate/timezone) and/or fix its text. `title` and `caption` rewrite the text for EVERY platform of the post; to change only some platforms, send `platformContent` instead, e.g. {"instagram":{"caption":"..."},"tiktok":{"caption":"..."}} — platforms not listed keep their text. First comments cannot be edited on a pending post.get_analyticsAggregated analytics for a profile across selected platforms (followers, views, engagement). Instagram also returns two audience breakdowns with the same shape (age / gender / country / city): `follower_demographics` for the account's followers and `engaged_audience_demographics` for the accounts that engaged with its content.- +45 more on the listing page
Ready-to-paste client configs
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
Linkedin MCP Server
{
"mcpServers": {
"linkedin-mcp-server-3": {
"command": "uvx",
"args": [
"mcp-server-linkedin"
]
}
}
}
Upload Post
{
"mcpServers": {
"upload-post": {
"command": "npx",
"args": [
"-y",
"@upload-post/mcp"
],
"env": {
"UPLOAD_POST_API_KEY": "YOUR_UPLOAD_POST_API_KEY_HERE",
"UPLOAD_POST_MAX_INLINE_MB": "YOUR_UPLOAD_POST_MAX_INLINE_MB_HERE"
}
}
}
}
Frequently asked questions
Linkedin MCP Server is categorized under Social Media and uses a local stdio subprocess. Upload Post belongs to Social Media and uses a local stdio subprocess. Pick Linkedin MCP Server for social media work and Upload Post for social media.
Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.
Linkedin MCP Server is listed as free. Auth: other. Upload Post is bring-your-own-key: usage is billed by the API provider you supply a key for. Auth: api key required. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.
Yes. MCP clients support multiple servers: add linkedin-mcp-server-3 and upload-post as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, Linkedin MCP Server has a quality signal of 67/100 (Great) with 1 views, 0 installs and 3,961 GitHub stars. Upload Post has 65/100 (Great) with 2 views, 0 installs and 11 GitHub stars.