Glowe Pinterest MCP
Enables AI agents to search public Pinterest pins, retrieve pin metadata and media URLs, and download matching images, GIFs, or videos into a local folder, with read-only tools and explicit confirmation for downloads.
README
Glowe Pinterest MCP
Un downloader Pinterest public, utilisable de deux façons : une CLI pour les humains et un serveur MCP stdio pour les agents IA. Le cœur est unique : la CLI et le MCP obtiennent donc les mêmes résultats, appliquent les mêmes validations d’URL et téléchargent uniquement dans un dossier local configuré.
Utiliser seulement les contenus pour lesquels vous détenez les droits nécessaires. Ce projet lit les données publiques rendues par Pinterest : ce n’est ni une API Pinterest officielle, ni une manière de contourner une connexion, un paywall ou une restriction de contenu.
Ce que le projet fait
- Résout les liens de Pins Pinterest et les liens courts
pin.it. - Recherche des Pins publics par mots-clés.
- Extrait le titre, la description, l’URL du Pin et les médias image/GIF/vidéo exposés publiquement.
- Essaie l’image
originals, puis les variantes1200x,736x, etc. si Pinterest ne sert pas la meilleure version. - Télécharge de manière atomique : fichier
.part, renommage final, sans écraser un fichier existant. - Refuse les redirections et URLs médias hors de
pinterest.*,pin.itet des CDN*.pinimg.comautorisés.
La recherche utilise la ressource publique structurée rendue par Pinterest, avec un fallback HTML transparent si elle devient indisponible. Pinterest peut ne rendre qu’une première tranche de résultats sans connexion : ce n’est pas une pagination garantie et il ne faut pas l’utiliser pour aspirer des tableaux complets.
Installation locale
Node 20 ou plus récent est requis.
cd tools/pinterest-mcp
npm install
Choisissez explicitement le dossier de sortie :
export PINTEREST_MCP_DOWNLOAD_DIR="$PWD/downloads"
Les médias sont limités à 35 MiB par défaut. Ajuster seulement si nécessaire :
export PINTEREST_MCP_MAX_MEDIA_BYTES=52428800
CLI — pour les humains
Toutes les commandes acceptent --json pour une sortie exploitable par script.
# Rechercher des références, sans écrire de fichier
npm run cli -- search "coiffure bob femme" --limit 8
# Charger la page suivante avec le nextCursor renvoyé par la recherche précédente
npm run cli -- search "coiffure bob femme" --limit 8 --cursor "CURSEUR_RENVOYÉ"
# Inspecter exactement ce qu’un Pin expose avant de télécharger
npm run cli -- inspect "https://pin.it/EXEMPLE" --json
# Télécharger un ou plusieurs Pins dans un dossier local contrôlé
npm run cli -- download "https://www.pinterest.com/pin/99360735500167749/" --output ./downloads
# Éviter les vidéos lorsque seules les images intéressent le workflow
npm run cli -- download "https://www.pinterest.com/pin/99360735500167749/" --no-video
# Recherche suivie d’un téléchargement : à employer seulement après validation du volume
npm run cli -- search-download "hairstyle editorial" --limit 5 --output ./downloads
Les commandes download et search-download ne prennent jamais un chemin de sortie depuis une URL ou une réponse distante. Les noms de fichiers sont normalisés et les collisions produisent un suffixe plutôt qu’un écrasement.
MCP — pour les agents IA
Lancer le serveur directement :
PINTEREST_MCP_DOWNLOAD_DIR="$PWD/downloads" npm run mcp
Il utilise stdio : aucun port, aucune clé Pinterest et aucun journal applicatif sur stdout. Les erreurs et diagnostics de démarrage restent sur stderr, afin de ne pas corrompre le protocole MCP.
Exemple de configuration locale Codex (~/.codex/config.toml) :
[mcp_servers.glowe_pinterest]
command = "node"
args = ["/CHEMIN_ABSOLU/glowe/tools/pinterest-mcp/bin/mcp-server.mjs"]
[mcp_servers.glowe_pinterest.env]
PINTEREST_MCP_DOWNLOAD_DIR = "/CHEMIN_ABSOLU/pinterest-downloads"
PINTEREST_MCP_MAX_MEDIA_BYTES = "36700160"
Après modification de la configuration, redémarrer le client MCP/Codex afin qu’il relance le processus. Pour tout autre client MCP, utilisez la même commande node, le même argument absolu et les mêmes variables d’environnement.
Contrat des outils MCP
| Outil | Écrit sur disque | Usage agent recommandé |
|---|---|---|
pinterest_search |
Non | Chercher et présenter des références avant toute action ; réutiliser nextCursor pour la page suivante lorsqu’il est présent. |
pinterest_get_pin |
Non | Vérifier un lien pinterest.com ou pin.it, ses médias et ses métadonnées. |
pinterest_download |
Oui | Demander confirmation, puis télécharger 1 à 20 Pins fournis. |
pinterest_search_and_download |
Oui | Utiliser uniquement après confirmation explicite du nombre de résultats. |
pinterest_status |
Non | Vérifier le dossier local et les limites en vigueur. |
Les outils de lecture portent l’annotation MCP readOnlyHint. Les outils qui écrivent sur disque expliquent dans leur description qu’une confirmation de l’utilisateur est requise. Un agent doit toujours privilégier cette séquence : pinterest_search → montrer la sélection → pinterest_get_pin → confirmation → pinterest_download.
Exemple de réponse MCP
pinterest_get_pin renvoie un JSON structuré contenant notamment :
{
"id": "99360735500167749",
"pinUrl": "https://www.pinterest.com/pin/99360735500167749/",
"title": "…",
"media": [
{
"type": "image",
"url": "https://i.pinimg.com/originals/...jpg",
"alternatives": ["https://i.pinimg.com/1200x/...jpg"]
}
]
}
L’agent ne doit pas inventer la disponibilité d’un média : il s’appuie sur media, puis rapporte séparément chaque téléchargement réussi ou échoué.
Tests et contrôle qualité
# Tests déterministes : URLs, parsing SSR, repli qualité, écriture atomique, handshake MCP
npm test
# Vérification réseau explicite : recherche réelle, extraction d’un Pin, téléchargement CDN réel
npm run test:live
Le test réseau est volontairement séparé : Pinterest peut modifier son HTML public ou rendre un Pin indisponible. Il ne doit jamais être masqué par les tests unitaires.
Inspirations et choix techniques
Le design s’inspire des projets MIT pinterest-downloader (priorité originals et cascade de qualité) et PinterestDownloader (contrats structurés Pin/recherche). L’interface MCP s’inspire de mcp-pinterest, mais l’implémentation ici est autonome, sans navigateur headless, avec une surface de téléchargement volontairement plus restrictive.
Pour les Pins et boards appartenant au compte Pinterest connecté, préférer l’API Pinterest officielle et OAuth. Les conditions Pinterest et les droits d’auteur restent applicables à tout contenu téléchargé.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
E2B
Using MCP to run code via e2b.