{
  "markdown": "# PostPulse MCP Server\n\n[![smithery badge](https://smithery.ai/badge/post-pulse/mcp-server)](https://smithery.ai/servers/post-pulse/mcp-server)\n\nAn MCP (Model Context Protocol) server that connects AI assistants to [PostPulse](https://post-pulse.com) — a social media management platform. Schedule posts, upload media, and manage accounts across Instagram, Facebook, YouTube, TikTok, Threads, LinkedIn, X (Twitter), Bluesky, and Telegram — all through natural language.\n\n## Features\n\n- **Multi-platform posting** — Schedule posts to 9 social media platforms from a single interface\n- **Media management** — Upload images and videos via URL or binary data for use in posts\n- **Account management** — List and manage all connected social media accounts\n- **OAuth 2.0 authentication** — Secure access via Auth0-based token verification\n- **Streamable HTTP transport** — Modern MCP transport protocol for reliable communication\n\n## Supported Platforms\n\n| Platform | Placements | Content Types | Requirements |\n| :--- | :--- | :--- | :--- |\n| **Instagram** | Feed, Reels, Stories | Image, Video | Business Account |\n| **Facebook** | Feed, Reels, Stories | Image, Video | Page |\n| **YouTube** | Video, Shorts | Video | Channel |\n| **TikTok** | Video, Carousel | Image, Video | Account |\n| **Threads** | Post | Image, Video | Account |\n| **LinkedIn** | Post | Image, Video | Personal Account |\n| **X (Twitter)** | Post | Image, Video | Account |\n| **Bluesky** | Post | Image | Account |\n| **Telegram** | Message | Text, Image, Video | Channel/Chat |\n\n## Quick Start\n\n### Hosted Server (Recommended)\n\nPostPulse runs a hosted MCP server at **`https://mcp.post-pulse.com`** — no setup required. Point your MCP client to this URL and authenticate via OAuth.\n\nExample MCP client configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"postpulse\": {\n      \"url\": \"https://mcp.post-pulse.com\"\n    }\n  }\n}\n```\n\n### Install via Smithery\n\nYou can also install through [Smithery](https://smithery.ai/servers/post-pulse/mcp-server):\n\n```bash\nnpx -y @smithery/cli install post-pulse/mcp-server --client claude\n```\n\n### Self-Hosted\n\nIf you prefer to run the server yourself:\n\n1. Clone the repository:\n```bash\ngit clone https://github.com/PostPulse/mcp-server-postpulse.git\ncd mcp-server-postpulse\n```\n\n2. Install dependencies and build:\n```bash\nnpm install\nnpm run build\n```\n\n3. Start the server:\n```bash\nnpm start\n```\n\nOr with Docker:\n\n```bash\ndocker build -t mcp-server-postpulse .\ndocker run -p 3000:3000 mcp-server-postpulse\n```\n\n#### Environment Variables\n\n| Variable | Default | Description |\n|---|---|---|\n| `HOST` | `0.0.0.0` | Server bind address |\n| `PORT` | `3000` | Server port |\n| `PUBLIC_URL` | — | Public-facing URL (for OAuth metadata discovery) |\n| `POSTPULSE_AUTH_ISSUER` | `https://auth.post-pulse.com/` | Auth0 issuer URL |\n| `POSTPULSE_AUTH_JWKS_URI` | `https://auth.post-pulse.com/.well-known/jwks.json` | JWKS endpoint |\n| `POSTPULSE_AUDIENCE` | `https://api.post-pulse.com` | API audience |\n| `POSTPULSE_API_URL` | `https://api.post-pulse.com` | PostPulse API base URL |\n| `REDIS_URL` | — | Redis connection URL for session/event persistence (required) |\n\n## Tools\n\n### `list_accounts`\n\nList all connected social media accounts with their IDs, platforms, usernames, and display names. Use this as the first step to discover available accounts before scheduling posts or accessing chats.\n\n**Parameters:** None\n\n**Returns:** JSON array of account objects (`id`, `platform`, `username`, `name`).\n\n### `list_chats`\n\nList publishing destinations for accounts that have sub-destinations. Facebook accounts publish to **Pages**, and Telegram accounts publish to **channels or chats**. Call this before scheduling posts to either platform — use the returned `id` as the `facebookPageId` or `telegramChannelId` in `schedule_post`.\n\nOnly supports `FACEBOOK` and `TELEGRAM`. Other platforms do not have sub-destinations and should be posted to directly.\n\n**Parameters:**\n| Name | Type | Required | Description |\n|---|---|---|---|\n| `accountId` | number | Yes | Account ID obtained from `list_accounts` |\n| `platform` | string | Yes | `FACEBOOK` or `TELEGRAM` |\n\n**Returns:** JSON array of destination objects (`id`, `title`, `type`, `platform`).\n\n### `upload_media`\n\nUpload media files (images, videos) for use in scheduled posts. Supports two modes: importing from a public URL (with automatic processing) or uploading binary data directly as base64. Returns a media key to reference in `schedule_post`.\n\n**Parameters:**\n| Name | Type | Required | Description |\n|---|---|---|---|\n| `mediaUrl` | string | No | Public URL of the media file to import |\n| `mediaData` | string | No | Base64-encoded media file content |\n| `mediaType` | string | No | MIME type (e.g., `image/jpeg`, `video/mp4`). Required when using `mediaData` |\n| `mediaName` | string | No | Filename for the uploaded media |\n\nEither `mediaUrl` or both `mediaData` and `mediaType` must be provided.\n\n### `schedule_post`\n\nSchedule a social media post to one or more connected accounts. Supports platform-specific options like publication type (feed, reel, story), video titles, and topic tags. Posts are scheduled for a future time using ISO-8601 timestamps.\n\n**Parameters:**\n| Name | Type | Required | Description |\n|---|---|---|---|\n| `accountId` | number | Yes | Account ID from `list_accounts` |\n| `platform` | string | Yes | Target platform: `INSTAGRAM`, `FACEBOOK`, `TELEGRAM`, `YOUTUBE`, `TIKTOK`, `THREADS`, `LINKEDIN`, `X_TWITTER`, `BLUE_SKY` |\n| `content` | string | No | Post text/caption |\n| `mediaPaths` | string[] | No | Media keys returned by `upload_media` |\n| `scheduledTime` | string | Yes | ISO-8601 timestamp (e.g., `2025-01-15T10:00:00Z`) |\n| `facebookPageId` | string | **Yes** (Facebook) | Facebook Page ID from `list_chats`. Required when platform is `FACEBOOK` |\n| `telegramChannelId` | string | **Yes** (Telegram) | Telegram Channel/Chat ID from `list_chats`. Required when platform is `TELEGRAM` |\n| `publicationType` | string | No | `FEED`, `REEL`, or `STORY` (Instagram/Facebook, defaults to `FEED`) |\n| `title` | string | No | Video title (YouTube, TikTok) |\n| `topicTag` | string | No | Topic tag (Threads) |\n\n## Resources\n\n### `postpulse://accounts`\n\nAn MCP resource providing the list of all connected social media accounts. Returns the same data as the `list_accounts` tool in JSON format.\n\n## Authentication\n\nThis server uses OAuth 2.0 with [Auth0](https://auth0.com). OAuth metadata is discoverable at `/.well-known/oauth-protected-resource` and `/.well-known/oauth-authorization-server`.\n\n### Dynamic Client Registration (DCR)\n\nMCP clients that support OAuth can register automatically via **Dynamic Client Registration** (RFC 7591). The server advertises a `registration_endpoint` in its OAuth metadata, so compliant clients (such as Claude Desktop, Cursor, etc.) will handle the entire OAuth flow — registration, authorization, and token exchange — without any manual setup from the user.\n\n### Pre-Registered Client Credentials\n\nIf you already have client credentials created through the [PostPulse Developer Portal](https://developers.post-pulse.com), you can configure your MCP client to use them directly instead of DCR. Pass your `client_id` and `client_secret` in the OAuth authorization code flow against the PostPulse authorization server.\n\n## Example Workflow\n\nA typical interaction with the PostPulse MCP server:\n\n1. **List accounts** to find connected social media profiles\n2. **Upload media** (optional) to prepare images or videos\n3. **Schedule a post** with content, media, and a future publish time\n\n```\nUser: \"Schedule an Instagram reel for tomorrow at 9am with the video at https://example.com/video.mp4 and caption 'Check this out!'\"",
  "bytes": 7737,
  "sha": "9b305b38161c72b044aa1cd210628129dc5e7cb32bb3b75296731e15ac1a85c7",
  "repo_slug": "postpulse/mcp-server-postpulse",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_post_pulse_mcp_server_1997bb41/readme"
}