A side-by-side look at the Kadenzo MCP and PostHero MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Kadenzo MCP for social media work as a local process; choose PostHero for social media as a local process. You can also run both side by side in one mcpServers block.
KADENZO_API_KEY.list_accounts, schedule_post, list_posts.POSTHERO_API_KEY, POSTHERO_BASE_URL.list_accounts, create_post, list_posts.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Social Media | Social Media |
| Quality signal | 61/100 · Good | 49/100 · Fair |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | API key required | Not declared |
| Pricing | Paid service | Not declared |
| Required env vars | KADENZO_API_KEY | POSTHERO_API_KEYPOSTHERO_BASE_URL |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 0 |
| Directory activity | 6 views 0 installs 0 upvotes | 0 views 0 installs 0 upvotes |
| Tools | 23 | 9 |
| Full listing | View Kadenzo MCP | View PostHero |
list_accountsList the social accounts connected to this Kadenzo workspace — returns each account id, platform, and username. Use the ids as account_ids when scheduling.schedule_postSchedule a social post to one or more connected accounts for a FUTURE time (it publishes automatically). Set validate_only=true to check accounts/limits/timing without scheduling.list_postsList your posts, newest first. Optionally filter by status (comma-separated, e.g. "pending,posted") and paginate with limit (1-100) and offset.get_postGet one post: roll-up status, per-channel outcome, and any options/thread that were set on it.update_postEdit a post that has not published yet — change content, accounts, time, media, options, or thread.cancel_postCancel a scheduled post before it publishes. Already-published posts cannot be cancelled.upload_mediaUpload a local image or video file and get a hosted URL to use in media_urls when scheduling.get_account_analyticsRecent posts and their engagement metrics for one connected account (likes, comments, views, etc.). The reliable analytics surface.get_post_analyticsPer-channel engagement metrics for a specific post you scheduled (best-effort; use get_account_analytics for the full picture).generate_contentGenerate post copy for a platform from a topic — great for a "generate then schedule" flow. Returns a caption/post/description you can feed into schedule_post. Platform must be one of: instagram, tiktok, snapchat, facebook, youtube.get_best_timesPersonalized best posting times for one connected account, computed from its own engagement history. Requires the Professional plan or higher. Hours are UTC; shift to the poster’s timezone. Use it to pick scheduled_for.list_mentionsYour social-listening mentions — who is talking about the keywords you track (reddit/bluesky/youtube/hackernews/…), newest first. Filter by platform, since (ISO), or unread.list_accountsList connected social media accountscreate_postCreate, schedule, or publish a postlist_postsList posts with filters (status, platform)get_postGet full details of a postupdate_postUpdate a draft or scheduled postdelete_postDelete a post from PostHeropublish_postImmediately publish a draft/scheduled postget_analytics_summaryAggregated analytics for a platformget_top_postsTop-performing posts ranked by metricPaste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"kadenzo-kadenzo-mcp": {
"command": "npx",
"args": [
"-y",
"kadenzo-mcp"
],
"env": {
"KADENZO_API_KEY": "YOUR_KADENZO_API_KEY_HERE"
}
}
}
}
{
"mcpServers": {
"posthero": {
"command": "npx",
"args": [
"-y",
"@posthero/mcp"
],
"env": {
"POSTHERO_API_KEY": "YOUR_POSTHERO_API_KEY_HERE",
"POSTHERO_BASE_URL": "YOUR_POSTHERO_BASE_URL_HERE"
}
}
}
}