Twitter X Automation vs Upload Post

A side-by-side look at the Twitter X Automation and Upload Post MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Twitter X Automation logoTwitter X AutomationSocial Media · Local subprocess (stdio)Twitter X automation MCP - post schedule analytics engagement social media51GoodAuth: not declaredUpload Post logoUpload PostSocial Media · Local subprocess (stdio)Publish, schedule & analyze posts on TikTok, Instagram, YouTube, LinkedIn, X & 10+ social networks65GreatAuth: api key required

Verdict: choose Twitter X Automation 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?

Twitter X Automation logoChoose Twitter X Automation when

  • You need dedicated capabilities in the Social Media domain.
  • You prefer a local stdio subprocess transport.
Explore Twitter X Automation

Upload Post logoChoose 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.
Explore Upload Post

Feature & specification comparison

Rows where the two servers differ are marked.

SpecTwitter X Automation logoTwitter X AutomationUpload Post logoUpload Post
CategorySocial MediaSocial Media
Quality signal51/100 · Good65/100 · Great
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthNot declaredAPI key required
PricingNot declaredBYOK (pay the provider)
Required env varsNone listedUPLOAD_POST_API_KEYUPLOAD_POST_MAX_INLINE_MB
Verified ownerCommunity listingCommunity listing
GitHub stars61211
Directory activity 3 views 0 installs 0 upvotes 3 views 0 installs 0 upvotes
ToolsNot listed57

Tools & capabilities

Twitter X Automation tools

No tool names declared yet. Check the project README from 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.

Twitter X Automation

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "twitter-x-automation": {
      "command": "npx",
      "args": [
        "-y",
        "xactions"
      ]
    }
  }
}

Upload Post

mcpServers (Claude Desktop / Cursor)
{
  "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

Twitter X Automation is categorized under Social Media and uses a local stdio subprocess. Upload Post belongs to Social Media and uses a local stdio subprocess. Pick Twitter X Automation 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.

Twitter X Automation has no declared pricing — check the project's own site. 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 twitter-x-automation and upload-post as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Twitter X Automation has a quality signal of 51/100 (Good) with 3 views, 0 installs and 612 GitHub stars. Upload Post has 65/100 (Great) with 3 views, 0 installs and 11 GitHub stars.