New:Socket for Asana Is Now Available.Learn more
Get Started

@misarblog/mcp

Package Overview
Dependencies
Maintainers
1
Versions
13
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@misarblog/mcp

MCP server for Misar.Blog — publish blog posts, manage drafts, generate AI cover images, and access analytics from Claude Code, Cursor & Windsurf.

Source
npmnpm
Version
1.0.4
Version published
Weekly downloads
180
-34.78%
Maintainers
1
Weekly downloads
 
Created
Source

Misar.Blog MCP Server

Connect Claude Code, Cursor, Windsurf, or any MCP-compatible AI assistant to your Misar.Blog account. Publish articles, manage drafts, generate cover images, and pull analytics — all from your AI coding environment.

Two runtimes are available — choose based on what you already have installed:

RuntimeRequiresBest for
Python (recommended)Python 3.11+ · stdlib onlyClaude Code, any lightweight setup
npm / npxNode.js 18+Node-first workflows, CI/CD

Contents

Quick Start

Fastest path — Python + Claude Code:

# 1. Copy the server script
cp packages/mcp/misarblog-mcp.py ~/.claude/scripts/misarblog-mcp.py
chmod +x ~/.claude/scripts/misarblog-mcp.py

# 2. Add to Claude Code MCP settings (see below)

# 3. Run misarblog_login in Claude Code to authenticate via browser

Fastest path — npx + any MCP client:

# No install needed — just add the config below and run misarblog_login

Option A — Python (no dependencies)

Uses Python's standard library only. No pip install required. Works on macOS, Linux, and Windows (with Python 3.11+).

1 · Download the script

If you cloned the MisarBlog repo:

cp packages/mcp/misarblog-mcp.py ~/.claude/scripts/misarblog-mcp.py
chmod +x ~/.claude/scripts/misarblog-mcp.py

Direct download (one-liner):

mkdir -p ~/.claude/scripts
curl -fsSL https://www.misar.blog/mcp/misarblog-mcp.py -o ~/.claude/scripts/misarblog-mcp.py
chmod +x ~/.claude/scripts/misarblog-mcp.py

2 · Verify Python version

python3 --version   # must be 3.11 or later

If you're on macOS with an older system Python, use Homebrew: brew install python.

3 · Add to your MCP client config

{
  "mcpServers": {
    "misarblog": {
      "command": "python3",
      "args": ["~/.claude/scripts/misarblog-mcp.py"],
      "env": {
        "MISARBLOG_API_KEY": "mbk_your_key_here"
      }
    }
  }
}

You can omit MISARBLOG_API_KEY if you plan to use the misarblog_login browser flow.

Option B — npm / npx

Uses Node.js 18+ with the @modelcontextprotocol/sdk. npx fetches and caches the package on first run — no manual install needed.

{
  "mcpServers": {
    "misarblog": {
      "command": "npx",
      "args": ["-y", "@misarblog/mcp"],
      "env": {
        "MISARBLOG_API_KEY": "mbk_your_key_here"
      }
    }
  }
}

Option B2 — Global install

npm install -g @misarblog/mcp

Then use misarblog-mcp as the command:

{
  "mcpServers": {
    "misarblog": {
      "command": "misarblog-mcp",
      "env": {
        "MISARBLOG_API_KEY": "mbk_your_key_here"
      }
    }
  }
}

Option B3 — pnpm / yarn

pnpm add -g @misarblog/mcp
# or
yarn global add @misarblog/mcp

Verify Node version

node --version   # must be v18 or later

Client Setup

Claude Code

Claude Code stores MCP server config in ~/.claude/settings.json.

Edit the file:

# Open in your editor
code ~/.claude/settings.json

