> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://help.perfectpost.fr/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# PerfectPost MCP Server

# PerfectPost MCP Server
## Description
PerfectPost is a LinkedIn content management platform that helps creators and professionals track their post performance, manage drafts, and optimize their content strategy.
This MCP server gives AI assistants read and write access to a user's PerfectPost account: published posts with engagement analytics, drafts lifecycle (create, edit, schedule), and LinkedIn profile data.
The server is deployed as a remote, hosted MCP endpoint: no local installation required. Authentication is handled via OAuth 2.0 (Authorization Code flow with PKCE) through the PerfectPost identity provider (Amazon Cognito). The server supports Dynamic Client Registration (DCR) and Client ID Metadata Documents (CIMD), so any compliant MCP client can connect automatically, with no manual configuration or prior registration.
**MCP endpoint:** `https://mcp.perfectpost.social/mcp` **Transport:** Streamable HTTP (JSON responses, stateless)
## Features
* **Post analytics**: retrieve post performance metrics (impressions, likes, comments, shares, reposts) with configurable date ranges and get aggregate statistics summaries
* **Post management**: list, search, and read published LinkedIn posts; update metadata such as marketing objective, categories, and favorite flag
* **Audience insights**: discover who liked or commented on a specific post
* **Drafts**: list, read, create, update, and schedule drafts for LinkedIn publication; attach media (image, video, PDF) from a URL
* **Profile**: read the authenticated user's LinkedIn profile including name, headline, and follower statistics
## Setup
### Connect from Claude.ai
1. Open **Claude.ai&#32;> Settings > Connectors > Add custom connector**
2. Fill in the following fields:
    * **Name**: `PerfectPost`
    * **Remote MCP server URL**: `https://mcp.perfectpost.social/mcp`
