Blogcast MCP
No description available
Ask AI about Blogcast MCP
Powered by Claude Β· Grounded in docs
I know everything about Blogcast MCP. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
BlogCast MCP
One post. Every platform. Powered by Notion + Claude.
BlogCast MCP is an open-source Model Context Protocol server that turns Notion into a headless CMS and publishing hub. Write once in the dashboard or in Notion, then use Claude (or the dashboard) to publish simultaneously to Dev.to, Hashnode, Medium, and more.
What's Inside
| Package | Description | Port |
|---|---|---|
mcp/ | MCP server β Claude integration layer | stdio |
server/ | Express.js backend β publishing, images, scheduling, AI | 3001 |
client/ | React dashboard β write posts, publish, manage platforms | 5173 |
Quickstart
Prerequisites
- Node.js 20+, npm 10+
- A Notion account with API access
- Claude Desktop (for MCP tools) β optional if you only use the dashboard
1. Clone & install
git clone https://github.com/thecodedaniel/blogcast-mcp.git
cd blogcast
npm install
2. Run everything
npm run dev # starts server (3001) + client (5173)
Or run individually:
npm run dev:server # Express backend only
npm run dev:client # React dashboard only
npm run dev:mcp # MCP server only (for testing)
3. Open the dashboard
Navigate to http://localhost:5173 β the Settings page will guide you through:
- Notion integration β API key + database IDs
- Platform credentials β Dev.to, Hashnode, Medium API keys
- AI features β Anthropic API key (optional, unlocks smart pre-publish checks)
- Claude Desktop β one-click auto-configure (no manual JSON editing)
First run: Once you add your Notion credentials, BlogCast automatically sets up all required database columns (idempotent β safe to re-run at any time).
4. Set up Notion
- Go to notion.so/my-integrations and create a new integration
- Create two databases in Notion: BlogCast Posts and BlogCast Analytics
- Share both databases with your integration (open each DB β β― β Connections β add your integration)
- Copy the database IDs from the page URLs (the 32-char string after the last
/) - Add both IDs in
localhost:5173/settings
BlogCast will automatically add all required columns to both databases on first run.
5. Build the MCP server (for Claude Desktop)
npm run build:mcp
Then in Settings, click "Connect Claude Desktop" β BlogCast will auto-configure claude_desktop_config.json for you.
Or add manually to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"blogcast": {
"command": "node",
"args": ["/absolute/path/to/blogcast/mcp/dist/index.js"],
"env": {
"BACKEND_URL": "http://localhost:3001"
}
}
}
}
Writing Posts
Option A β In the Dashboard (recommended)
- Click Write in the sidebar
- Type your title and write your post using the rich text editor
- Full toolbar: bold, italic, headings, inline code, code blocks with syntax highlighting (TypeScript, Python, Dart, Go, Rust, and 20+ more languages)
- Live Preview mode toggle
- Add tags, excerpt, and choose target platforms in the right sidebar
- Click Save Draft (saves to Notion) or Save & Publish (saves + publishes immediately)
Option B β In Notion directly
- Open your BlogCast Posts database in Notion
- Click + New and write your post content inside the page
- Fill in the properties: Title, Tags, Publish To, Excerpt
- Set Status to Draft β it appears in the dashboard automatically
Publishing
Via the Dashboard
- Write β Save & Publish β write and publish in one step
- Posts β click any post β redirects to Publish page β choose platforms β click Publish
Via Claude (MCP)
"Show me my draft posts"
"Preview my latest Notion draft"
"Publish my post about TypeScript to Dev.to and Hashnode"
"What's the status of my last post?"
"Schedule my React post for tomorrow at 9am UTC on all platforms"
"Add my Hashnode API key"
"Sync analytics for my last 5 posts"
MCP Tools
| Tool | Description |
|---|---|
list_drafts | List posts by status (Draft, Review, Scheduled, all) |
preview_post | Fetch post content as Markdown without publishing |
publish_post | Publish to Dev.to + Hashnode + Medium (with image handling) |
get_publish_status | Check publish status + analytics per platform |
schedule_post | Set a scheduled publish time on a post |
sync_analytics | Pull latest views/reactions/comments into Notion |
manage_platforms | Add/remove/test platform API credentials |
AI Features
When an Anthropic API key is configured (Settings β AI Features):
| Feature | Where |
|---|---|
| Pre-publish check | Publish page β AI reviews title, tags, content quality before publishing |
| Excerpt & tag generation | Write page (Generate button) + Publish page |
| Per-platform content adaptation | Auto-applied on publish β Medium gets optimized HTML, Dev.to/Hashnode get Markdown tweaks |
AI features are fully optional and degrade gracefully β publishing works normally without an Anthropic key.
Architecture
Notion Workspace (CMS + Analytics DB)
β Notion API
βΌ
BlogCast MCP Server (stdio, Claude integration)
β HTTP
βΌ
Express Backend (localhost:3001)
βββ Publishers: Dev.to, Hashnode, Medium (draft)
βββ AI service (Anthropic SDK β pre-publish checks, content adaptation)
βββ Image service (download β cache β re-upload)
βββ Format service (Markdown β HTML)
βββ Auth vault (encrypted local credentials)
βββ Setup service (Notion DB auto-migration on startup)
βββ Scheduler (auto-publish at scheduled time)
β
βΌ
Local Storage (./storage/)
βββ images/ β cached images with deduplication
βββ queue/ β pending publish jobs
βββ logs/ β winston logs
React Dashboard (localhost:5173)
βββ Write β TipTap rich text editor with syntax-highlighted code blocks
βββ Posts β list, search, filter all posts from Notion
βββ Publish β select post + platforms + AI pre-publish check
βββ Platforms β add/remove/test API keys
βββ Settings β Notion config, AI config, Claude Desktop auto-connect
Image Handling
Notion CDN URLs expire after ~1 hour. BlogCast handles this transparently:
- Images are downloaded from Notion and cached locally in
storage/images/ - Each image is hashed by URL (SHA-256) for deduplication
- On publish, images are uploaded to each platform's CDN
- Platform CDN URLs are cached so re-publishing doesn't re-upload
Notion Database Schema
Posts DB (BlogCast Posts)
| Property | Type |
|---|---|
| Title | Title |
| Slug | Text |
| Status | Select: Draft / Review / Scheduled / Published / Failed / Archived |
| Publish To | Multi-select: devto, hashnode, medium |
| Scheduled At | Date |
| Tags | Multi-select |
| Canonical URL | URL |
| Cover Image | Files |
| Excerpt | Text |
| Published At | Date |
| Word Count | Number |
| Last Synced | Date |
Analytics DB (BlogCast Analytics)
| Property | Type |
|---|---|
| Name | Title |
| Post | Relation β Posts DB |
| Platform | Select |
| Status | Select: Success / Failed / Pending |
| Published URL | URL |
| Error Message | Text |
| Published At | Date |
| Reactions | Number |
| Page Views | Number |
| Comments | Number |
All columns are auto-created when you first configure Notion credentials. No manual database setup required.
Environment Variables
Almost nothing needs to go in .env. All credentials and settings are configured through the Settings page (localhost:5173/settings) and stored encrypted on your local machine.
The only optional env vars are:
| Variable | Default | Purpose |
|---|---|---|
PORT | 3001 | Backend server port |
STORAGE_PATH | ./storage | Local storage for images, queue, logs |
LOG_LEVEL | info | Logging verbosity |
BACKEND_URL | http://localhost:3001 | MCP server β backend URL |
NOTION_API_KEY | (from Settings) | CI/Docker override |
NOTION_POSTS_DB_ID | (from Settings) | CI/Docker override |
NOTION_ANALYTICS_DB_ID | (from Settings) | CI/Docker override |
ANTHROPIC_API_KEY | (from Settings) | CI/Docker override |
See .env.example for the template.
Supported Platforms
| Platform | Status | Notes |
|---|---|---|
| Dev.to | β Full support | |
| Hashnode | β Full support | |
| Medium | β Draft support | Medium API only allows draft publishing β publish manually from your Medium dashboard |
| π v1.1 | ||
| Ghost | π v2.0 | |
| WordPress | π v2.0 |
License
MIT β built with β€οΈ by THECODEDANIEL LIMITED