Add the mcpServers block (create settings.json if it doesn't exist):

{
  "mcpServers": {
    "misarblog": {
      "command": "python3",
      "args": ["~/.claude/scripts/misarblog-mcp.py"],
      "env": {
        "MISARBLOG_API_KEY": "mbk_your_key_here"
      }
    }
  }
}

Reload Claude Code — MCP servers start automatically on the next session. You'll see misarblog listed when you run /mcp in any Claude Code session.

Verify the connection:

> call misarblog_get_profile

Claude Code should return your username, display name, and account status.

Cursor

Cursor stores MCP config at ~/.cursor/mcp.json (global) or .cursor/mcp.json inside a project (project-scoped, takes priority).

Global config (~/.cursor/mcp.json):

{
  "mcpServers": {
    "misarblog": {
      "command": "npx",
      "args": ["-y", "@misarblog/mcp"],
      "env": {
        "MISARBLOG_API_KEY": "mbk_your_key_here"
      }
    }
  }
}

Alternative — via Cursor Settings UI:

  • Open Cursor → SettingsMCP
  • Click + Add new MCP server
  • Fill in:
    • Name: misarblog
    • Command: npx
    • Args: -y @misarblog/mcp
    • Env: MISARBLOG_API_KEY=mbk_your_key_here
  • Click Save — Cursor restarts the MCP daemon automatically.

Verify: open Cursor Agent mode → type use misarblog_get_profile — the tool card should appear.

Windsurf

Windsurf reads MCP config from ~/.codeium/windsurf/mcp_config.json.

{
  "mcpServers": {
    "misarblog": {
      "command": "npx",
      "args": ["-y", "@misarblog/mcp"],
      "env": {
        "MISARBLOG_API_KEY": "mbk_your_key_here"
      }
    }
  }
}

Reload Windsurf after saving. The MCP tools appear under the Cascade panel → Tools.

VS Code (Copilot)

VS Code reads MCP config from .vscode/mcp.json in the workspace root, or from User Settings (settings.json) under "mcp".

Workspace config (.vscode/mcp.json):

{
  "servers": {
    "misarblog": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@misarblog/mcp"],
      "env": {
        "MISARBLOG_API_KEY": "mbk_your_key_here"
      }
    }
  }
}

User settings (settings.json):

{
  "mcp": {
    "servers": {
      "misarblog": {
        "type": "stdio",
        "command": "npx",
        "args": ["-y", "@misarblog/mcp"],
        "env": {
          "MISARBLOG_API_KEY": "mbk_your_key_here"
        }
      }
    }
  }
}

Restart VS Code after saving. The misarblog_* tools appear in GitHub Copilot Chat when you enable Agent mode (the @ icon in the chat panel).

Any other MCP client

Any MCP-compatible client that supports stdio servers works with the same pattern:

  • Command: python3 (Python) or npx (npm)
  • Args: ["~/.claude/scripts/misarblog-mcp.py"] or ["-y", "@misarblog/mcp"]
  • Transport: stdio
  • Env: MISARBLOG_API_KEY=mbk_... (or use misarblog_login after connecting)

Authentication

  • Go to Misar.Blog → Dashboard → Settings → API Keys
  • Click Generate API Key — your key starts with mbk_
  • Copy it and paste into the MISARBLOG_API_KEY env var in your MCP config

Keys have a 100 req/min rate limit. You can revoke and regenerate at any time from the settings page.

Precedence order:

MISARBLOG_API_KEY env var  →  ~/.misarblog/config.json  →  prompt to run misarblog_login

Browser login (no copy-paste)

If you'd rather not handle the key manually, omit MISARBLOG_API_KEY from the config and run misarblog_login as your first tool call. The flow:

  • The MCP server starts a temporary HTTP listener on 127.0.0.1 (random port 9001–9099)
  • Your default browser opens to https://www.misar.blog/dashboard/settings/api?mcp_port=<port>
  • You click Authorize MCP Access — you must be logged in to Misar.Blog
  • The page sends your API key directly to the local listener
  • The key is saved to ~/.misarblog/config.json — no clipboard involved
  • All subsequent tool calls use this saved key automatically

The listener accepts connections from 127.0.0.1 only and shuts down after 120 seconds.

Example prompt:

Connect my Misar.Blog account using misarblog_login

Claude will call the tool, open your browser, and confirm once you've authorized.

Tools reference

ToolDescriptionRequired params
misarblog_loginBrowser-based auth — saves key to ~/.misarblog/config.json
misarblog_get_profileUsername, display name, bio, subscriber count, Stripe status
misarblog_list_articlesList your articles by status
misarblog_get_articleFetch a single article with full bodyslug
misarblog_publish_articlePublish now or schedule via ISO 8601 datetimetitle, body_markdown
misarblog_create_draftSave a draft for review in the web editortitle, body_markdown
misarblog_upload_imageUpload a local file to the Misar.Blog CDNfile_path
misarblog_generate_imageGenerate an AI cover image from a text promptprompt
misarblog_list_seriesList all article series on your account
misarblog_create_seriesCreate a new seriestitle
misarblog_add_to_seriesAdd an article to a series at a given positionseries_slug, article_slug
misarblog_get_analyticsViews, revenue, and subscriber trends (up to 365 days)

Tool parameters

misarblog_login

ParamTypeDefaultDescription
portnumberrandom 9001–9099Local callback port
base_urlstringhttps://www.misar.blogOverride for self-hosted instances

misarblog_list_articles

ParamTypeDefaultDescription
statusstringpublishedOne of: draft · published · scheduled · archived
limitnumber20Max results, 1–100

misarblog_publish_article

ParamTypeRequiredDescription
titlestringyesArticle title (max 250 chars)
body_markdownstringyesFull article content in Markdown
tagsstring[]noUp to 10 tags
cover_image_urlstringnoHTTPS URL of cover image
schedule_atstringnoISO 8601 datetime to publish later (e.g. 2025-06-01T09:00:00Z)
visibilitystringnopublic · subscribers · paid · private (default: public)

