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.
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?
Choose Twitter X Automation when
- You need dedicated capabilities in the Social Media domain.
- You prefer a local stdio subprocess transport.
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 | ||
|---|---|---|
| Category | Social Media | Social Media |
| Quality signal | 51/100 · Good | 65/100 · Great |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | API key required |
| Pricing | Not declared | 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 | 612 | 11 |
| Directory activity | 3 views 0 installs 0 upvotes | 3 views 0 installs 0 upvotes |
| Tools | Not listed | 57 |
| Full listing | View Twitter X Automation | View Upload Post |
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": {
"twitter-x-automation": {
"command": "npx",
"args": [
"-y",
"xactions"
]
}
}
}
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
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.