{"id":51238475,"url":"https://github.com/kieksme/mcp-hashnode","last_synced_at":"2026-06-28T22:02:24.739Z","repository":{"id":367565273,"uuid":"1281353308","full_name":"kieksme/mcp-hashnode","owner":"kieksme","description":"MCP server for the Hashnode GraphQL API — create drafts, publish posts, manage your blog via Claude","archived":false,"fork":false,"pushed_at":"2026-06-26T14:35:35.000Z","size":62,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-26T15:13:12.157Z","etag":null,"topics":["blog","hashnode","mcp"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kieksme.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-26T13:22:01.000Z","updated_at":"2026-06-26T14:35:30.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/kieksme/mcp-hashnode","commit_stats":null,"previous_names":["kieksme/mcp-hashnode"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/kieksme/mcp-hashnode","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kieksme%2Fmcp-hashnode","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kieksme%2Fmcp-hashnode/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kieksme%2Fmcp-hashnode/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kieksme%2Fmcp-hashnode/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kieksme","download_url":"https://codeload.github.com/kieksme/mcp-hashnode/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kieksme%2Fmcp-hashnode/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34905180,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-28T02:00:05.809Z","response_time":54,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["blog","hashnode","mcp"],"created_at":"2026-06-28T22:02:20.551Z","updated_at":"2026-06-28T22:02:24.720Z","avatar_url":"https://github.com/kieksme.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# @kieksme/mcp-hashnode\n\n[![npm version](https://img.shields.io/npm/v/%40kieksme%2Fmcp-hashnode)](https://www.npmjs.com/package/@kieksme/mcp-hashnode)\n[![Release](https://github.com/kieksme/mcp-hashnode/actions/workflows/release.yml/badge.svg)](https://github.com/kieksme/mcp-hashnode/actions/workflows/release.yml)\n\nMCP server for the [Hashnode](https://hashnode.com) GraphQL API.  \nCreate drafts, publish posts, manage your blog — all via Claude.\n\n\u003e [!IMPORTANT]\n\u003e **Hashnode Pro plan required.**  \n\u003e Since May 2026, Hashnode's GraphQL API is only available to publications on a [Pro plan](https://hashnode.com/settings/billing).  \n\u003e Free accounts will receive an error. Upgrade at **[hashnode.com/settings/billing](https://hashnode.com/settings/billing)**.\n\n## Tools\n\n| Tool | Description |\n|---|---|\n| `hashnode_get_me` | Get your profile and publication IDs |\n| `hashnode_get_publication` | Get publication info by host |\n| `hashnode_list_posts` | List published posts |\n| `hashnode_get_post` | Get a single post by slug |\n| `hashnode_create_draft` | Create a draft |\n| `hashnode_update_draft` | Update an existing draft |\n| `hashnode_list_drafts` | List drafts in a publication |\n| `hashnode_publish_draft` | Publish a draft → live post |\n| `hashnode_publish_post` | Publish directly (no draft step) |\n| `hashnode_update_post` | Update a published post |\n| `hashnode_delete_post` | Delete a post ⚠️ |\n\n## Setup\n\n### 1. Get your Personal Access Token\n\nGo to [hashnode.com/settings/developer](https://hashnode.com/settings/developer) and click **Generate new token**.\n\n### 2. Install\n\n**Via npx (no install needed — recommended):**\n```bash\nnpx -y @kieksme/mcp-hashnode\n```\n\n**Via global install:**\n```bash\npnpm add -g @kieksme/mcp-hashnode\n```\n\n**Build from source:**\n```bash\ngit clone https://github.com/kieksme/mcp-hashnode.git\ncd mcp-hashnode\npnpm install \u0026\u0026 pnpm run build\n```\n\n### 3. Configure your MCP client\n\n#### Claude Desktop\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\\Claude\\claude_desktop_config.json` (Windows):\n\n```json\n{\n  \"mcpServers\": {\n    \"hashnode\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@kieksme/mcp-hashnode\"],\n      \"env\": {\n        \"HASHNODE_TOKEN\": \"your-token-here\"\n      }\n    }\n  }\n}\n```\n\n#### Claude Code (CLI)\n\n```bash\nclaude mcp add hashnode \\\n  --command npx \\\n  --args \"-y @kieksme/mcp-hashnode\" \\\n  --env HASHNODE_TOKEN=your-token-here\n```\n\n#### Cursor\n\nAdd to `.cursor/mcp.json` in your project root, or to `~/.cursor/mcp.json` globally:\n\n```json\n{\n  \"mcpServers\": {\n    \"hashnode\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@kieksme/mcp-hashnode\"],\n      \"env\": {\n        \"HASHNODE_TOKEN\": \"your-token-here\"\n      }\n    }\n  }\n}\n```\n\n#### VS Code (GitHub Copilot)\n\nAdd to `.vscode/mcp.json` in your workspace:\n\n```json\n{\n  \"servers\": {\n    \"hashnode\": {\n      \"type\": \"stdio\",\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@kieksme/mcp-hashnode\"],\n      \"env\": {\n        \"HASHNODE_TOKEN\": \"your-token-here\"\n      }\n    }\n  }\n}\n```\n\n#### Windsurf\n\nAdd to `~/.codeium/windsurf/mcp_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"hashnode\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@kieksme/mcp-hashnode\"],\n      \"env\": {\n        \"HASHNODE_TOKEN\": \"your-token-here\"\n      }\n    }\n  }\n}\n```\n\n## Usage examples\n\n```\n\"What's my publication ID?\"\n→ hashnode_get_me\n\n\"Create a draft called 'Cloud Security Best Practices' with this content: ...\"\n→ hashnode_create_draft\n\n\"Publish the draft with ID xyz\"\n→ hashnode_publish_draft\n\n\"List my last 10 posts on thinkport.hashnode.dev\"\n→ hashnode_list_posts\n```\n\n## Authentication\n\nHashnode requires `Authorization: \u003ctoken\u003e` (no `Bearer` prefix).  \nAll mutations need the token; most read queries are public.\n\n## Rate limits\n\n- Queries: 20,000 req/min  \n- Mutations: 500 req/min\n\n## Tags format\n\nTags must be objects — not plain strings:\n\n```json\n[\n  { \"name\": \"Cloud Computing\", \"slug\": \"cloud-computing\" },\n  { \"name\": \"DevOps\", \"slug\": \"devops\" }\n]\n```\n\n## Releases\n\nThis project uses [release-please](https://github.com/googleapis/release-please) for automated releases.\n\n- Commits to `main` that follow [Conventional Commits](https://www.conventionalcommits.org/) (`feat:`, `fix:`, `chore:` etc.) are tracked automatically.\n- 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.\n- release-please opens a **Release PR** that bumps the version and updates `CHANGELOG.md`.\n- Merging the Release PR creates a **GitHub Release** and triggers an automated **npm publish**.\n\n### Required secret\n\nAdd `NPM_TOKEN` to the repository secrets (**Settings → Secrets → Actions**):  \nGenerate at [npmjs.com/settings/tokens](https://www.npmjs.com/settings/tokens) — choose **Automation** type.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkieksme%2Fmcp-hashnode","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkieksme%2Fmcp-hashnode","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkieksme%2Fmcp-hashnode/lists"}