mcpField
M
Mcp Plus Tard

Mcp Plus Tard

Local
github.com/borealesSocial Media0Updated 3w ago

About Mcp Plus Tard

Mcp Plus Tard is an MCP server for managing social media publishing through Plus Tard. It lets connected AI clients inspect accounts and schedule posts across supported networks.

Key features

  1. 01List connected social accounts
  2. 02Schedule posts to one network
  3. 03Validate API keys
  4. 04Register users and retrieve details
  5. 05Expose account and user resources

Use cases

  1. 01Schedule a post through an AI client
  2. 02Check which social accounts are connected
  3. 03Verify an API key before use

MCP support

Exposes five tools and two resources to MCP clients over Streamable HTTP. Requests pass the client’s X-Api-Key through to the Plus Tard API.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"plus-tard": {
"command": "npx",
"args": [
"-y",
"mcp-remote"
],
"env": {
"PLUS_TARD_TOKEN": "<PLUS_TARD_TOKEN>"
}
}
}
}
Run commandnpx -y mcp-remote
Environment variables to set
PLUS_TARD_TOKENSecret

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmmcp-remote

Tools

5

Saved tool list · updated 3w ago

This tool takes no parameters.

Details

From the project README

Plus Tard MCP

Python FastAPI MCP License

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)

ToolDescription
validate_api_keyVérifie qu'une clef API est active et retourne ses métadonnées.
list_accountsListe tous les comptes réseaux sociaux connectés à Plus Tard.
schedule_postPlanifie un post sur un seul réseau (1 appel = 1 réseau).
register_userCrée un nouvel utilisateur et retourne une URL OAuth.
get_userDétail d'un utilisateur : providers connectés et sous-comptes.

Resources (2)

URIContenu
plus-tard://accountsListe 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

VariableDescriptionDéfaut
PLUS_TARD_BASE_URLURL de base de l'API Plus Tard(requis)
MCP_HOSTBind host pour uvicorn0.0.0.0
MCP_PORTBind port pour uvicorn8001

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


License

MIT © 2026 Plus Tard — Boréales Créations.

Made with ❤️ in France.

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.