orm.** 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.
content-distribution-mcp
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
**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
1. **Your agent** generates channel-specific copy variants (rewritten titles, trimmed text, platform-appropriate tags, audience-matched tone).
2. **This MCP** publishes each variant with idempotency, OAuth, API retries, and scheduling—enforcing platform constraints automatically.
3. **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 @automatelab/content-distribution-mcp over stdio.
**Cursor / Windsurf / any MCP host** — same npx -y 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.
| Tool | Purpose |
|---|---|
| post_publish | Immediate publish; idempotent on (content.id, channel) |
| post_schedule | Queue variants for schedule_at, publish the rest immediately |
| post_drain | Fire all scheduled posts due now — run from cron |
| post_status | Per-channel state for a content piece or channel |
| post_unpublish | Best-effort delete (DEV.to sets unpublished; others vary) |
| channel_hints | Per-channel metadata: char limits, Markdown support, tag vocab |