misarblog_create_draft

ParamTypeRequiredDescription
titlestringyesDraft title
body_markdownstringyesContent in Markdown
tagsstring[]noUp to 10 tags

misarblog_upload_image

ParamTypeRequiredDescription
file_pathstringyesAbsolute local path (jpg, png, webp, gif, svg)

misarblog_generate_image

ParamTypeDefaultDescription
promptstringImage description (max 1000 chars)
sizestring1024x10241024x1024 · 1792x1024 · 1024x1792

misarblog_create_series

ParamTypeRequiredDescription
titlestringyesSeries name
descriptionstringnoShort description

misarblog_add_to_series

ParamTypeRequiredDescription
series_slugstringyesURL slug of the series
article_slugstringyesURL slug of the article
positionnumberno1-indexed position; appends to end if omitted

misarblog_get_analytics

ParamTypeDefaultDescription
daysnumber30Look-back window, 1–365

Usage examples

These are prompts you can send directly in Claude Code or Cursor Agent mode:

Publish a new article:

Write a 1000-word article about "Why AI-first blogging changes SEO forever"
and publish it on my Misar.Blog with tags ["AI", "SEO", "blogging"].

Draft with a generated cover image:

Generate a dark, futuristic cover image for an article titled "Building with MCP".
Then create a draft with that image as the cover.

Check performance:

Show me my analytics for the last 90 days.

Publish on a schedule:

Write a short announcement post and schedule it to publish tomorrow at 9am UTC.

Organize a series:

List my articles with status "published", then create a series called "AI Writing Guide"
and add the last 3 articles to it in chronological order.

Self-hosted Misar.Blog

If you run your own Misar.Blog instance, set MISARBLOG_BASE_URL to your domain:

{
  "mcpServers": {
    "misarblog": {
      "command": "python3",
      "args": ["~/.claude/scripts/misarblog-mcp.py"],
      "env": {
        "MISARBLOG_API_KEY": "mbk_your_key_here",
        "MISARBLOG_BASE_URL": "https://blog.yourdomain.com"
      }
    }
  }
}

MISARBLOG_BASE_URL can also be stored in ~/.misarblog/config.json (written by misarblog_login):

{
  "api_key": "mbk_...",
  "username": "yourname",
  "base_url": "https://blog.yourdomain.com"
}

Troubleshooting

"Not configured" on every tool call

The server can't find your API key. Either:

  • Set MISARBLOG_API_KEY in the MCP config env block, or
  • Run misarblog_login once to save it to ~/.misarblog/config.json

"API key invalid or expired"

Your key was revoked. Go to Dashboard → Settings → API Keys and generate a new one, or run misarblog_login again to get a fresh key via the browser flow.

"Rate limited (100 req/min)"

You've exceeded the API rate limit. Wait 60 seconds and retry. If you're running automated pipelines, add a short delay between tool calls.

Browser doesn't open during misarblog_login

The server prints the URL to stderr when webbrowser.open() fails. Copy and open it manually:

Open this URL in your browser:
  https://www.misar.blog/dashboard/settings/api?mcp_port=9042

You have 120 seconds from when the tool runs to click Authorize MCP Access.

python3: command not found

  • macOS: brew install python or install from python.org
  • Linux: sudo apt install python3 / sudo dnf install python3
  • Windows: Install from python.org and ensure python3 is in PATH

Alternatively, switch to the npm/npx option — it only requires Node.js.

npx is slow on first run

npx -y @misarblog/mcp downloads the package on first run and caches it locally. Subsequent starts are instant. If startup time matters, use npm install -g @misarblog/mcp instead.

MCP server doesn't appear in Claude Code

Run /mcp in a Claude Code session to list active servers. If misarblog is missing:

  • Check ~/.claude/settings.json — ensure the mcpServers.misarblog block is valid JSON

  • Verify the script path: ls -la ~/.claude/scripts/misarblog-mcp.py

  • Test the server directly:

    printf '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}\n' \
      | MISARBLOG_API_KEY=mbk_test python3 ~/.claude/scripts/misarblog-mcp.py
    

    You should see a JSON response listing 12 tools.

Connection refused on misarblog_login callback

The local HTTP server binds to 127.0.0.1. If your browser opens on a different machine (e.g. remote VS Code over SSH), the callback won't reach the MCP server. In that case, use the API Key method instead.

Requirements

  • Python runtime: Python 3.11+ · no external packages
  • npm runtime: Node.js 18+ · package fetched automatically via npx
  • Account: Misar.Blog creator account (sign up free)

Keywords

mcp

FAQs

Package last updated on 24 Apr 2026

Related posts