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.
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 were renamed in v2.2.0 from flat names (publish, schedule) to prefixed ones (post_publish, post_schedule), so older prompts and n8n nodes that use the flat names need updating.
Setup effort
One command plus a key — npx @automatelab/content-distribution-mcp, then supply credentials