
dishant27/medium-mcp-server
Developer toolsMCP server that lets AI assistants read your Medium profile and publications and publish drafts via the (legacy) Medium API.
Overview
A small Model Context Protocol server that lets an MCP client (Claude Desktop, Cursor, etc.) create Medium drafts and read your Medium profile and publications. Medium no longer supports its API and has stopped issuing new integration tokens. This server only works if you a Medium integration token. If you don't, there is currently no official way to get one, and this project can't fix that. From Thought to Published: How MediumMCP Streamlines the AI-to-Medium Platform Workflow The tools map 1:1 to the endpoints Medium's v1 API actually has: What it do: search articles, read posts, read stats, or edit/delete posts. The official API never had those endpoints. Requirements: Node.js 18+ and an existing Medium integration token. Copy .env.example to .env and set your token: Then ask things like "Create a Medium draft titled ... from this markdown" and review the draft on Medium before publishing.
README
Medium MCP Server
A small Model Context Protocol server that lets an MCP client (Claude Desktop, Cursor, etc.) create Medium drafts and read your Medium profile and publications.
[!WARNING] Medium’s official API is deprecated. Medium no longer supports its API and has stopped issuing new integration tokens. This server only works if you already have a Medium integration token. If you don’t, there is currently no official way to get one, and this project can’t fix that.
📖 Background
From Thought to Published: How MediumMCP Streamlines the AI-to-Medium Platform Workflow
What it can do
The tools map 1:1 to the endpoints Medium’s v1 API actually has:
| Tool | What it does | Medium endpoint |
|---|---|---|
get-profile |
Your user id, username, name, profile URL | GET /me |
get-publications |
Publications you own, edit or write for | GET /users/{userId}/publications |
publish-article |
Creates a post (markdown or HTML). Defaults to draft, can be public or unlisted, optionally inside a publication |
POST /users/{userId}/posts, POST /publications/{id}/posts |
What it can’t do: search articles, read posts, read stats, or edit/delete posts. The official API never had those endpoints.
Setup
Requirements: Node.js 18+ and an existing Medium integration token.
git clone https://github.com/Dishant27/medium-mcp-server.git
cd medium-mcp-server
npm install
npm run build
Copy .env.example to .env and set your token:
MEDIUM_INTEGRATION_TOKEN=your_existing_integration_token
Use with Claude Desktop (or any MCP client)
{
"mcpServers": {
"medium": {
"command": "node",
"args": ["/absolute/path/to/medium-mcp-server/dist/index.js"],
"env": {
"MEDIUM_INTEGRATION_TOKEN": "your_existing_integration_token"
}
}
}
}
Then ask things like “Create a Medium draft titled … from this markdown” and review the draft on Medium before publishing.
No token? Alternatives
- Write to markdown files and import them with Medium’s import tool, which also sets the canonical link.
- Publish on a platform with a working API (e.g. dev.to, Hashnode) and cross-post to Medium with a canonical URL.
- Browser automation against medium.com works but is fragile and may break Medium’s terms, so it isn’t included here.
License
Install
This server does not publish a one-line install command.
Open the repository installation guideConfiguration
{
"mcpServers": {
"medium": {
"command": "node",
"args": ["/absolute/path/to/medium-mcp-server/dist/index.js"],
"env": {
"MEDIUM_INTEGRATION_TOKEN": "your_existing_integration_token"
}
}
}
}