3. Click **Add**, then **Connect**: you will be redirected to the PerfectPost login page
4. Sign in with your PerfectPost account and authorize the requested permissions
5. Once authorized, Claude can access your PerfectPost data
> The connection is automatic: Claude identifies itself via a Client ID Metadata Document (CIMD), no manual configuration is needed. If your version of Claude still asks for an OAuth Client ID under Advanced settings, enter `dnakgf4sbal93ukngisqgb3vo` and leave the Secret field empty.
### Connect from Claude Code (CLI)
Add the following to your `~/.claude.json` file (in the `mcpServers` section):
```
{
  "mcpServers": {
    "perfectpost": {
      "type": "http",
      "url": "https://mcp.perfectpost.social/mcp",
      "oauth": {
        "callbackPort": 6274
      }
    }
  }
}
```
When launching Claude Code, type `/mcp` to initiate the connection. A browser window will open to complete the OAuth authentication flow. The callback port `6274` is required (identity provider constraint).
### Connect from ChatGPT
The connection uses ChatGPT's developer mode (paid subscription required), from a computer:
1. Enable developer mode: **Settings > Security > Developer mode**, turn the toggle on. The "high risk" warning is ChatGPT's standard message for any connector that is not in the OpenAI catalog.
2. Open [chatgpt.com/plugins](https://chatgpt.com/plugins) and click the **+** button in the top right corner ("Create an app").
3. In the "New plugin" form, fill in:
    * **Name**: `PerfectPost MCP`
    * **Connection**: "Server URL" with `https://mcp.perfectpost.social/mcp`
    * **Authentication**: `OAuth` (the OAuth settings are detected automatically from the URL)
4. Tick "I understand and want to continue", then click **Create**.
5. Open the newly created plugin (**Settings > Plugins > PerfectPost MCP**), click **Connect** then **Sign in with PerfectPost MCP**. A PerfectPost login window opens (allow pop-ups for chatgpt.com if nothing opens): sign in with your PerfectPost credentials and accept the permissions.
6. In a conversation, enable **PerfectPost MCP** and ask your question, for example "analyze my last 10 posts".
> ChatGPT identifies itself automatically to the server via its Client ID Metadata Document (CIMD): no Client ID to enter.
### Connect from Claude Desktop or other MCP clients
Add the following to your MCP client configuration:
```
{
  "mcpServers": {
    "perfectpost": {
      "type": "http",
      "url": "https://mcp.perfectpost.social/mcp",
      "oauth": true
    }
  }
}
```
Claude Desktop, Dust and any compliant MCP client automatically retrieve their configuration through Dynamic Client Registration (DCR) or a Client ID Metadata Document (CIMD). No manual configuration or client ID is required: on first use, the client opens a browser window to complete the OAuth flow, and that's it. If your MCP client supports neither DCR nor CIMD, you can manually enter the legacy OAuth client ID: `dnakgf4sbal93ukngisqgb3vo`.
> ⚠️ The `mcp-remote` package is not needed. Claude Code, Claude Desktop and Claude.ai natively support remote MCP servers with OAuth authentication. If you use an MCP client that only supports stdio connections, please contact support.
## Authentication
The server implements OAuth 2.0 Authorization Code flow with PKCE as required by the MCP specification for remote servers.
| Parameter | Value |
| ---- |
| Authorization endpoint | `https://mcp.perfectpost.social/authorize` |
| Token endpoint | `https://mcp.perfectpost.social/token` |
| Scopes | `openid`, `email`, `profile` |
| Client ID | Dynamic registration (DCR), CIMD URL, or legacy client ID `dnakgf4sbal93ukngisqgb3vo` |
| Client type | Public (no client secret, PKCE required) |
A free PerfectPost account is sufficient to connect. Some advanced analytics features may require a paid plan.
## Tools
### Read-only tools
| Tool | Description |
| ---- |
| `list_posts` | List published LinkedIn posts with pagination and date filters |
| `get_post` | Get the full content and engagement metrics for a single post |
| `search_posts` | Full-text search across your published posts |
| `get_posts_stats_summary` | Aggregate analytics over a time range (totals and top posts) |
| `get_post_likers` | List people who liked a specific post |
| `get_post_commenters` | List people who commented on a specific post |
| `get_linkedin_profile` | Get your LinkedIn profile information |
| `list_drafts` | List your drafts with status and pagination filters |
| `get_draft` | Get the full content and metadata of a specific draft |
All read-only tools are annotated with `readOnlyHint: true` and `destructiveHint: false`.
### Write tools
| Tool | Description |
| ---- |
| `create_draft` | Create a new draft for LinkedIn publication |
| `update_draft` | Update the content or metadata of an existing draft |
| `schedule_draft` | Schedule a draft for publication at a specific date and time |
| `set_draft_media_from_url` | Attach an image, video, or PDF to a draft from a URL |
| `set_draft_media_from_base64` | Attach an image shared in the conversation to a draft |
| `update_post` | Update metadata of a published post (objective, categories, favorite) |
All write tools are annotated with `readOnlyHint: false` and `destructiveHint: true`.
## Examples
### Example 1: Analyze your recent LinkedIn performance
**User prompt:**
> "How did my LinkedIn posts perform last month? Show me the highlights and my best post."
**What Claude does:**
1. Calls `get_posts_stats_summary` with a 30-day date range to retrieve aggregate metrics (total impressions, likes, comments, shares) and the list of top-performing posts
2. Calls `get_post` on the top post to fetch its full text and detailed engagement stats
3. Presents a performance summary with key metrics and the content of the best-performing post
**Tools used:** `get_posts_stats_summary`, `get_post`
### Example 2: Create and schedule a LinkedIn draft
**User prompt:**
> "Write a LinkedIn post about the importance of personal branding for developers, and schedule it for next Tuesday at 8:30 AM Paris time."
**What Claude does:**
1. Drafts the post content with a compelling hook, body, call-to-action, and relevant hashtags
2. Calls `create_draft` to save the post in PerfectPost
3. Calls `schedule_draft` with the draft ID and the ISO 8601 timestamp corresponding to next Tuesday 08:30 Europe/Paris
4. Confirms the scheduled date and time, and provides the draft ID for future reference
**Tools used:** `create_draft`, `schedule_draft`
### Example 3: Discover who engages with your content
**User prompt:**
> "Who liked and commented on my most popular post this year?"
**What Claude does:**
1. Calls `get_posts_stats_summary` for a year-to-date range to identify the top post by impressions
2. Calls `get_post_likers` and `get_post_commenters` for that post
3. Presents the list of people who engaged, highlighting anyone who both liked and commented
**Tools used:** `get_posts_stats_summary`, `get_post_likers`, `get_post_commenters`
### Example 4: Search and repurpose past content
**User prompt:**
> "Find my posts about AI and create a new draft that summarizes the key ideas."
**What Claude does:**
1. Calls `search_posts` with the query "AI" to find all relevant published posts
2. Reads through the results and identifies recurring themes and insights
3. Calls `create_draft` with a new synthesized post that references the original ideas
4. Returns the draft for the user to review and edit
**Tools used:** `search_posts`, `create_draft`
## Connection Requirements
A free PerfectPost account is required. You can create one at [perfectpost.social](https://perfectpost.social/).
No premium account, admin access, or special configuration is needed to use the MCP server. Some analytics features with extended history may be limited on free plans.
The MCP server works with any Claude platform that supports remote MCP connections (Claude.ai, Claude Desktop, Claude Code, Claude Mobile).
## Privacy Policy
PerfectPost's privacy policy is available at: [perfectpost.social/politique-de-confidentialite](https://perfectpost.social/politique-de-confidentialite/)
The MCP server accesses only data that belongs to the authenticated user. No data is shared with third parties. OAuth tokens are never logged or stored by the MCP layer. The server is GDPR compliant.
## Support
* **Help center:** [help.perfectpost.fr](https://help.perfectpost.fr/)
* **Email:** [contact@perfectpost.fr](mailto:contact@perfectpost.fr)
* **Live chat:** available on [perfectpost.social](https://perfectpost.social/)
Response time is typically within one business day (Monday to Friday, Paris time).