Mcp Plus Tard
Description
# Plus Tard MCP [](https://www.python.org/) [](https://fastapi.tiangolo.com/)…
About
# Plus Tard MCP [](https://www.python.org/) [](https://fastapi.tiangolo.com/) [](https://modelcontextprotocol.io/)…
Details
- Author
- boreales
- Downloads
- 168
- Categories
- Other
Jump to
- Five MCP tools: validate_api_key, list_accounts, schedule_post, register_user, get_user
- Two MCP resources: plus-tard://accounts and plus-tard://users/{id}
- Streamable HTTP transport via FastAPI
- Authentication per-request via X-Api-Key header (no server-side token storage)
- Self-hostable with Docker and nginx-proxy
- Anti-DNS rebinding protection
Setting up with Highlight
This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:
- Download and install Highlight from highlightai.com/download
- Navigate to the plugins tab and select "Add Custom Plugin"
-
Configure the plugin with the settings below
Plugin Name
Mcp Plus TardCommand (node, npx, python, etc.)Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.
- Enable "Start Automatically" if you want the plugin to start when Highlight launches
From the repository
Add the production endpoint https://mcp.plus-tard.com/mcp/ as a custom connector in Claude Desktop, Claude Code, Claude.ai, Cursor, or n8n. Authentication uses the X-Api-Key header with your Plus Tard API key. For development or self-hosting, clone the repository, set environment variables, and run with uvicorn.
validate_api_key
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.
list_accounts
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.
schedule_post
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).
register_user
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.
get_user
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.
Claude Desktop / Cursor
Paste into your MCP client config file to install this server.
{
"mcpServers": {
"mcp plus tard": {
"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"
}
}
}
}
}
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"
}
}
}
Plus Tard MCP
> Connectez votre assistant IA (Claude, Cursor, n8n…) à
> Plus Tard pour planifier vos publications
> Facebook, Instagram, LinkedIn, X/Twitter, TikTok, Threads, Bluesky et
> Google My Business par simple conversation.
Production endpoint : https://mcp.plus-tard.com/mcp/
Documentation utilisateur : https://plus-tard.com/api-mcp
---
Démo en 30 secondes
> Vous : « Programme un post Facebook sur ma page Boréales demain à 10h : "Hello le monde !" »
>
> Claude appelle automatiquement :
> 1. list_accounts → trouve l'identifiant Facebook de "Boréales"
> 2. schedule_post(provider="facebook", page_id="…", planned_at="2026-05-05T10:00:00Z", text="Hello le monde !")
>
> Plus Tard : ✅ Post #1432 planifié pour le 05/05/2026 à 10h00.
---
Tools (5)
| Tool | Description |
|---|---|
| validate_api_key | Vérifie qu'une clef API est active et retourne ses métadonnées. |
| list_accounts | Liste tous les comptes réseaux sociaux connectés à Plus Tard. |
| schedule_post | Planifie un post sur un seul réseau (1 appel = 1 réseau). |
| register_user | Crée un nouvel utilisateur et retourne une URL OAuth. |
| get_user | Détail d'un utilisateur : providers connectés et sous-comptes. |
Resources (2)
| URI | Contenu |
|---|---|
| plus-tard://accounts | Liste JSON des comptes connectés. |
| plus-tard://users/{id} | Détail JSON d'un utilisateur. |
---
Installation côté client
Claude Desktop
Ajoutez à ~/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
Mêmes URL et header. Voir la doc complète.
---
Self-host (pour développeurs)
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 API
Chaque requête MCP arrive avec X-Api-Key, qui est propagé tel quel à
l'API Plus Tard. Pas de session, pas de stockage côté serveur — chaque
client utilise sa propre clef.
Développement local
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 8001
Le serveur écoute sur http://127.0.0.1:8001/mcp/. Test rapide avec le
MCP Inspector :
npx @modelcontextprotocol/inspector
Transport: Streamable HTTP
URL: http://127.0.0.1:8001/mcp/
Header: X-Api-Key = ta_clef_plus_tard
Tests
pytest
24 passed
Déploiement Docker (production)
Le dépôt fournit Dockerfile + docker-compose.yml prêts pour un VPS
avec nginx-proxy +
acme-companion :
sudo docker compose up -d --build
Voir deploy/README.md pour le détail (snippet
nginx-proxy SSE-friendly, gestion TLS Let's Encrypt, mise à jour).
---
Configuration
| Variable | Description | Défaut |
|---|---|---|
| PLUS_TARD_BASE_URL | URL de base de l'API Plus Tard | (requis) |
| MCP_HOST | Bind host pour uvicorn | 0.0.0.0 |
| MCP_PORT | Bind port pour uvicorn | 8001 |
L'authentification se fait par requête via le header X-Api-Key —
aucun token n'est stocké côté serveur.
Hosts autorisés
Le SDK MCP active une protection anti-DNS rebinding qui n'autorise que
les hôtes whitelistés. Les hôtes par défaut sont :
- mcp.plus-tard.com
- localhost, 127.0.0.1 (pour le dev)
Pour ajouter votre propre domaine, éditez la liste dans main.py
(TransportSecuritySettings.allowed_hosts).
---
Structure du projet
.
├── 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.toml
---
Sécurité
- HTTPS uniquement en production (TLS via Let's Encrypt).
- Pas de log du contenu des posts ni des tokens API.
- Anti-DNS rebinding via TransportSecuritySettings du SDK MCP.
- Multi-tenancy isolée : chaque requête est traitée avec son propre
client httpx, fermé en fin de requête (pas de pooling cross-user).
- Si vous suspectez qu'une clef a fuité, révoquez-la depuis votre
espace Plus Tard.
---
Roadmap
- [ ] Logging structuré (JSON, sans tokens ni contenus)
- [ ] Rate limiting par clef API
- [ ] Métriques Prometheus
- [ ] OAuth flow pour les connecteurs (au lieu d'une clef API copy-paste)
- [ ] Support completion/complete MCP pour suggestions de page_id
(en attente d'un SDK Python qui expose ToolReference)
Idées et contributions bienvenues — ouvrez une issue ou une PR.
---
Liens utiles
- Documentation utilisateur
- API Plus Tard (v1.2)
- Spécification MCP
- MCP Inspector
- mcp-remote (pont stdio↔HTTP pour Claude Desktop)
---
License
MIT © 2026 Plus Tard — Boréales Créations.
Made with ❤️ in France.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



