Skip to main content
Glama
rakesh1308

Hashnode MCP Server v2.0

by rakesh1308

🚀 Hashnode MCP Server v2.0

A production-ready Model Context Protocol (MCP) server for Hashnode, deployable on Zeabur. Publish, update, and manage your Hashnode blog via AI assistants from anywhere!

✨ Features

Feature

Description

📝 11 Powerful Tools

Complete CRUD operations for articles

🔧 Flexible Publication ID

Use env var OR pass per-tool

🏷️ Smart Tag Handling

Auto-converts tags to Hashnode format

🖼️ Cover Images

Set cover images via URL

🔍 Search & Discovery

Search across Hashnode

📚 Publication Management

List publications, get details

🗑️ Delete Articles

Remove posts permanently

💡 Smart Errors

Clear error messages with fix hints

Related MCP server: MCP Medium Server

🛠️ Available Tools (11 Total)

Connection & Setup

Tool

Purpose

test_connection

Verify API token works

list_publications

Show your publications and IDs

Article Management

Tool

Purpose

publish_article

Publish immediately with tags, cover image

create_draft

Save as draft

update_article

Edit existing posts

delete_article

Delete permanently

get_article

Get full article details

Discovery

Tool

Purpose

list_my_articles

List your publication's articles

get_user_articles

Get articles by username

search_articles

Search across Hashnode

get_publication

Get publication info

🚀 Deploy on Zeabur

Step 1: Get Hashnode Credentials

  1. Personal Access Token (PAT):

  2. Publication ID (optional - can use per-tool instead):

    • Go to your blog dashboard

    • Copy ID from URL: https://hashnode.com/{PUBLICATION_ID}/dashboard

    • Or use list_publications tool after deployment

Step 2: Deploy

  1. Fork/clone this repo and push to GitHub

  2. Go to Zeabur Dashboard

  3. Create Project → Deploy from GitHub

  4. Select your repo

  5. Add Environment Variables (optional but recommended):

    Variable

    Value

    Required

    HASHNODE_PERSONAL_ACCESS_TOKEN

    Your PAT

    ✅ Yes

    HASHNODE_PUBLICATION_ID

    Your publication ID

    ❌ No (can use per-tool)

  6. Click Deploy

Step 3: Get Your URL

After deployment, copy your URL:

https://your-app-name.zeabur.app/sse

🔌 Connect to AI Assistants

Claude Desktop / Cline Config:

{
  "mcpServers": {
    "hashnode": {
      "url": "https://your-app.zeabur.app/sse"
    }
  }
}

Config file locations:

  • Claude Desktop:

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Cline VSCode:

    • Windows: %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json

    • macOS: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json

Cursor Config:

{
  "mcpServers": {
    "hashnode": {
      "url": "https://your-app.zeabur.app/sse"
    }
  }
}

📖 Usage Examples

First Time Setup

"Test my Hashnode connection"
"List my publications to see their IDs"

Publishing Articles

With default publication (env var set):

"Publish an article titled 'Getting Started with Python' 
with content '# Introduction\n\nPython is great...' 
and tags python, tutorial, beginners"

With specific publication ID:

"Publish to publication ID 'abc123' an article titled 'Advanced GraphQL' 
with tags graphql, api, content: '## GraphQL Tips\n\nHere are tips...'"

With cover image:

"Create a draft titled 'My Post' with cover image 
https://example.com/image.png and tags technology"

Managing Articles

"List my last 20 articles"
"Get article details for post ID 'post_id_here'"
"Update article 'post_id_here' with new title 'Updated Title'"
"Delete article 'post_id_here'"

Discovery

"Search for articles about 'machine learning'"
"Get articles by username 'john_doe'"
"Get publication details for host 'blog.hashnode.dev'"

🔧 Tool Parameters Reference

Common Parameters

Most article tools accept these parameters:

Parameter

Type

Required

Description

title

string

Article title

content_markdown

string

Article content in Markdown

subtitle

string

Optional subtitle

tags

string[]

Array of tag names (auto-converted to lowercase-slug)

cover_image_url

string

URL for cover image

publication_id

string

⚠️

Required if env var not set

Tool-Specific Parameters

update_article:

  • post_id (required) - Article ID to update

delete_article:

  • post_id (required) - Article ID to delete

get_article:

  • post_id (required) - Article ID to fetch

get_user_articles:

  • username (required) - Hashnode username

  • page (optional) - Page number, default 1

search_articles:

  • query (required) - Search query

  • limit (optional) - Results to return (1-20), default 10

list_my_articles:

  • limit (optional) - Number of articles (1-50), default 10

  • publication_id (optional) - Override default publication

get_publication:

  • host (required) - Publication host/domain

⚠️ Error Messages & Fixes

"Publication ID is required"

Fix: Either:

  1. Set HASHNODE_PUBLICATION_ID env var in Zeabur, OR

  2. Pass publication_id parameter to the tool

"Authentication failed"

Fix: Check your HASHNODE_PERSONAL_ACCESS_TOKEN is correct and not expired.

"Tag format invalid"

Fix: Tags are auto-converted, but avoid special characters. Use simple names like "python", "web-development".

"Session not found"

Fix: The MCP session expired. Try the request again.

🐛 Troubleshooting

Connection Issues

  1. Check Zeabur logs for startup errors

  2. Verify HASHNODE_PERSONAL_ACCESS_TOKEN is set

  3. Test with test_connection tool first

400 Errors on Publish

Usually means:

  • Invalid tag format (fixed automatically now)

  • Missing required fields

  • Invalid publication ID

Check the error message - it now includes specific fix instructions!

📁 Project Structure

hashnode-mcp-zeabur/
├── server.js           # Main MCP server (10 tools)
├── package.json        # Node dependencies
├── Dockerfile          # Docker image for Zeabur
├── zeabur.yaml         # Zeabur deployment config
├── .env.example        # Environment template
└── README.md           # This file

🔐 Security Best Practices

  1. Never commit .env file - It's in .gitignore

  2. Use Zeabur's encrypted variables - They store secrets securely

  3. Rotate PAT regularly - Regenerate in Hashnode settings if compromised

  4. Restrict publication access - Only give necessary permissions

📄 License

MIT License - feel free to use for personal or commercial projects!


Made with ❤️ for the Hashnode community

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

View all related MCP servers

Related MCP Connectors

  • Publish Markdown or HTML to a shareable link from your AI assistant. OAuth, no API keys.

  • Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

  • Interact with your HackMD notes and teams seamlessly. Manage your notes, view reading history, and…

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/rakesh1308/hashnode-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server