·6 min read·MCP, Claude Code

I Built an MCP Server That Lets You Publish Blog Posts from Your Terminal

I got tired of context-switching between Claude Code and five different CMS dashboards. So I built Pipepost — an open-source MCP server that lets you publish articles across platforms, generate social posts, and manage SEO without leaving your terminal.

I write a lot of technical content. And for the last few months, most of that writing happens inside Claude Code. I describe what I want, iterate on the structure, refine the wording — all from a terminal session. It works great.

Then comes the part I dread: publishing.

I copy the markdown. I open Dev.to. I paste it in. I fiddle with the frontmatter. I add tags. I preview it. I fix formatting that broke in the paste. I go back to my terminal to check something. I go back to the browser. I finally hit publish.

Every single time, I lose 15-20 minutes to this ritual. And every single time, I think: why am I leaving my terminal for this?

So I built a tool that means I don't have to.

What I built

Pipepost is an MCP server that lets you publish content directly from Claude Code. Write an article, score it for SEO, and publish it to Dev.to — all without opening a browser.

If you're not familiar with MCP (Model Context Protocol), here's the short version: it's an open standard from Anthropic that lets AI assistants use external tools. Think of it as a plugin system for Claude. You register an MCP server, and Claude gets access to whatever tools that server exposes — in this case, tools for content publishing and SEO analysis.

Pipepost currently exposes nine tools:

ToolWhat it does
seo_scoreAnalyzes readability, keyword density, heading structure
seo_metaGenerates meta titles, descriptions, OG tags
seo_schemaGenerates JSON-LD structured data
publishPublishes to Dev.to, Ghost, Hashnode, WordPress, Medium
generate_social_postsGenerates promotional posts for Twitter, Reddit, Bluesky
list_postsLists your published and draft posts
setupConfigures platform API keys
activateActivates a Pro license
statusShows your current config and usage

The seo_score and publish tools are available on the free tier. That covers the core workflow: write, check, publish.

How it works in practice

Installation

Add Pipepost to your Claude Code config (~/.claude/settings.json):

// ~/.claude/settings.json
"mcpServers": {
"pipepost": {
"command": "npx",
"args": ["-y", "pipepost-mcp"]
}
}

That's it. Next time you start Claude Code, the Pipepost tools are available.

Set up your Dev.to API key

Just ask Claude:

you: "Set up my Dev.to API key: dv1_abc123..."

Claude calls the setup tool, and your key gets saved locally to ~/.pipepost/config.json. It never leaves your machine.

Score your content for SEO

Say you've just written an article about building CLI tools in Node. Before publishing, you want to know if it's optimized:

you: "Score this article for SEO targeting ‘node cli tools’"

Pipepost runs a Flesch-Kincaid readability analysis, checks your keyword density, validates your heading structure, and returns a composite score with actionable suggestions.

The score factors in word count, readability sweet spot (50-80 Flesch-Kincaid is ideal), keyword density (targeting 0.5-2.5%), and heading structure. It's not trying to replace Ahrefs — it's a quick sanity check before you hit publish.

Publish

you: "Publish this article to Dev.to as a draft with tags: node, cli, javascript"

Claude calls the publishtool and your article is now a draft on Dev.to. Open the URL, do a final review, and publish when you're ready.

The whole flow — from finished markdown to draft on Dev.to — takes about 10 seconds.

Generate social posts

Now that the article is published, generate promotion:

you: "Generate social posts for Twitter, Reddit, and Bluesky"

Pipepost creates platform-native copy for each — a punchy Twitter thread, a discussion-friendly Reddit post, and a clean Bluesky post. No generic one-size-fits-all blasts.

Under the hood

Pipepost is a Node.js process that communicates with Claude Code over STDIO transport. When Claude Code starts, it spawns the MCP server as a child process. They talk back and forth over stdin/stdout using the MCP protocol.

The stack is intentionally minimal:

  • @modelcontextprotocol/sdk— Anthropic's official TypeScript SDK for building MCP servers
  • zod— Schema validation for every tool input
  • tsup— Bundles everything into a single distributable file

That's the entire dependency list. No Express, no database, no runtime dependencies beyond those three.

Credentials are stored in ~/.pipepost/config.json on your local filesystem. Nothing gets sent anywhere except the specific API calls you trigger (like publishing to Dev.to).

Free vs Pro

I wanted this to be genuinely useful without paying anything. Here's how the tiers break down:

  • Free— Dev.to publishing, 3 articles per month, basic SEO
  • Starter ($9/mo)— Unlimited publishes to Dev.to, full SEO suite
  • Pro ($19/mo)— All 5 CMS platforms, social posts, full SEO

What's next

More social platforms.LinkedIn, Threads, and Mastodon support are planned. Same idea — platform-native copy, not generic blasts.

Content analytics.Track how your articles perform across platforms. Views, reactions, comments — all surfaced inside your terminal.

Content repurposing. Turn a long article into a Twitter thread, a newsletter intro, or a LinkedIn post automatically. One piece of content, many formats.

Try it

If you use Claude Code and publish content, give it a shot:

View on GitHub

It's MIT licensed and open source. If you run into issues or have ideas, open an issue.