chen-friedman/upload-post-mcp
MCP server for UploadPost API — upload, schedule & manage social media content across 10+ platforms (TikTok, Instagram, YouTube, LinkedIn, Facebook, X, Threads, Pinterest, Reddit, Bluesky) from any AI assistant.
Upload-Post MCP Server
A Model Context Protocol (MCP) server that lets AI assistants upload, schedule, and manage social media content across 10+ platforms through the UploadPost API.
One MCP server. Every social network. Zero tab-switching.
Ask your AI: "Upload this video to TikTok, Instagram, and YouTube with the title 'Product Launch'" — and it just works.
Supported Platforms
| Platform | Video | Photo | Text |
|---|---|---|---|
| TikTok | ✅ | ✅ | — |
| ✅ | ✅ | — | |
| YouTube | ✅ | — | — |
| ✅ | ✅ | ✅ | |
| ✅ | ✅ | ✅ | |
| X (Twitter) | ✅ | ✅ | ✅ |
| Threads | ✅ | ✅ | ✅ |
| ✅ | ✅ | — | |
| — | ✅ | ✅ | |
| Bluesky | ✅ | ✅ | ✅ |
| Google Business | ✅ | — | — |
Quick Start
Prerequisites
- Node.js 18+ — Download
- UploadPost API Key — Get one free (no credit card required)
Run with npx (no install needed)
npx -y upload-post-mcpInstallation
Choose your AI client below and follow the setup instructions.
Claude Desktop
Edit your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"upload-post": {
"command": "npx",
"args": ["-y", "upload-post-mcp"],
"env": {
"UPLOAD_POST_API_KEY": "your-api-key-here"
}
}
}
}Restart Claude Desktop after saving.
Cursor
Add to your Cursor MCP config (~/.cursor/mcp.json for global, or .cursor/mcp.json in your project):
{
"mcpServers": {
"upload-post": {
"command": "npx",
"args": ["-y", "upload-post-mcp"],
"env": {
"UPLOAD_POST_API_KEY": "your-api-key-here"
}
}
}
}Windsurf
Add to your Windsurf MCP config file (~/.codeium/windsurf/mcp_config.json):
{
"mcpServers": {
"upload-post": {
"command": "npx",
"args": ["-y", "upload-post-mcp"],
"env": {
"UPLOAD_POST_API_KEY": "your-api-key-here"
}
}
}
}Claude Code (CLI)
claude mcp add --scope user upload-post -- npx -y upload-post-mcp
# Then set the environment variable:
export UPLOAD_POST_API_KEY=your-api-key-hereOr add it with the environment variable inline:
claude mcp add --scope user -e UPLOAD_POST_API_KEY=your-api-key-here upload-post -- npx -y upload-post-mcpVS Code / GitHub Copilot
Add to your VS Code settings.json or .vscode/mcp.json:
{
"mcp": {
"servers": {
"upload-post": {
"command": "npx",
"args": ["-y", "upload-post-mcp"],
"env": {
"UPLOAD_POST_API_KEY": "your-api-key-here"
}
}
}
}
}Opencode
Add to your Opencode configuration file:
{
"mcp": {
"upload-post": {
"type": "local",
"command": ["npx", "-y", "upload-post-mcp"],
"env": {
"UPLOAD_POST_API_KEY": "your-api-key-here"
},
"enabled": true
}
}
}Cline
Add via Cline MCP settings in VS Code:
- Open the Cline extension settings
- Navigate to MCP Servers
- Add a new server with this config:
{
"mcpServers": {
"upload-post": {
"command": "npx",
"args": ["-y", "upload-post-mcp"],
"env": {
"UPLOAD_POST_API_KEY": "your-api-key-here"
}
}
}
}Zed
Add to your Zed settings (~/.config/zed/settings.json):
{
"context_servers": {
"upload-post": {
"command": {
"path": "npx",
"args": ["-y", "upload-post-mcp"],
"env": {
"UPLOAD_POST_API_KEY": "your-api-key-here"
}
}
}
}
}Smithery (One-Click Install)
npx -y @smithery/cli install @chen-friedman/upload-post-mcp --client claudeDocker
docker run -i --rm \
-e UPLOAD_POST_API_KEY=your-api-key-here \
node:22-slim \
npx -y upload-post-mcpAvailable Tools
This MCP server exposes 12 tools that AI assistants can use:
Content Publishing
| Tool | Description |
|---|---|
upload_video |
Upload a video to one or more platforms. Accepts a local file path or public URL. |
upload_photos |
Upload photos or carousels (including mixed photo+video for Instagram/Threads). |
upload_text |
Post text-only content to X, LinkedIn, Facebook, Threads, Reddit, and Bluesky. |
Status & History
| Tool | Description |
|---|---|
get_upload_status |
Check the status of an async upload or scheduled post. |
get_upload_history |
Retrieve paginated history of all past uploads with filtering. |
Analytics
| Tool | Description |
|---|---|
get_analytics |
Get profile-level analytics (followers, impressions, reach, engagement). |
get_post_analytics |
Get per-post metrics (views, likes, comments, shares). |
Account Management
| Tool | Description |
|---|---|
get_current_user |
Validate API key and check account info and plan limits. |
get_facebook_pages |
List accessible Facebook Pages (needed for facebook_page_id). |
get_linkedin_pages |
List LinkedIn company pages (needed for target_linkedin_page_id). |
get_pinterest_boards |
List Pinterest boards (needed for pinterest_board_id). |
get_queue_preview |
Preview upcoming queue slots and availability for a profile. |
Usage Examples
Once connected, just ask your AI assistant naturally:
Upload a Video
"Upload the video at C:/videos/launch.mp4 to TikTok and Instagram with the caption 'New product launch! 🚀'"
Schedule a Post
"Schedule this video for tomorrow at 9 AM EST on YouTube, LinkedIn, and Facebook"
Check Analytics
"Show me the analytics for my account on Instagram and TikTok"
Cross-Post Text
"Post 'Just shipped v2.0! Check it out at example.com' to X, LinkedIn, Threads, and Bluesky"
Upload Photo Carousel
"Upload these 5 product photos as a carousel to Instagram and Facebook with the caption 'New collection'"
Check Upload Status
"What's the status of my last upload?"
Configuration
Environment Variables
| Variable | Required | Description |
|---|---|---|
UPLOAD_POST_API_KEY |
Yes | Your UploadPost API key. Get one here |
Getting Your API Key
- Create a free account at app.upload-post.com
- Connect your social media accounts
- Go to API Keys and generate a key
- Add the key to your MCP client configuration
Troubleshooting
"UPLOAD_POST_API_KEY is not set"
Make sure your API key is set in the env section of your MCP client configuration. The key should not have quotes around the value in environment variables.
Connection Issues
- Verify your API key is valid by visiting app.upload-post.com/api-keys
- Ensure Node.js 18+ is installed:
node --version - Try running the server directly to check for errors:
UPLOAD_POST_API_KEY=your-key npx -y upload-post-mcp
Upload Failures
- Check that your social media accounts are connected in the UploadPost dashboard
- For Facebook, you need to use
get_facebook_pagesfirst to get the page ID - For Pinterest, you need to use
get_pinterest_boardsfirst to get the board ID - Ensure your file paths are absolute when uploading local files
MCP Inspector (Debugging)
You can use the official MCP Inspector to test tools interactively:
npx @modelcontextprotocol/inspector npx -y upload-post-mcpDevelopment
# Clone the repo
git clone https://github.com/chen-friedman/upload-post-mcp.git
cd upload-post-mcp
# Install dependencies
npm install
# Build
npm run build
# Run locally
UPLOAD_POST_API_KEY=your-key npm startLinks
- UploadPost Website: upload-post.com
- API Documentation: docs.upload-post.com
- Get API Key: app.upload-post.com/api-keys
- MCP Protocol: modelcontextprotocol.io
Contributing
Contributions are welcome! Please see CONTRIBUTING.md for guidelines.
License
MIT — see LICENSE for details.