Skip to main content
Glama
publer-mcp-server

publer-mcp-server

by alexkess

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

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-id

Cloudflare 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_ID

Your 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

PUBLER_API_KEY

Yes

Your Publer API key

PUBLER_WORKSPACE_ID

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/me

Your 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

publer_get_me

Get current authenticated user profile

publer_list_workspaces

List all workspaces

publer_list_accounts

List all connected social accounts

Posts

Tool

Description

publer_list_posts

List and filter posts by state, date, type, account, or search

publer_create_post

Create and schedule a post (text, photo, video, carousel, etc.)

publer_publish_post_now

Publish a post immediately

publer_update_post

Update existing post text/media/scheduling, not labels

publer_delete_post

Delete a post

publer_get_post

Fetch a single post by ID, including its labels

publer_set_post_labels

Attempt existing-post label updates; not for drafts

publer_list_workspace_labels

Discover all labels used in the workspace (best-effort scan)

Media

Tool

Description

publer_upload_media_from_url

Import media from a URL (Dropbox, cloud storage, etc.)

publer_list_media

Browse and search the media library

Jobs

Tool

Description

publer_get_job_status

Poll async job status (post creation, media upload)

Analytics

Tool

Description

publer_get_analytics

Get analytics charts (followers, reach, engagement)

publer_get_post_insights

Get per-post performance metrics

publer_get_hashtag_analysis

Analyse hashtag performance

publer_get_best_times

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:

  1. Call publer_upload_media_from_url with the Dropbox link

  2. Poll publer_get_job_status until the upload completes

  3. Call publer_create_post with 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:

  1. Call publer_list_accounts to find the Instagram account ID

  2. Call publer_get_post_insights with the date range

  3. Present 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:

  1. Call publer_list_accounts to find the target account ID

  2. Call publer_create_post with state: "draft" and labels: ["launch-q3"]

  3. Call publer_get_post after 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 build

Run locally

PUBLER_API_KEY=your-key PUBLER_WORKSPACE_ID=your-id npm start

Supported 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 tools
publer_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

    A3.7/5.0

    Scored across 15 tools

    Disambiguation5/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivityInactive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      C
      maintenance
      MCP server for the Post for Me API, enabling publishing, scheduling, editing, deleting, and analyzing social media posts across 9 platforms from any MCP client.
      27
      223 npm
      1
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      MCP server to manage social media accounts from AI assistants, enabling post creation, scheduling, publishing, and media uploads across multiple platforms.
      13
      11 npm
      1
      MIT
    • A
      license
      Not graded
      quality
      C
      maintenance
      MCP server for Instagram Graph API integration, enabling AI applications to manage Instagram Business accounts: fetch profiles, media, insights, publish content, and handle DMs.
      MIT