Hashnode MCP Server v2.0
Provides tools for managing Hashnode blog articles, including publishing, updating, deleting, searching, and listing articles, as well as managing publications and tags through the Hashnode API.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Hashnode MCP Server v2.0List my recent articles"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
🚀 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 |
| Verify API token works |
| Show your publications and IDs |
Article Management
Tool | Purpose |
| Publish immediately with tags, cover image |
| Save as draft |
| Edit existing posts |
| Delete permanently |
| Get full article details |
Discovery
Tool | Purpose |
| List your publication's articles |
| Get articles by username |
| Search across Hashnode |
| Get publication info |
🚀 Deploy on Zeabur
Step 1: Get Hashnode Credentials
Personal Access Token (PAT):
Click "Generate new token"
Copy the token
Publication ID (optional - can use per-tool instead):
Go to your blog dashboard
Copy ID from URL:
https://hashnode.com/{PUBLICATION_ID}/dashboardOr use
list_publicationstool after deployment
Step 2: Deploy
Fork/clone this repo and push to GitHub
Go to Zeabur Dashboard
Create Project → Deploy from GitHub
Select your repo
Add Environment Variables (optional but recommended):
Variable
Value
Required
HASHNODE_PERSONAL_ACCESS_TOKENYour PAT
✅ Yes
HASHNODE_PUBLICATION_IDYour publication ID
❌ No (can use per-tool)
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.jsonmacOS:
~/Library/Application Support/Claude/claude_desktop_config.json
Cline VSCode:
Windows:
%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.jsonmacOS:
~/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 |
| string | ✅ | Article title |
| string | ✅ | Article content in Markdown |
| string | ❌ | Optional subtitle |
| string[] | ❌ | Array of tag names (auto-converted to lowercase-slug) |
| string | ❌ | URL for cover image |
| 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 usernamepage(optional) - Page number, default 1
search_articles:
query(required) - Search querylimit(optional) - Results to return (1-20), default 10
list_my_articles:
limit(optional) - Number of articles (1-50), default 10publication_id(optional) - Override default publication
get_publication:
host(required) - Publication host/domain
⚠️ Error Messages & Fixes
"Publication ID is required"
Fix: Either:
Set
HASHNODE_PUBLICATION_IDenv var in Zeabur, ORPass
publication_idparameter 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
Check Zeabur logs for startup errors
Verify
HASHNODE_PERSONAL_ACCESS_TOKENis setTest with
test_connectiontool 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
Never commit
.envfile - It's in.gitignoreUse Zeabur's encrypted variables - They store secrets securely
Rotate PAT regularly - Regenerate in Hashnode settings if compromised
Restrict publication access - Only give necessary permissions
📚 Useful Links
📄 License
MIT License - feel free to use for personal or commercial projects!
Made with ❤️ for the Hashnode community
This server cannot be installed
Maintenance
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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