Skip to main content
Glama

Medium MCP Server

by jackyckma
MIT License

Medium MCP Server (Browser-Based)

Overview

Medium MCP (Model Context Protocol) is a browser-based solution for programmatically interacting with Medium's content ecosystem. Since Medium discontinued their public API for new users, this server uses browser automation to provide intelligent and context-aware content management.

🔄 Why Browser-Based?

Medium stopped issuing new API tokens in 2023, making traditional API integration impossible for new developers. This implementation uses Playwright browser automation to:

  • Work without API tokens - Uses your existing Medium login session
  • Full functionality - Publish, search, and manage your Medium content
  • Secure - Saves your login session locally for reuse
  • Interactive - Opens browser for initial login, then runs headlessly

📖 Deep Dive Article

Want to understand the full story behind Medium MCP? Check out the comprehensive article:

From Thought to Published: How MediumMCP Streamlines the AI-to-Medium Platform Workflow

Key Features

  • 🤖 Browser automation for Medium interaction
  • 📝 Article publishing with title, content, and tags
  • 📚 Retrieve your articles from your Medium profile
  • 🔍 Search Medium articles by keywords
  • 💾 Session persistence - login once, use everywhere
  • 🎯 Claude integration via Model Context Protocol

Technology Stack

  • TypeScript
  • Model Context Protocol (MCP)
  • Playwright Browser Automation
  • Advanced Content Parsing

Getting Started

Prerequisites

  • Node.js (v16 or later)
  • npm or yarn
  • A Medium account (no API credentials needed!)

Installation

# Clone the repository git clone https://github.com/jackyckma/medium-mcp-server.git # Navigate to the project directory cd medium-mcp-server # Install dependencies npm install # Install browser for automation npx playwright install chromium # Build the project npm run build

Configuration

No API keys needed! The server will prompt you to login to Medium in your browser on first use.

Usage

Test the Browser Client
# Test the browser automation (optional) node test-browser.js
Start the MCP Server
npm start
Add to Claude Configuration

Add this to your Claude MCP configuration:

{ "mcpServers": { "medium-mcp": { "command": "node", "args": ["path/to/medium-mcp-server/dist/index.js"], "cwd": "path/to/medium-mcp-server" } } }

Available MCP Tools

1. publish-article

Publish a new article to Medium

