Purpose
content-distribution-mcp is an MCP (Model Context Protocol) server used to distribute a single piece of content to multiple platforms at the same time. It solves the problems of duplicated effort and messy status tracking when publishing across platforms: different platforms have their own requirements for formatting, word count, tags, and posting frequency, and manually rewriting and tracking publishing status is very tedious. This tool lets you write the core content only once, have your AI agent generate platform-specific variants, and then have this MCP safely complete the publishing.
Main Capabilities
- Multi-platform coverage: Automatically publishes to DEV.to, Hashnode, GitHub Discussions, Reddit, and Bluesky; for Medium, LinkedIn, and X/Twitter it uses a browser fallback (returns needs_browser and a compose URL, no credentials required).
- Platform adaptation: Supports automatic platform-specific adaptation (such as title rewriting, text trimming, platform-appropriate tags, and audience-matched tone), but the specific creative choices are up to you or your agent.
- Idempotent state management: When post_publish is called repeatedly with the same content id and channel pairing, it directly returns the existing live_url and does not call the platform API again, so failures can be safely retried.
- Scheduled publishing: Supports schedule_at (ISO-8601 with time zone, such as "2026-05-21T09:00:00+00:00"); tasks are stored in ~/.distribution-mcp/scheduled.yaml and triggered via post_drain.
- Community anti-spam rules: Built-in rules for each community (such as subreddit) including cooldowns and flair requirements.
- MCP toolset: Provides 8 tools, using dot naming to form a navigable tree (post., channel., profile., subreddit.), with each tool declaring an outputSchema and MCP annotations (read-only/destructive/idempotent/open-world hints). The server itself makes no LLM calls.
How to Use
Installation and connecting to an MCP host:
- Claude Code: Add to .claude/mcp.json
- Claude Desktop: Add to claude_desktop_config.json
- n8n: Use the MCP Client node, pointing via stdio to npx @automatelab/content-distribution-mcp
- Cursor / Windsurf / any MCP host: Use the same npx -y content-distribution-mcp pattern
Configure credentials:
The server reads credentials from the Distribution Profile in ~/.distribution-mcp/profiles.yaml. You only need to set credentials for the channels you intend to use. LinkedIn, Medium, and Twitter/X return needs_browser and a compose URL, so no credentials are required.
Scheduled publishing:
You can run post_drain via cron, or have the agent call the post_drain MCP tool directly.
Environment requirements: Node.js 18 or later, compatible with any MCP client, with no Anthropic-specific code.
Version note (v2.2.0 breaking change): Tool names changed from flat names (publish, schedule, etc.) to dot naming (post_publish, post_schedule, etc.). Prompts, agent skills, or n8n nodes that reference the old names need to be updated.
Use Cases
- Technical bloggers and content creators need to distribute one piece of content to multiple community platforms.
- Use an AI agent to automatically generate platform-specific copy, then use this MCP to complete batch, idempotent publishing.
- Multi-platform operations that need to comply with each community's publishing rules (cooldowns, flair requirements).
Limitations
- The server itself does not generate content and does not make LLM calls; copy variants must be provided by your agent or a human.
- For Medium, LinkedIn, and X/Twitter it only provides a browser fallback (returns a compose URL) and does not directly auto-publish.
- Requires a Node.js 18 or later environment.
- Starting with v2.2.0, tool names changed to dot naming, and the old names no longer apply.
- Depends on the configuration file ~/.distribution-mcp/profiles.yaml to provide credentials; channels that are not configured cannot be used.