Metadata-Version: 2.4
Name: mcp-server-medium
Version: 0.4.1
Summary: MCP server for Medium API — publish posts, manage publications, RSS feeds, upload images
Author-email: afikrim <afikrim10@gmail.com>
Project-URL: Homepage, https://github.com/afikrim/medium-mcp-server
Project-URL: Repository, https://github.com/afikrim/medium-mcp-server
Requires-Python: >=3.11
Description-Content-Type: text/markdown
Requires-Dist: httpx>=0.28.1
Requires-Dist: mcp[cli]>=1.28.1
Requires-Dist: feedparser>=6.0.12
Requires-Dist: pyyaml>=5.4
Requires-Dist: patchright>=1.49.0
Requires-Dist: curl-cffi>=0.15.0
Requires-Dist: beautifulsoup4>=4.15.0

# 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
