NestDaddy

medium-ops

io.github.06ketan/medium-ops · v0.1.2

Medium CLI + 23-tool MCP server. Your IDE drafts replies. No API keys.

Connect Runs on your machine

Terminal
claude mcp add medium-ops -e MEDIUM_INTEGRATION_TOKEN=<MEDIUM_INTEGRATION_TOKEN> -e MEDIUM_SID=<MEDIUM_SID> -e MEDIUM_UID=<MEDIUM_UID> -e MEDIUM_XSRF=<MEDIUM_XSRF> -e MEDIUM_CF_CLEARANCE=<MEDIUM_CF_CLEARANCE> -e MEDIUM_USERNAME=<MEDIUM_USERNAME> -e MEDIUM_OPS_MCP_PATH=<MEDIUM_OPS_MCP_PATH> -e MEDIUM_OPS_LLM_CMD=<MEDIUM_OPS_LLM_CMD> -- uvx medium-ops==0.1.2
claude_desktop_config.json
{
  "mcpServers": {
    "medium-ops": {
      "command": "uvx",
      "args": [
        "medium-ops==0.1.2"
      ],
      "env": {
        "MEDIUM_INTEGRATION_TOKEN": "<MEDIUM_INTEGRATION_TOKEN>",
        "MEDIUM_SID": "<MEDIUM_SID>",
        "MEDIUM_UID": "<MEDIUM_UID>",
        "MEDIUM_XSRF": "<MEDIUM_XSRF>",
        "MEDIUM_CF_CLEARANCE": "<MEDIUM_CF_CLEARANCE>",
        "MEDIUM_USERNAME": "<MEDIUM_USERNAME>",
        "MEDIUM_OPS_MCP_PATH": "<MEDIUM_OPS_MCP_PATH>",
        "MEDIUM_OPS_LLM_CMD": "<MEDIUM_OPS_LLM_CMD>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "medium-ops": {
      "command": "uvx",
      "args": [
        "medium-ops==0.1.2"
      ],
      "env": {
        "MEDIUM_INTEGRATION_TOKEN": "<MEDIUM_INTEGRATION_TOKEN>",
        "MEDIUM_SID": "<MEDIUM_SID>",
        "MEDIUM_UID": "<MEDIUM_UID>",
        "MEDIUM_XSRF": "<MEDIUM_XSRF>",
        "MEDIUM_CF_CLEARANCE": "<MEDIUM_CF_CLEARANCE>",
        "MEDIUM_USERNAME": "<MEDIUM_USERNAME>",
        "MEDIUM_OPS_MCP_PATH": "<MEDIUM_OPS_MCP_PATH>",
        "MEDIUM_OPS_LLM_CMD": "<MEDIUM_OPS_LLM_CMD>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "medium-ops": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "medium-ops==0.1.2"
      ],
      "env": {
        "MEDIUM_INTEGRATION_TOKEN": "<MEDIUM_INTEGRATION_TOKEN>",
        "MEDIUM_SID": "<MEDIUM_SID>",
        "MEDIUM_UID": "<MEDIUM_UID>",
        "MEDIUM_XSRF": "<MEDIUM_XSRF>",
        "MEDIUM_CF_CLEARANCE": "<MEDIUM_CF_CLEARANCE>",
        "MEDIUM_USERNAME": "<MEDIUM_USERNAME>",
        "MEDIUM_OPS_MCP_PATH": "<MEDIUM_OPS_MCP_PATH>",
        "MEDIUM_OPS_LLM_CMD": "<MEDIUM_OPS_LLM_CMD>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
MEDIUM_INTEGRATION_TOKEN
Optional, secret
Legacy Medium Integration Token (api.medium.com/v1/*). Optional. Generate at medium.com/me/settings → 'Integration tokens' (note: Medium stopped issuing new tokens in 2023).
MEDIUM_SID
Optional, secret
Medium 'sid' cookie value from medium.com (Application → Cookies). Used for authenticated reads + dashboard GraphQL.
MEDIUM_UID
Optional
Medium 'uid' cookie value. Required alongside sid for some authenticated endpoints.
MEDIUM_XSRF
Optional, secret
Medium 'xsrf' cookie value. Required for any dashboard write (post_response, publish_post, delete_post, draft updates).
MEDIUM_CF_CLEARANCE
Optional, secret
Cloudflare 'cf_clearance' cookie. Only required when Cloudflare challenges your IP for dashboard write calls.
MEDIUM_USERNAME
Optional
Your Medium handle (without the @). Required for the public RSS read path so the client knows whose feed to fetch.
MEDIUM_OPS_MCP_PATH
Optional
Override path to the mcp.json file the auth layer reads. Defaults to ~/.cursor/mcp.json.
MEDIUM_OPS_LLM_CMD
Optional
Optional: override the host CLI used by the unattended daemon path (default: auto-detect claude / cursor-agent / codex on PATH). Use {prompt} placeholder if your CLI takes the prompt as an arg.

Details

Package[email protected] (PYPI, stdio)
First published3 May 2026
Last updated3 May 2026
Registry nameio.github.06ketan/medium-ops

More developer tools servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.