
Content Distribution
io.github.AutomateLab-techPublished by GitHub account AutomateLab-techv2.2.1Updated Oct 24, 2026
Publish content to DEV.to, Hashnode, GitHub Discussions, Reddit, Bluesky, LinkedIn, and Medium.
The publisher's own server: Distribution
Overview
A local MCP server that publishes one piece of content to DEV.to, Hashnode, GitHub Discussions, Reddit and Bluesky, with browser fallbacks for LinkedIn, Medium,
- What you can do
- Publish or schedule per-channel content variants to DEV.to, Hashnode, GitHub Discussions, Reddit and Bluesky, with idempotent retries on the same content ID and channel. Drain scheduled posts that are due, and check per-channel status for a content piece or channel. Unpublish or best-effort delete posts, with behavior varying by platform. Look up channel hints such as character limits, Markdown support and tag vocabularies. List configured distribution profiles and subreddit catalog entries with cooldowns, flair options and last-posted dates. For LinkedIn, Medium and Twitter/X it returns a needs_browser result with a compose URL instead of posting.
- When to use it
- Use it when you write content once and want an assistant to adapt and distribute it across several developer and social channels, or to queue posts on a schedule and track where each one went live. It suits repeat publishing workflows driven from an MCP host or cron rather than one-off manual posting.
- Requirements
- Runs locally over stdio via npx, requiring Node.js 18 or later. Credentials are read from a profile file in the distribution state directory, or from environment variables: DEV_TO_API_KEY, HASHNODE_TOKEN and HASHNODE_PUBLICATION_ID, GITHUB_TOKEN and GITHUB_DISCUSSION_REPO, Reddit client ID, secret, username and password, and BLUESKY_IDENTIFIER with BLUESKY_PASSWORD. Only set credentials for channels you use. Desktop only.
Installation
In SourceWeft
- Open Content Distribution in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
content-distribution-mcp
Publish your content everywhere—without rewriting for every platform.
A MCP server that distributes a single piece of content across 8+ channels (DEV.to, Hashnode, GitHub Discussions, Reddit, Bluesky, LinkedIn, Medium, Twitter) with automatic platform-specific adaptation, idempotent publishing, per-community anti-spam rules, and centralized state management.
The Problem It Solves
Creating and publishing content at scale is friction-heavy:
- Different formats: Reddit strips formatting, Twitter has character limits, DEV.to supports embeds and rich media. Each needs customized copy.
- Platform rules: Subreddits enforce cooldowns and flair requirements. Communities have posting patterns and automoderator gates. LinkedIn suppresses external links.
- State chaos: Which posts went live where? What if a publish fails halfway? Did that Reddit post get auto-removed by spam filters?
This MCP handles distribution complexity. Write your core message once, generate platform-specific variants, publish everywhere safely.
How It Works
- Your agent generates channel-specific copy variants (rewritten titles, trimmed text, platform-appropriate tags, audience-matched tone).
- This MCP publishes each variant with idempotency, OAuth, API retries, and scheduling—enforcing platform constraints automatically.
- You control which platforms get what. The MCP returns per-channel hints (character limits, tag vocabularies, cooldowns) but leaves creative decisions to you.
No LLM calls inside. No walled-in agents. Just a clean API for multi-platform content distribution at scale.
Install
Or add it permanently to your MCP host.
Wire into your MCP host
Claude Code — add to .claude/mcp.json:
Claude Desktop — add to claude_desktop_config.json:
n8n — use the MCP Client node, point it at npx -y @automatelab/content-distribution-mcp over stdio.
Cursor / Windsurf / any MCP host — same npx -y @automatelab/content-distribution-mcp pattern.
Configure credentials
The server reads credentials from a Distribution Profile stored in ~/.distribution-mcp/profiles.yaml:
Only set credentials for channels you intend to use. LinkedIn, Medium, and Twitter/X return needs_browser with a compose URL — no credentials needed.
MCP tool surface
Eight tools, dot-notation names form a navigable tree (post.*, channel.*, profile.*, subreddit.*). Every tool declares an outputSchema (callers can type-check responses) and MCP annotations (read-only / destructive / idempotent / open-world hints). No LLM calls inside the server.
v2.2.0 breaking change. Tools were renamed from flat names (
publish,schedule, ...) to dot-notation (post_publish,post_schedule, ...). Update any prompts, agent skills, or n8n nodes that referenced the old names.
Channels
Example agent call
Idempotency
Re-running post_publish with the same content.id + channel pair returns the existing live_url immediately without making another platform API call. Safe to retry on failure.
Scheduling
Variants with schedule_at (ISO-8601 with timezone, e.g. "2026-05-21T09:00:00+00:00") are stored in ~/.distribution-mcp/scheduled.yaml and fired on the next post_drain call. Run drain from cron:
Or call the post_drain MCP tool directly from an agent.
Environment variables
Requirements
- Node.js 18 or later
Architecture
Works with any MCP client
No Anthropic-specific code anywhere. Verify:
Part of the AutomateLab stack
- agency-os — control plane
- content-distribution-mcp — this package
- automatelab.tech — blog and tutorials
License
MIT
Maintenance and verification
See the maintenance guide for interpretation limits, current tool names where applicable, and reproducible verification.
Source: README.md at commit 72486f9
Tools
0Version history
1- v2.2.1LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts