https://github.com/kieksme/mcp-hashnode
MCP server for the Hashnode GraphQL API — create drafts, publish posts, manage your blog via Claude
https://github.com/kieksme/mcp-hashnode
blog hashnode mcp
Last synced: 21 days ago
JSON representation
MCP server for the Hashnode GraphQL API — create drafts, publish posts, manage your blog via Claude
- Host: GitHub
- URL: https://github.com/kieksme/mcp-hashnode
- Owner: kieksme
- Created: 2026-06-26T13:22:01.000Z (23 days ago)
- Default Branch: main
- Last Pushed: 2026-06-26T14:35:35.000Z (23 days ago)
- Last Synced: 2026-06-26T15:13:12.157Z (23 days ago)
- Topics: blog, hashnode, mcp
- Language: TypeScript
- Homepage:
- Size: 60.5 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Agents: AGENTS.md
Awesome Lists containing this project
README
# @kieksme/mcp-hashnode
[](https://www.npmjs.com/package/@kieksme/mcp-hashnode)
[](https://github.com/kieksme/mcp-hashnode/actions/workflows/release.yml)
MCP server for the [Hashnode](https://hashnode.com) GraphQL API.
Create drafts, publish posts, manage your blog — all via Claude.
> [!IMPORTANT]
> **Hashnode Pro plan required.**
> Since May 2026, Hashnode's GraphQL API is only available to publications on a [Pro plan](https://hashnode.com/settings/billing).
> Free accounts will receive an error. Upgrade at **[hashnode.com/settings/billing](https://hashnode.com/settings/billing)**.
## Tools
| Tool | Description |
|---|---|
| `hashnode_get_me` | Get your profile and publication IDs |
| `hashnode_get_publication` | Get publication info by host |
| `hashnode_list_posts` | List published posts |
| `hashnode_get_post` | Get a single post by slug |
| `hashnode_create_draft` | Create a draft |
| `hashnode_update_draft` | Update an existing draft |
| `hashnode_list_drafts` | List drafts in a publication |
| `hashnode_publish_draft` | Publish a draft → live post |
| `hashnode_publish_post` | Publish directly (no draft step) |
| `hashnode_update_post` | Update a published post |
| `hashnode_delete_post` | Delete a post ⚠️ |
## Setup
### 1. Get your Personal Access Token
Go to [hashnode.com/settings/developer](https://hashnode.com/settings/developer) and click **Generate new token**.
### 2. Install
**Via npx (no install needed — recommended):**
```bash
npx -y @kieksme/mcp-hashnode
```
**Via global install:**
```bash
pnpm add -g @kieksme/mcp-hashnode
```
**Build from source:**
```bash
git clone https://github.com/kieksme/mcp-hashnode.git
cd mcp-hashnode
pnpm install && pnpm run build
```
### 3. Configure your MCP client
#### Claude Desktop
Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
```json
{
"mcpServers": {
"hashnode": {
"command": "npx",
"args": ["-y", "@kieksme/mcp-hashnode"],
"env": {
"HASHNODE_TOKEN": "your-token-here"
}
}
}
}
```
#### Claude Code (CLI)
```bash
claude mcp add hashnode \
--command npx \
--args "-y @kieksme/mcp-hashnode" \
--env HASHNODE_TOKEN=your-token-here
```
#### Cursor
Add to `.cursor/mcp.json` in your project root, or to `~/.cursor/mcp.json` globally:
```json
{
"mcpServers": {
"hashnode": {
"command": "npx",
"args": ["-y", "@kieksme/mcp-hashnode"],
"env": {
"HASHNODE_TOKEN": "your-token-here"
}
}
}
}
```
#### VS Code (GitHub Copilot)
Add to `.vscode/mcp.json` in your workspace:
```json
{
"servers": {
"hashnode": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@kieksme/mcp-hashnode"],
"env": {
"HASHNODE_TOKEN": "your-token-here"
}
}
}
}
```
#### Windsurf
Add to `~/.codeium/windsurf/mcp_config.json`:
```json
{
"mcpServers": {
"hashnode": {
"command": "npx",
"args": ["-y", "@kieksme/mcp-hashnode"],
"env": {
"HASHNODE_TOKEN": "your-token-here"
}
}
}
}
```
## Usage examples
```
"What's my publication ID?"
→ hashnode_get_me
"Create a draft called 'Cloud Security Best Practices' with this content: ..."
→ hashnode_create_draft
"Publish the draft with ID xyz"
→ hashnode_publish_draft
"List my last 10 posts on thinkport.hashnode.dev"
→ hashnode_list_posts
```
## Authentication
Hashnode requires `Authorization: ` (no `Bearer` prefix).
All mutations need the token; most read queries are public.
## Rate limits
- Queries: 20,000 req/min
- Mutations: 500 req/min
## Tags format
Tags must be objects — not plain strings:
```json
[
{ "name": "Cloud Computing", "slug": "cloud-computing" },
{ "name": "DevOps", "slug": "devops" }
]
```
## Releases
This project uses [release-please](https://github.com/googleapis/release-please) for automated releases.
- Commits to `main` that follow [Conventional Commits](https://www.conventionalcommits.org/) (`feat:`, `fix:`, `chore:` etc.) are tracked automatically.
- All supported Conventional Commit categories (`feat`, `fix`, `perf`, `revert`, `docs`, `style`, `chore`, `refactor`, `test`, `build`, `ci`) are included for release-please changelog generation and Release PR updates.
- release-please opens a **Release PR** that bumps the version and updates `CHANGELOG.md`.
- Merging the Release PR creates a **GitHub Release** and triggers an automated **npm publish**.
### Required secret
Add `NPM_TOKEN` to the repository secrets (**Settings → Secrets → Actions**):
Generate at [npmjs.com/settings/tokens](https://www.npmjs.com/settings/tokens) — choose **Automation** type.
## License
MIT