Labsco
MCP SERVER

Content Distribution MCP

by AutomateLab-tech

Publish one piece of writing to DEV.to, Hashnode, GitHub Discussions, Reddit and Bluesky in per-channel variants — idempotent, schedulable, with subreddit cooldowns respected.

Social Media Accounts & PostingVerified
Summary
Cross-posting that remembers what it already posted.

Idempotency on the content id and channel pair is the feature that makes this safe to hand to an agent: a run that dies halfway can simply be run again, and the pairs that already went out are skipped rather than duplicated. The division of labour is deliberate too — it hands back each channel's limits and tag vocabulary and leaves the rewriting to you, which is why three channels it cannot authenticate against return a compose URL instead of pretending to publish.

What it is

A distribution layer, not a writer. Your agent produces the variant for each channel; this server publishes them, tracks what went where in a local store, and enforces the platform rules — character limits, tag vocabularies, subreddit cooldowns. It makes no model calls of its own.

What you get
  • Immediate publishing of one or many channel variants, idempotent on the content id and channel pair, so a re-run after a partial failure does not double-post
  • Scheduling: variants carrying a scheduled time are queued and the rest go out now, with a drain call that fires everything due at or before a moment you name — the call a cron job makes
  • Publish state per content piece or per channel, read-only and needing no credentials, for answering what actually went live
  • Best-effort removal of a published post — on DEV.to the post is switched back to draft rather than deleted, and platforms with no delete API report failure instead of erroring
  • Per-channel metadata before you write: character limits, whether Markdown survives, the tag vocabulary and where the call to action belongs
  • The subreddit catalogue with cooldown windows, flair vocabulary and when each was last posted to, optionally narrowed to what a profile is allowed to post in
  • The distribution profiles configured on the machine, so an agent can discover which one to publish under
Requirements

Credentials live in a distribution profile at ~/.distribution-mcp/profiles.yaml, and only for the channels you actually use: DEV_TO_API_KEY for DEV.to; HASHNODE_TOKEN with HASHNODE_PUBLICATION_ID; GITHUB_TOKEN with GITHUB_DISCUSSION_REPO; REDDIT_CLIENT_ID, REDDIT_CLIENT_SECRET, REDDIT_USERNAME and REDDIT_PASSWORD; BLUESKY_IDENTIFIER with BLUESKY_PASSWORD. LinkedIn, Medium and Twitter/X take no credentials at all — those channels answer with needs_browser and a compose URL for you to finish by hand. It starts over stdio as npx -y @automatelab/content-distribution-mcp, and the same YAML backend holds the schedule and publish state. Tool names changed to their dotted form in v2.2.0, so older prompts and n8n nodes referencing the flat names need updating.

Setup effort

One command plus a key — npx @automatelab/content-distribution-mcp, then supply credentials