Skip to main content
MCP server CX Codex

content-distribution — Claude Code MCP server: post to 8 channels

Takes one piece of writing and pushes prepared variants to DEV.to, Hashnode, Reddit, Bluesky and more, with retries and a post log.

Install into Claude Code · Platform CLI All methods and platforms ↓
claude mcp add content-distribution -e DEV_TO_API_KEY=<DEV_TO_API_KEY> -e HASHNODE_TOKEN=<HASHNODE_TOKEN> -e GITHUB_TOKEN=<GITHUB_TOKEN> -e REDDIT_CLIENT_ID=<REDDIT_CLIENT_ID> -e REDDIT_CLIENT_SECRET=<REDDIT_CLIENT_SECRET> -e REDDIT_PASSWORD=<REDDIT_PASSWORD> -e BLUESKY_PASSWORD=<BLUESKY_PASSWORD> -- npx -y @automatelab/content-distribution-mcp
Open on GitHub

What content-distribution does

The server expects your agent to hand it finished per-channel variants: a rewritten title, a trimmed body, tags that fit the platform. It then publishes each one. There are no model calls inside — just adapters for devto, hashnode, github-discussions, reddit, bluesky and a browser fallback. State lives in YAML files under ~/.distribution-mcp.

Publishing is idempotent on the content.id plus channel pair. Call post_publish again and you get the stored live_url back without a second request to the platform. Variants carrying schedule_at wait in ~/.distribution-mcp/scheduled.yaml until post_drain runs; that call fits a cron job.

Credentials come from a profile in ~/.distribution-mcp/profiles.yaml. LinkedIn, Medium and Twitter/X behave differently: the server answers with needs_browser and a compose URL instead of posting, so no keys are involved. Node.js 18 or newer is required. Version 2.2.0 renamed the tools from flat names (publish, schedule) to dotted ones (post_publish, post_schedule), so any prompt or n8n node still using the old names needs editing.

What it helps with

  • ship one article to several platforms at once
  • produce copy that fits each channel's limits and rules
  • avoid double-posting when an agent run repeats
  • queue posts for later and fire them from cron
  • see which channel already has the piece and its URL

Example prompts for the agent

  • Publish the n8n-webhook-setup article to devto and to the ClaudeAI subreddit
  • Schedule this post for tomorrow at 9 and publish the rest now
  • Show me what has already gone live for this piece and where

How to install content-distribution

Platform CLI

claude mcp add content-distribution -e DEV_TO_API_KEY=<DEV_TO_API_KEY> -e HASHNODE_TOKEN=<HASHNODE_TOKEN> -e GITHUB_TOKEN=<GITHUB_TOKEN> -e REDDIT_CLIENT_ID=<REDDIT_CLIENT_ID> -e REDDIT_CLIENT_SECRET=<REDDIT_CLIENT_SECRET> -e REDDIT_PASSWORD=<REDDIT_PASSWORD> -e BLUESKY_PASSWORD=<BLUESKY_PASSWORD> -- npx -y @automatelab/content-distribution-mcp

Replace <…> with your own values. 8 more environment variables are in the server README

Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more

Questions about content-distribution

How do I install content-distribution in Claude Code?

Run `claude mcp add content-distribution -e DEV_TO_API_KEY=<DEV_TO_API_KEY> -e HASHNODE_TOKEN=<HASHNODE_TOKEN> -e GITHUB_TOKEN=<GITHUB_TOKEN> -e REDDIT_CLIENT_ID=<REDDIT_CLIENT_ID> -e REDDIT_CLIENT_SECRET=<REDDIT_CLIENT_SECRET> -e REDDIT_PASSWORD=<REDDIT_PASSWORD> -e BLUESKY_PASSWORD=<BLUESKY_PASSWORD> -- npx -y @automatelab/content-distribution-mcp`, replacing the environment values with your own.

What does content-distribution do?

It posts prepared variants to DEV.to, Hashnode, GitHub Discussions, Reddit and Bluesky, and for LinkedIn, Medium and Twitter/X it hands back a compose URL. Scheduling and the post log are kept in YAML files.

Do I need credentials for every platform?

No. Fill in only the ones you plan to use — LinkedIn, Medium and Twitter/X need none, since those go through the browser.

Similar MCP servers

All MCP servers for Automation and no-code: n8n, Zapier, Make →

Project sponsors

Companies that keep this analytics open
Gold sponsor

Impressions, clicks and code copies — open statistics. We keep the numbers public for the same reason NeBlask itself is public. Become a sponsor