{ title: string, // Article title content: string, // Article content (markdown supported) tags?: string[], // Optional tags isDraft?: boolean // Save as draft (default: false) }

2. get-my-articles

Retrieve your published Medium articles

// No parameters needed // Returns: Array of your articles with titles, URLs, and dates

3. get-article-content

Get full content of any Medium article

{ url: string // Medium article URL }

4. search-medium

Search Medium for articles by keywords

{ keywords: string[] // Array of search terms }

5. login-to-medium

Manually trigger login process

// No parameters needed // Opens browser for login if not already authenticated

How It Works

First Time Setup

  1. Run the server - It will open a Chrome browser window
  2. Login to Medium - Complete login in the opened browser
  3. Session saved - Your login session is saved locally
  4. Future runs - No login required, runs headlessly

Browser Automation Flow

User Request → MCP Server → Playwright Browser → Medium Website → Response

Session Management

  • Login session stored in medium-session.json
  • Automatically reused on subsequent runs
  • Re-login only if session expires

Example Usage with Claude

User: "Publish an article titled 'AI in 2025' with content about recent developments" Claude: Uses publish-article tool → - Opens Medium editor - Fills in title and content - Publishes article - Returns success with article URL

Troubleshooting

Browser Issues

  • Browser won't open: Check if Chromium is installed (npx playwright install chromium)
  • Login fails: Clear medium-session.json and try again
  • Slow performance: Browser automation takes 10-30 seconds per operation

Medium Changes

  • Selectors outdated: Medium occasionally changes their website structure
  • Login blocked: Use your regular browser to login first, then try again

Common Errors

  • Browser not initialized: Restart the server
  • Login timeout: Increase timeout in browser-client.ts
  • Element not found: Medium may have changed their UI

Development

Project Structure

src/ ├── index.ts # Main MCP server ├── browser-client.ts # Playwright automation ├── auth.ts # Legacy auth (unused) └── client.ts # Legacy API client (unused)

Testing

# Test browser automation node test-browser.js # Run MCP server npm start # Build project npm run build

Security Notes

  • Local only - No data sent to external servers
  • Session encryption - Browser handles all security
  • No API keys - Uses your existing Medium login
  • ⚠️ Browser storage - Session saved locally in JSON file

Limitations

  • Speed: Browser automation is slower than API calls (10-30s vs 1-2s)
  • Reliability: Dependent on Medium's website structure
  • Headless: Requires display for initial login (can run headless after)
  • Rate limits: Subject to Medium's normal usage limits

Contributing

Contributions welcome! Please read CONTRIBUTING.md for guidelines.

License

MIT License - see LICENSE file for details.

Support

  • 🐛 Issues: GitHub Issues
  • 💬 Discussions: GitHub Discussions
  • 📧 Email: [Contact Author]

🤖 CREDIT and DISCLAIMER

AI-Powered Development

This entire Medium MCP Server was developed by AI (Claude/Cursor AI) in just a few hours, demonstrating the remarkable power of AI-assisted development. The complete rewrite from deprecated API to browser automation, including all TypeScript code, documentation, error handling, and testing strategies, was generated through AI collaboration.

What This Demonstrates

  • AI-First Development: Complex browser automation and MCP integration built rapidly
  • Real-world Problem Solving: Adapted to Medium's API deprecation with working solution
  • Production-Ready Code: TypeScript, error handling, session management, comprehensive docs
  • Community Standards: Contributing guidelines, changelog, proper licensing

Current Status & Limitations

  • Functional: Works well in Claude MCP integration for core features
  • ⚠️ Google Login Sessions: Couldn't solve persistent Google login sessions (use email/password instead)
  • ⚠️ Short Development Time: Rapid development may have overlooked edge cases
  • ⚠️ Medium UI Changes: Selectors may break if Medium updates their interface

Honest Assessment

This tool is useful and functional for AI-powered content workflows, but comes with the inherent limitations of:

  • Rapid AI development - may miss nuanced edge cases that human developers would catch
  • Browser automation complexity - dependent on Medium's website structure
  • Session management challenges - Google's anti-automation measures

Feedback Welcome

Given the accelerated AI development process, I welcome any feedback, bug reports, or improvements. This serves as both a working tool and a demonstration of AI development capabilities and limitations.

Use at your own discretion - this is provided "as-is" with the understanding that rapid AI development, while powerful, may not cover all production scenarios.


Note: This is an unofficial tool and is not affiliated with Medium. Use responsibly and in accordance with Medium's Terms of Service.

Related MCP Servers

  • A
    security
    A
    license
    A
    quality
    🔗 Model Context Protocol (MCP) Server for retrieving saved articles from Pocket API and loading them into Claude
    Last updated -
    2
    7
    5
    JavaScript
    MIT License
    • Apple
  • -
    security
    A
    license
    -
    quality
    Enables Claude to interact with Webflow's APIs, allowing access to site information, collections, and other Webflow resources.
    Last updated -
    TypeScript
    MIT License
    • Apple
  • -
    security
    F
    license
    -
    quality
    A tool that enables AI assistants like Claude to interact with MediaWiki instances by retrieving page content, performing searches, and analyzing wiki information through the MediaWiki API.
    Last updated -
    1
    JavaScript
  • -
    security
    A
    license
    -
    quality
    A Model Context Protocol server that enables Claude to interact directly with Contentful CMS, allowing the AI to fetch content types and entries from a Contentful space.
    Last updated -
    1
    TypeScript
    MIT License

View all related MCP servers

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/jackyckma/medium-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server