Skip to main content
Glama
afikrim
by afikrim
README.md
# 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

A3.7/5.0

Scored across 7 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

7 tools is a well-scoped set for a Medium integration, covering posting, profile retrieval, RSS, publications, contributors, and image upload without being excessive.

Completeness5/5

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.

Maintenance

ActivityStale
ResponsivenessNo issues