mcp-plus-tard
Allows scheduling of posts on Bluesky via Plus Tard.
Allows scheduling of posts on Facebook pages via Plus Tard.
Allows scheduling of posts on Google My Business via Plus Tard.
Allows scheduling of posts on Instagram via Plus Tard.
Allows scheduling of posts on Threads via Plus Tard.
Allows scheduling of posts on TikTok via Plus Tard.
Plus Tard MCP
Connect your AI assistant (Claude, Cursor, n8n…) to Plus Tard to schedule your Facebook, Instagram, LinkedIn, X/Twitter, TikTok, Threads, Bluesky, and Google My Business posts through simple conversation.
Production endpoint : https://mcp.plus-tard.com/mcp/
User documentation : https://plus-tard.com/api-mcp
30-second demo
You : "Schedule a Facebook post on my Boréales page for tomorrow at 10 AM: 'Hello world!'"
Claude automatically calls:
list_accounts→ finds the Facebook ID for "Boréales"
schedule_post(provider="facebook", page_id="…", planned_at="2026-05-05T10:00:00Z", text="Hello world!")Plus Tard : ✅ Post #1432 scheduled for 05/05/2026 at 10:00 AM.
Related MCP server: FastSocial MCP Server
Tools (5)
Tool | Description |
| Verifies that an API key is active and returns its metadata. |
| Lists all social media accounts connected to Plus Tard. |
| Schedules a post on a single network (1 call = 1 network). |
| Creates a new user and returns an OAuth URL. |
| User details: connected providers and sub-accounts. |
Resources (2)
URI | Content |
| JSON list of connected accounts. |
| JSON detail of a user. |
Client-side installation
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):
{
"mcpServers": {
"plus-tard": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.plus-tard.com/mcp/",
"--header",
"X-Api-Key:${PLUS_TARD_TOKEN}"
],
"env": {
"PLUS_TARD_TOKEN": "your_plus_tard_api_key"
}
}
}
}Claude Code (CLI)
claude mcp add plus-tard \
--transport http https://mcp.plus-tard.com/mcp/ \
--header "X-Api-Key: your_plus_tard_api_key"Claude.ai (web)
Settings → Connectors → Add custom connector — URL https://mcp.plus-tard.com/mcp/, header X-Api-Key: your_key.
Cursor / n8n
Same URL and header. See the full documentation.
Self-host (for developers)
Stack
Python 3.12 · FastAPI ·
mcp[fastapi](Streamable HTTP transport)httpx · pydantic v2 · pydantic-settings
pytest · pytest-asyncio · respx
Architecture
Client (Claude/Cursor/n8n)
│ Streamable HTTP + X-Api-Key header
▼
MCP server (this repo)
│ X-Api-Key forwarded as-is
▼
Plus Tard Symfony APIEach MCP request arrives with X-Api-Key, which is propagated as-is to
the Plus Tard API. No session, no server-side storage — each
client uses its own key.
Local development
git clone https://github.com/<votre-org>/plus-tard-mcp.git
cd plus-tard-mcp
python3.12 -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env
# Édite .env : PLUS_TARD_BASE_URL=https://plus-tard.com
uvicorn main:app --reload --port 8001The server listens on http://127.0.0.1:8001/mcp/. Quick test with the
MCP Inspector:
npx @modelcontextprotocol/inspector
# Transport: Streamable HTTP
# URL: http://127.0.0.1:8001/mcp/
# Header: X-Api-Key = ta_clef_plus_tardTests
pytest
# 24 passedDocker deployment (production)
The repository provides Dockerfile + docker-compose.yml ready for a VPS
with nginx-proxy +
acme-companion:
sudo docker compose up -d --buildSee deploy/README.md for details (SSE-friendly
nginx-proxy snippet, Let's Encrypt TLS management, updates).
Configuration
Variable | Description | Default |
| Base URL for the Plus Tard API | (required) |
| Bind host for uvicorn |
|
| Bind port for uvicorn |
|
Authentication is done per request via the X-Api-Key header —
no tokens are stored server-side.
Allowed hosts
The MCP SDK enables anti-DNS rebinding protection that only allows whitelisted hosts. The default hosts are:
mcp.plus-tard.comlocalhost,127.0.0.1(for dev)
To add your own domain, edit the list in main.py
(TransportSecuritySettings.allowed_hosts).
Project structure
.
├── main.py # FastAPI + FastMCP + middleware X-Api-Key
├── app/
│ ├── config.py # Settings via pydantic-settings
│ ├── auth/ # Dependency X-Api-Key (réutilisable hors MCP)
│ ├── models/ # Schémas pydantic v2 (post, account, user)
│ ├── services/ # PlusTardClient async (httpx)
│ └── tools/ # 5 tools métier (str → str)
├── tests/ # 24 tests pytest-asyncio
├── deploy/
│ ├── README.md # Guide déploiement VPS
│ ├── vhost.d/ # Snippet nginx-proxy SSE
│ └── twig/ # Template Symfony pour la doc utilisateur
├── docs/index.html # Doc utilisateur statique (HTML)
├── Dockerfile
├── docker-compose.yml
└── pyproject.tomlSecurity
HTTPS only in production (TLS via Let's Encrypt).
No logging of post content or API tokens.
Anti-DNS rebinding via
TransportSecuritySettingsfrom the MCP SDK.Isolated multi-tenancy: each request is processed with its own httpx client, closed at the end of the request (no cross-user pooling).
If you suspect a key has leaked, revoke it from your Plus Tard space.
Roadmap
[ ] Structured logging (JSON, without tokens or content)
[ ] Rate limiting per API key
[ ] Prometheus metrics
[ ] OAuth flow for connectors (instead of a copy-paste API key)
[ ] Support for MCP
completion/completeforpage_idsuggestions (waiting for a Python SDK that exposesToolReference)
Ideas and contributions are welcome — open an issue or a PR.
Useful links
Plus Tard API (v1.2)
mcp-remote (stdio↔HTTP bridge for Claude Desktop)
License
MIT © 2026 Plus Tard — Boréales Créations.
Made with ❤️ in France.
Available Tools
5 toolsget_userA
Récupère les informations d'un utilisateur Plus Tard par son id, incluant ses providers connectés (Facebook, Instagram, LinkedIn, etc.) et leurs sous-comptes (pages Facebook, comptes Instagram pro...). Utilise ce tool avant schedule_post pour identifier le bon page_id à utiliser : pour Facebook/Instagram, c'est l'id du sous-compte (providers[].accounts[].id) ; pour les autres providers (LinkedIn, Twitter, TikTok, Threads, Bluesky), c'est providers[].providerId.
Inputs: user_id (required). Returns: result
list_accountsA
Liste tous les comptes réseaux sociaux connectés à Plus Tard. Utilise ce tool pour savoir quels comptes sont disponibles avant de planifier un post.
Inputs: no named parameters. Returns: result
register_userA
Crée un nouvel utilisateur Plus Tard et retourne une URL OAuth permettant de connecter ses comptes de réseaux sociaux. Utilise ce tool quand l'utilisateur veut onboarder un nouveau client ou se créer un compte. Email et langue sont optionnels — la langue par défaut est 'fr'. L'URL OAuth doit être ouverte dans un navigateur par l'utilisateur final pour qu'il connecte ses réseaux. Elle est valable 24h.
Inputs: email, language. Returns: result
schedule_postA
Planifie un post sur un seul réseau social via Plus Tard. Utilise ce tool quand l'utilisateur veut programmer, publier ou scheduler du contenu sur Facebook, Instagram, LinkedIn, X/Twitter, TikTok, Threads, Bluesky ou Google My Business.
IMPORTANT :
- Un appel = un réseau. Pour publier sur plusieurs réseaux, appelle
ce tool plusieurs fois.
- AVANT D'APPELER ce tool : appelle d'abord list_accounts (ou
get_user pour la vue détaillée) pour obtenir le page_id correct.
- Le `page_id` à passer ici est l'identifiant EXTERNE du compte sur
le réseau social (champ `accountId` / `page_id` retourné par
list_accounts, ex. "1097653263583548"), PAS l'identifiant interne
Plus Tard (champ `id` / `internal_id`, ex. "34"). Confondre les
deux crée un post mal rattaché et apparaissant comme "compte
déconnecté".
- Pour les providers sans sous-comptes (Twitter, LinkedIn, TikTok,
Threads, Bluesky, Google), utilise le `providerId` retourné par
get_user.
- Instagram exige au moins une image ou vidéo dans image_posts.
- planned_at doit être une date/heure UTC future au format ISO8601
(ex: 2026-05-01T10:00:00Z).
Inputs: page_id (required), provider (required), planned_at (required), text, +3 more. Returns: result
validate_api_keyA
Vérifie que la clef API Plus Tard fournie est valide. Utilise ce tool si l'utilisateur veut diagnostiquer un problème d'authentification ou simplement confirmer que sa clef est active. Retourne aussi la date de création et d'expiration de la clef.
Inputs: no named parameters. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool has a unique, non-overlapping purpose: validate_api_key checks authentication, list_accounts retrieves connected accounts, schedule_post creates a post, register_user creates a user, and get_user retrieves user details. No confusion between tools.
All tool names follow a consistent verb_noun pattern in lowercase with underscores (validate_api_key, list_accounts, schedule_post, register_user, get_user). The naming style is uniform and predictable.
With 5 tools, the server offers a focused set of operations for a social media scheduling service. Each tool addresses a distinct need without redundancy, fitting well within the typical 3-15 tool range.
The server covers core operations (validation, listing, scheduling, user management) but lacks tools for retrieving, updating, or deleting scheduled posts. This is a notable gap for a scheduling domain, preventing full lifecycle management.
Maintenance
Related MCP Connectors
Schedule, publish and manage social media posts across platforms.
Schedule and publish social media posts to Facebook, X, LinkedIn, Instagram, Threads and more.
Schedule and publish social posts across platforms, with drafts, media uploads and analytics.
Schedule and publish social media posts to Facebook, Instagram, LinkedIn, TikTok and YouTube.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to manage scheduled social media posts and content automation across multiple platforms (X/Twitter, Reddit, LinkedIn, Instagram, TikTok, YouTube). Supports organizing campaigns into tracks, scheduling posts with natural language, and automating content workflows with local SQLite storage.718 npmMIT
- FlicenseAqualityCmaintenanceSchedule and manage social media posts across Facebook, Instagram, Twitter/X, LinkedIn, YouTube, TikTok, and Pinterest directly from Claude.10-
- AlicenseAqualityBmaintenanceSchedule and manage social media posts across 13 platforms (Bluesky, Threads, Instagram, LinkedIn, Mastodon, YouTube, Facebook, Pinterest, Telegram, Nostr, X/Twitter, Discord, Tumblr and more). OAuth 2.0 + PKCE, 10 tools, draft-first workflow for AI agents.21026AGPL 3.0
- AlicenseNot gradedqualityBmaintenanceEnables finding trending content across social networks and scheduling/publishing posts with full lifecycle management.92 npmMIT