iHatePosting — Claude Code MCP server for social posts
A hosted MCP server plus a skill: your agent drafts, checks and schedules posts across 14 networks through your iHatePosting account.
claude mcp add --transport http mcp https://ihateposting.com/mcp/oauthWhat iHatePosting 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.
What it helps with
- 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 for the agent
- 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
How to install iHatePosting
1Platform CLI: remote server
claude mcp add --transport http mcp https://ihateposting.com/mcp/oauth2Platform CLI
claude mcp add --env IHATEPOSTING_API_KEY=<IHATEPOSTING_API_KEY> --transport stdio ihateposting -- npx -y ihateposting-mcpReplace <…> with your own values
1Platform CLI: remote server
codex mcp add ihateposting --url https://ihateposting.com/mcp/oauth2Platform CLI
codex mcp add ihateposting --env IHATEPOSTING_API_KEY=<IHATEPOSTING_API_KEY> -- npx -y ihateposting-mcpReplace <…> with your own values
Config file
{
"mcpServers": {
"ihateposting": {
"url": "https://ihateposting.com/mcp/oauth"
}
}
}{
"mcpServers": {
"ihateposting": {
"command": "npx",
"args": [
"-y",
"ihateposting-mcp"
],
"env": {
"IHATEPOSTING_API_KEY": "<IHATEPOSTING_API_KEY>"
}
}
}
}Replace <…> with your own values
Config file
{
"servers": {
"ihateposting": {
"type": "http",
"url": "https://ihateposting.com/mcp/oauth"
}
}
}{
"servers": {
"ihateposting": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"ihateposting-mcp"
],
"env": {
"IHATEPOSTING_API_KEY": "<IHATEPOSTING_API_KEY>"
}
}
}
}Replace <…> with your own values
1Platform CLI: remote server
gemini mcp add -t http ihateposting https://ihateposting.com/mcp/oauth2Platform CLI
gemini mcp add -e IHATEPOSTING_API_KEY=<IHATEPOSTING_API_KEY> ihateposting npx -y ihateposting-mcpReplace <…> with your own values
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about iHatePosting
How do I install iHatePosting in Claude Code?
Run claude mcp add --transport http ihateposting https://ihateposting.com/mcp/oauth, then sign in to your iHatePosting account in the browser.
What does iHatePosting do?
It gives an agent 16 tools for social accounts: drafts, scheduling, publishing, post validation, network rules, media and reports.
Do I need an API key?
Signing in through https://ihateposting.com/mcp/oauth needs no key. The npx -y ihateposting-mcp route requires the IHATEPOSTING_API_KEY variable.