MCP Server Medium
# MCP Server Medium
MCP (Model Context Protocol) server for interacting with the Medium API. Allows AI agents to publish posts, manage publications, upload images, and parse RSS feeds to JSON.
## Quick Start
```bash
# Run with uvx (no install needed) — uses MEDIUM_API_KEY env var
MEDIUM_API_KEY=your_token_here uvx mcp-server-medium
# Or use a config file instead
mkdir -p ~/.medium
echo 'api_key: your_token_here' > ~/.medium/config.yaml
uvx mcp-server-medium
# Or install and run
uv tool install mcp-server-medium
mcp-server-medium
```
## Authentication
The server resolves your API key in this order:
1. **`MEDIUM_API_KEY` environment variable** — best for MCP clients
2. **`~/.medium/config.yaml`** — persistent local config
Create `~/.medium/config.yaml`:
```yaml
api_key: your_integration_token_here
```
Get your token at [medium.com/me/settings](https://medium.com/me/settings) (look for "Integration Tokens").
## Tools
| Tool | Description |
|------|-------------|
| `get_profile` | Get the authenticated user's Medium profile |
| `list_publications` | List all publications the user is related to |
| `list_contributors` | List contributors for a publication |
| `create_post` | Create a post on the user's Medium profile |
| `create_publication_post` | Create a post under a specific publication |
| `upload_image` | Upload an image to Medium from a URL |
| `get_rss_feed` | Fetch and parse Medium RSS feeds into JSON |
### RSS Feed Shorthands
The `get_rss_feed` tool accepts flexible input:
| Shorthand | Resolves to |
|-----------|------------|
| `@username` | `https://medium.com/feed/@username` |
| `publication-name` | `https://medium.com/feed/publication-name` |
| `tag/tag-name` | `https://medium.com/feed/tag/tag-name` |
| `pub-name/tagged/tag` | `https://medium.com/feed/pub-name/tagged/tag` |
| Full URL | Used as-is |
## Development
```bash
# Clone and setup
git clone https://github.com/afikrim/medium-mcp-server
cd medium-mcp-server
uv sync
# Run locally
MEDIUM_API_KEY=your_key uv run medium-mcp-server
# Use with MCP inspector
MEDIUM_API_KEY=your_key npx @modelcontextprotocol/inspector uv run medium-mcp-server
```
## Configuration
Configure in your MCP client (e.g., Claude Desktop, Cursor):
```json
{
"mcpServers": {
"medium": {
"command": "uvx",
"args": ["mcp-server-medium"],
"env": {
"MEDIUM_API_KEY": "your_token_here"
}
}
}
}
```
Or using the config file (no env needed):
```json
{
"mcpServers": {
"medium": {
"command": "uvx",
"args": ["mcp-server-medium"]
}
}
}
```
With `~/.medium/config.yaml`:
```yaml
api_key: your_token_here
```
## License
MIT
TDQS
Scored across 7 tools
Each tool targets a distinct action or resource: creating personal vs publication posts, fetching profile vs RSS feed, listing publications vs contributors, and uploading images. No overlap.
All tools follow a consistent verb_noun pattern in snake_case (e.g., create_post, get_profile, list_publications), making them predictable and easy to understand.
7 tools is a well-scoped set for a Medium integration, covering posting, profile retrieval, RSS, publications, contributors, and image upload without being excessive.
The tool set covers the primary Medium API operations: creating posts (personal and publication), retrieving profile and RSS, listing publications and contributors, and uploading images. No obvious gaps given typical API limitations.