publer-mcp-server
This server provides an MCP interface to Publer's social media management API, enabling AI assistants to automate and manage social media activities across multiple platforms.
Account & Workspace Management: Get user profile, list workspaces, and list connected social accounts (Facebook, Instagram, X, LinkedIn, TikTok, YouTube, Bluesky, etc.).
Post Management: Create and schedule posts with text, photos, videos, carousels, links, and more—either immediately, at a specific time, or as drafts. Update or delete posts, list and filter posts by state, date, account, type, or search. Get a single post's details and manage labels (set labels, list workspace labels).
Media Management: Upload media from a URL and browse/search the media library by type or name.
Async Job Polling: Check the status of long-running operations like post creation and media uploads.
Analytics & Insights: Retrieve charts for followers, reach, and engagement; view per-post performance metrics; analyze hashtag effectiveness; and get best times to post based on audience activity.
Enables scheduling, publishing, and managing posts on Bluesky via the Publer API.
Allows uploading media from Dropbox URLs to the Publer media library for use in posts.
Supports posting, scheduling, and analytics for Facebook pages and profiles.
Enables scheduling and publishing posts, including photos and videos, on Instagram.
Allows creating and scheduling posts for Mastodon accounts.
Enables pin scheduling and publishing on Pinterest boards.
Supports posting messages and media to Telegram channels and groups.
Allows scheduling and publishing posts on Threads via the Publer integration.
Enables video posting, scheduling, and analytics for TikTok accounts.
Supports publishing and scheduling blog posts to WordPress sites.
Allows video uploads, scheduling, and analytics for YouTube channels.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@publer-mcp-server Schedule a photo post to Facebook and Twitter for next Monday"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Publer MCP Server
An open-source Model Context Protocol (MCP) server for the Publer social media management API.
Schedule posts, upload media, pull analytics, and manage accounts across 15+ social networks — all from your AI assistant.
Created by Kess Media
Features
18 tools covering the full Publer API
Create, schedule, publish, update, and delete posts
Upload media via URL (perfect for Dropbox/cloud storage integration)
Browse and search media library
Analytics: charts, post insights, hashtag analysis, best times to post
Multi-account posting across Facebook, Instagram, X, LinkedIn, TikTok, YouTube, Bluesky, and more
Async job polling for post creation and media uploads
Related MCP server: postforme-mcp-pro
Requirements
Node.js 18+
Publer Business plan (API access is Business-only)
Publer API key (Settings → Access & Login → API Keys)
Quick Start
Claude Desktop App / Claude Code Desktop (Mac)
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"publer": {
"command": "npx",
"args": ["-y", "publer-mcp-server"],
"env": {
"PUBLER_API_KEY": "your-api-key-here",
"PUBLER_WORKSPACE_ID": "your-workspace-id-here"
}
}
}
}Restart the app — Publer will appear under Connectors → Desktop.
Claude Code (CLI)
Add to ~/.claude/mcp.json:
{
"mcpServers": {
"publer": {
"command": "npx",
"args": ["-y", "publer-mcp-server"],
"env": {
"PUBLER_API_KEY": "your-api-key-here",
"PUBLER_WORKSPACE_ID": "your-workspace-id-here"
}
}
}
}Or via the CLI:
claude mcp add publer -- npx -y publer-mcp-server \
--env PUBLER_API_KEY=your-key \
--env PUBLER_WORKSPACE_ID=your-workspace-idCloudflare Worker (Remote — No Local Install)
Deploy as a Cloudflare Worker and connect from any Claude interface without installing anything locally. One deployment, multiple users.
Deploy:
git clone https://github.com/alexkess/publer-mcp-server.git
cd publer-mcp-server/worker
npm install
npx wrangler deploy
npx wrangler secret put PUBLER_API_KEY
npx wrangler secret put PUBLER_WORKSPACE_IDYour server is now live at https://publer-mcp.<your-subdomain>.workers.dev/mcp.
Connect from Claude Code (~/.claude/mcp.json):
{
"mcpServers": {
"publer": {
"type": "http",
"url": "https://publer-mcp.<your-subdomain>.workers.dev/mcp"
}
}
}Connect from Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):
The Desktop app's Connectors UI doesn't support custom HTTP MCP servers directly. Use the Claude Code config above, or add the URL via the custom connector flow in Settings → Connectors → +.
Security note: The Worker URL acts as your access credential — keep it private. Each user deploys their own Worker with their own Publer API key, so there's no shared access risk.
Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"publer": {
"command": "npx",
"args": ["-y", "publer-mcp-server"],
"env": {
"PUBLER_API_KEY": "your-api-key-here",
"PUBLER_WORKSPACE_ID": "your-workspace-id-here"
}
}
}
}Environment Variables
Variable | Required | Description |
| Yes | Your Publer API key |
| Yes | Your Publer workspace ID |
Finding Your Workspace ID
Option 1: From the API
curl -H "Authorization: Bearer-API YOUR_API_KEY" https://app.publer.com/api/v1/meYour workspace IDs are in the workspaces array in the response.
Option 2: From the Publer URL
Log in to Publer, open your browser's developer tools (F12), go to the Network tab, and look for any API request — the Publer-Workspace-Id header shows your workspace ID.
Available Tools
Account Management
Tool | Description |
| Get current authenticated user profile |
| List all workspaces |
| List all connected social accounts |
Posts
Tool | Description |
| List and filter posts by state, date, type, account, or search |
| Create and schedule a post (text, photo, video, carousel, etc.) |
| Publish a post immediately |
| Update existing post text/media/scheduling, not labels |
| Delete a post |
| Fetch a single post by ID, including its labels |
| Attempt existing-post label updates; not for drafts |
| Discover all labels used in the workspace (best-effort scan) |
Media
Tool | Description |
| Import media from a URL (Dropbox, cloud storage, etc.) |
| Browse and search the media library |
Jobs
Tool | Description |
| Poll async job status (post creation, media upload) |
Analytics
Tool | Description |
| Get analytics charts (followers, reach, engagement) |
| Get per-post performance metrics |
| Analyse hashtag performance |
| Get best times to post heatmap |
Example Workflows
Schedule a photo post
"Upload this image from my Dropbox to Publer, then schedule it
to my Alex Kess Bluesky account for Thursday at 10am AEST
with the caption 'Cronulla from above.'"The AI assistant will:
Call
publer_upload_media_from_urlwith the Dropbox linkPoll
publer_get_job_statusuntil the upload completesCall
publer_create_postwith the media ID, caption, account ID, and scheduled time
Check post performance
"How did my posts perform last week on Instagram?"The AI assistant will:
Call
publer_list_accountsto find the Instagram account IDCall
publer_get_post_insightswith the date rangePresent the results
Label posts for a campaign
"Create a draft post for next month's launch and label it 'launch-q3'."The AI assistant will:
Call
publer_list_accountsto find the target account IDCall
publer_create_postwithstate: "draft"andlabels: ["launch-q3"]Call
publer_get_postafter the async job completes to inspect the saved labels
Publer documents labels on create/schedule requests. Existing draft labels are not updatable via the documented API; live tests showed label update payloads return success but do not persist. To relabel an existing draft, ask the user before recreating it with labels and deleting the original, because that changes the post ID and may not preserve every internal Publer field.
Development
git clone https://github.com/alexkess/publer-mcp-server.git
cd publer-mcp-server
npm install
npm run buildRun locally
PUBLER_API_KEY=your-key PUBLER_WORKSPACE_ID=your-id npm startSupported Networks
Facebook, Instagram, X (Twitter), LinkedIn, Pinterest, YouTube, TikTok, Google Business Profile, WordPress, Telegram, Mastodon, Threads, Bluesky.
License
MIT — see LICENSE
Contributing
PRs welcome! This is an open-source project by Kess Media.
Available Tools
15 toolspubler_create_postA
Create and schedule a social media post. Supports text, photo, video, link, carousel, reel, story, and more. Posts are created asynchronously — returns a job_id to poll for status. Media must be pre-uploaded using upload_media or upload_media_from_url first.
Inputs: text (required), state (required), account_ids (required), url, +6 more.
publer_delete_postB
Delete a post by its ID.
Inputs: post_id (required).
publer_get_analyticsB
Get analytics charts for a social account (followers, reach, engagement over time).
Inputs: account_id (required), to, from.
publer_get_best_timesB
Get the best times to post for maximum engagement — returns a day/hour heatmap.
Inputs: account_id (required), to, from.
publer_get_hashtag_analysisC
Get hashtag performance analysis — which hashtags drive the most engagement.
Inputs: account_id (required), to, from.
publer_get_job_statusA
Poll the status of an async Publer job (post creation, media upload). Returns working, complete, or failed.
Inputs: job_id (required).
publer_get_meA
Get the current authenticated Publer user profile
Inputs: no named parameters.
publer_get_post_insightsB
Get per-post performance metrics (reach, engagement, clicks) for a social account.
Inputs: account_id (required), to, from, page.
publer_list_accountsA
List all connected social media accounts (Facebook, Instagram, X, LinkedIn, TikTok, YouTube, Bluesky, etc.)
Inputs: no named parameters.
publer_list_mediaC
Browse the Publer media library. Filter by type (photo, video, gif), usage status, source, or search by name.
Inputs: page, types, search.
publer_list_postsB
List and filter social media posts. Filter by state (scheduled, published, draft, failed), date range, account, post type (photo, video, carousel, reel, story), or search by content text.
Inputs: to, from, page, query, +3 more.
publer_list_workspacesA
List all workspaces in the Publer account
Inputs: no named parameters.
publer_publish_post_nowA
Publish a post immediately across selected accounts. Returns a job_id.
Inputs: text (required), account_ids (required), url, type, +1 more.
publer_update_postB
Update an existing post's text, media, or scheduling.
Inputs: post_id (required), text, media_ids, scheduled_at.
publer_upload_media_from_urlA
Upload media to Publer from a URL (e.g. a Dropbox shared link, public image URL). Returns a job_id for async processing. Poll with get_job_status to get the media ID for use in posts.
Inputs: url (required), name (required), caption, in_library.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Each tool targets a distinct action and resource (e.g., hashtag analysis, best times, user profile, workspaces, accounts, posts CRUD, media, job status, analytics, post insights). No two tools have overlapping purposes, ensuring an agent can clearly differentiate them.
All tools follow a consistent 'publer_verb_noun' pattern (e.g., publer_list_posts, publer_create_post, publer_upload_media_from_url). The naming convention is uniform and predictable across the entire toolset.
With 15 tools, the set is well-scoped for a social media management server. It covers essential operations like user management, workspace/account listing, full post lifecycle, media handling, analytics, and async job polling without unnecessary bloat or gaps.
The tool surface covers core workflows: authentication, workspace/account management, post CRUD with scheduling and immediate publishing, media upload, analytics, and hashtag insights. A minor gap is the lack of a direct 'get post by ID' tool, but filtering with publer_list_posts mitigates this.
Maintenance
Related MCP Connectors
Agent-first social media publishing, scheduling, analytics, and unified inbox API + 16-tool MCP server across 18 social platforms (X, LinkedIn, Instagram, YouTube, TikTok, Threads, Bluesky, Reddit, Telegram, Discord, Mastodon, Facebook, Pinterest).
PostHero MCP server — schedule and publish social media posts from any MCP-compatible AI tool
Connect any AI agent to 11+ social platforms: schedule, publish & track posts via hosted MCP.
MCP server for QPost — lets AI agents publish video and image posts to YouTube, TikTok, Instagram.
Related MCP Servers
- AlicenseBqualityBmaintenanceMCP server for Instagram Graph API, Threads API & Meta platform — posting, insights, comments, messaging66361 npm32MIT
- AlicenseAqualityCmaintenanceMCP server for the Post for Me API, enabling publishing, scheduling, editing, deleting, and analyzing social media posts across 9 platforms from any MCP client.27223 npm1MIT
- AlicenseAqualityCmaintenanceMCP server to manage social media accounts from AI assistants, enabling post creation, scheduling, publishing, and media uploads across multiple platforms.1311 npm1MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Instagram Graph API integration, enabling AI applications to manage Instagram Business accounts: fetch profiles, media, insights, publish content, and handle DMs.MIT