# iHatePosting

A hosted MCP server plus a skill: your agent drafts, checks and schedules posts across 14 networks through your iHatePosting account.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 1
- Author: iHatePostingOrg
- License: MIT · policy=link-only · description only; the file stays with the author
- Source: https://github.com/iHatePostingOrg/agent-skill
- Updated: 2026-10-20
- HTML: https://affpapa.org/en/nevibecode/mcp/ihateposting

## What it does

iHatePosting links an agent to your ihateposting.com account and exposes 16 tools. Drafting, scheduling, publishing, pre-flight checks, per-network rules, media handling, channel reports. Nothing leaves as a live post until you ask for it — a new post lands as a draft unless you request immediate or timed publishing.

Signing in with your iHatePosting account replaces an API key. On Claude, Codex, Cursor, Gemini CLI and GitHub Copilot the server is added at `https://ihateposting.com/mcp/oauth`, and you authenticate in the browser. The other route runs `npx -y ihateposting-mcp` with `IHATEPOSTING_API_KEY`, which means fetching that key from your account first.

The `validate_post` tool runs the same checks the publisher runs and creates nothing. It also flags a network with no connected account, or one that needs reconnecting. A time like "9:00 AM" is read in the timezone from your iHatePosting settings rather than your machine — get that setting wrong and posts go out at the wrong hour.

## Requirements
- Needs: Node.js (commands run via npx)
- Remote server: `https://ihateposting.com/mcp/oauth`
- Environment variables: `IHATEPOSTING_API_KEY` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

1. **Platform CLI: remote server**
```bash
claude mcp add --transport http mcp https://ihateposting.com/mcp/oauth
```

2. **Platform CLI**
```bash
claude mcp add --env IHATEPOSTING_API_KEY=<IHATEPOSTING_API_KEY> --transport stdio ihateposting -- npx -y ihateposting-mcp
```
Replace <…> with your own values

### Codex

1. **Platform CLI: remote server**
```bash
codex mcp add ihateposting --url https://ihateposting.com/mcp/oauth
```

2. **Platform CLI**
```bash
codex mcp add ihateposting --env IHATEPOSTING_API_KEY=<IHATEPOSTING_API_KEY> -- npx -y ihateposting-mcp
```
Replace <…> with your own values

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "ihateposting": {
            "url": "https://ihateposting.com/mcp/oauth"
        }
    }
}
```
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "ihateposting": {
            "command": "npx",
            "args": [
                "-y",
                "ihateposting-mcp"
            ],
            "env": {
                "IHATEPOSTING_API_KEY": "<IHATEPOSTING_API_KEY>"
            }
        }
    }
}
```
Replace <…> with your own values

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "ihateposting": {
            "type": "http",
            "url": "https://ihateposting.com/mcp/oauth"
        }
    }
}
```
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "ihateposting": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "ihateposting-mcp"
            ],
            "env": {
                "IHATEPOSTING_API_KEY": "<IHATEPOSTING_API_KEY>"
            }
        }
    }
}
```
Replace <…> with your own values

### Gemini CLI

1. **Platform CLI: remote server**
```bash
gemini mcp add -t http ihateposting https://ihateposting.com/mcp/oauth
```

2. **Platform CLI**
```bash
gemini mcp add -e IHATEPOSTING_API_KEY=<IHATEPOSTING_API_KEY> ihateposting npx -y ihateposting-mcp
```
Replace <…> with your own values

## When to use it
- prepare one post for several networks at once
- check text and media before anything is published
- schedule a post for a specific time
- rewrite a failed post and resend only that one
- review reach and top posts per channel

## Example prompts
- Draft a post about the release and show me what fails validation
- Publish this text to X and LinkedIn tomorrow at 9:00 AM
- Show what happened to my posts over the last 7 days

## Similar
- [typefully](https://affpapa.org/en/nevibecode/skills/typefully.md) — skill · 2000 installs
- [socialclaw](https://affpapa.org/en/nevibecode/mcp/socialclaw.md) — MCP server · ★ 101
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/socialneuron-mcp-server.md) — MCP server · ★ 5
- [Genfeed](https://affpapa.org/en/nevibecode/mcp/genfeed.md) — MCP server · ★ 4
- [Skryvo](https://affpapa.org/en/nevibecode/mcp/skryvo.md) — MCP server

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
