Tutoriel

Que sont les Google Agent Plugins en 2026 ? Skills, serveurs MCP, plugin et JSON Schema dans la prochaine pile d’outils Agent

Le skill est écrit, le serveur MCP marche, et le coding agent suivant exige encore une autre enveloppe. Ce qui manque en 2026, ce n’est pas d’outils. C’est une boîte qui voyage.

Le 6 août 2026, Google a annoncé sur le Developers Blog qu’il rejoignait le comité de pilotage technique d’Agent Plugins et câblait le format dans ses produits. Le 10 septembre, le Google Cloud Developer Plugin est sorti : auth, projets, garde-fous gcloud et MCP Developer Knowledge dans un paquet installable pour Antigravity, Claude Code, Codex et Cursor. On entend trop vite « Google a encore inventé un protocole d’outils ». Non. Agent Skills dit déjà comment écrire un skill. MCP dit déjà comment appeler un outil. Il manquait une boîte qui tient les deux dans un répertoire et ne fourche pas quand on change de client. Le contrat de cette boîte, ce sont deux JSON fermés : plugin.json et mcp.json. Qu’est-ce que MCP traite le protocole ; MCP et JSON Schema traite inputSchema. Ici, seulement les quatre couches : Plugin, Skills, serveur MCP, JSON Schema. Spec : Agent Plugins 1.0.0.

Pas un énième primer MCP : le plugin est la boîte

Fixez les couches. Un skill est le brief que le modèle lit : quand l’utiliser, comment marcher, quels scripts et références sont à côté. Un serveur MCP est la main du runtime : tools/list expose les outils, tools/call les exécute, les arguments sont du JSON. Un plugin n’en réinvente aucun. Il dit : la racine doit avoir plugin.json ; les skills ne se découvrent que dans les enfants immédiats de skills/ ; MCP ne se lit que dans mcp.json à la racine. v1 n’admet que ces deux types. Commandes, sous-agents, hooks vont dans un répertoire en domaine inversé, com.example.client/ — les autres clients peuvent l’ignorer.

Google le dit aussi en public : tout skill ne doit pas devenir un plugin. Un serveur MCP pour un client reste plus simple en config native. Un seul SKILL.md n’a pas besoin de boîte. Un plugin gagne sa place quand plusieurs pièces doivent voyager ensemble : le MCP qui interroge les factures, le skill qui en fait le résumé hebdo, et un contrat de découverte qui ne doit pas vivre dans un troisième fichier. Passer à Cursor, Claude Code ou Antigravity ne doit pas vouloir dire deux arborescences et deux dialectes de manifeste.

La spec laisse volontairement de côté installation, distribution, permissions, bac à sable et confiance. Ce sont des devoirs d’IDE, de CLI ou de plateforme d’entreprise ; les graver en champs portables fourcherait le premier jour. Agent Plugins est un format de paquet. La découverte peut siéger ailleurs (Google cite Agentic Resource Discovery et un AI Catalog). L’exécution reste MCP et Agent Skills. Adopter une couche n’achète pas la suivante. Gardez la phrase : la boîte est portable ; l’UX d’install n’a pas à l’être.

Couche Ce que c’est Où vit le contrat
PluginUn répertoire distribuable pour les composants qui vont ensembleplugin.json (champs fermés)
SkillTexte de workflow, scripts et références réutilisablesskills/<name>/SKILL.md
Serveur MCPRuntime et transport des outils et ressourcesmcp.json à la racine plus le protocole MCP
JSON SchemaForme du manifeste, de la config MCP et des arguments d’outilplugin.schema.json / mcp.schema.json officiels, plus inputSchema

plugin.json : manifeste fermé et JSON Schema

Un client doit lire le plugin.json racine avant de découvrir des composants. Fichier objet JSON, schéma fermé : seulement $schema, name, version, description, author, homepage, repository, license, keywords, extensions. Les champs de tête en trop doivent être signalés et ignorés ; ils ne rejettent pas le plugin. Ce qui est fatal : champ requis manquant, mauvais type, name illégal — alors tout le paquet reste déchargé. Pour 1.0.0, $schema doit être https://agent-plugins.org/schemas/1.0.0/plugin.schema.json. Les clients s’en servent pour choisir les règles locales et ne doivent pas aller chercher un schéma pendant le chargement.

name n’est pas un libellé libre. Longueur 1–64, minuscules, chiffres, tirets et points seulement ; premier et dernier caractères alphanumériques ; pas de -- ni de ... My-Plugin et -start sont invalides. SemVer est recommandé pour version, mais un client ne doit pas rejeter un manifeste seulement parce que la chaîne « ne ressemble pas à SemVer ». L’objet author n’admet que name, email, url. Le privé client va sous extensions.com.example.client. N’inventez pas une cinquième clé de tête pour les hooks.

Voyez ce que le manifeste ne peut pas faire : déplacer les composants, inliner skills ou MCP. Pas de chemin de découverte à configurer, pas d’ordre de priorité à apprendre. Si skills/ est là, charger ; s’il manque, passer — ce n’est pas une erreur. Ci-dessous un manifeste un peu plus complet, encore légal. Vérifiez qu’il parse, puis les champs contre le schéma officiel.

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
  "name": "reports-plugin",
  "version": "1.0.0",
  "description": "Query invoices and write the weekly finance summary",
  "license": "Apache-2.0",
  "keywords": ["finance", "reports", "mcp"],
  "homepage": "https://example.com/plugins/reports",
  "repository": "https://github.com/example/reports-plugin"
}

Skills : SKILL.md dans un répertoire fixe

Agent Plugins ne réécrit pas le format de skill. Agent Skills possède le frontmatter, le corps, et scripts/, references/, assets/. Plugins ne définit que la découverte. L’emplacement fixe est skills/. Chaque sous-répertoire immédiat qui contient un fichier régulier nommé exactement SKILL.md est un skill. Les clients ne doivent pas récursiver — un second skill caché dans skills/deploy/extra/SKILL.md est invisible.

Si un skill est invalide, le client doit le sauter, continuer les autres skills et les autres types, et devrait signaler lequel a échoué. L’inverse de « un crash MCP tue le paquet ». La ligne de Google : les composants indépendants échouent indépendamment. Un skill de résumé hebdo cassé ne doit pas emporter le MCP factures, et l’inverse. Pour un coding agent, ça compte : une typo dans le frontmatter d’un skill docs ne doit pas retirer les garde-fous gcloud.

Un skill possède le contexte, pas le transport. Il dit au modèle « d’abord le projet, puis la facturation, ne commitez pas de clés ». Changer les ressources cloud reste l’affaire des outils MCP ou des scripts locaux. Coller un manuel entier dans le prompt système mange la fenêtre. Les skills se chargent à la demande — le point que répète l’article Cloud Developer Plugin. Installer les skills un par un devient sale ; skills et MCP liés doivent voyager ensemble. Le plugin est cette corde, pas un second Tool Calling.

mcp.json : comment trouver les serveurs, quelle couche appartient au JSON Schema

Le protocole filaire MCP reste MCP : initialize, tools/list, tools/call, HTTP sans état. Agent Plugins ne répond qu’à où se connecter. La config doit vivre dans mcp.json à la racine, pas inline dans plugin.json, pas sur un autre chemin cœur. Au sommet, seulement $schema et mcpServers. Pour 1.0.0, $schema doit être https://agent-plugins.org/schemas/1.0.0/mcp.schema.json et correspondre à la version déclarée par le manifeste. Un écart désactive le MCP de ce plugin et laisse les skills charger.

Chaque serveur exige un type explicite. Un client ne doit pas déduire le transport de la forme de l’objet. stdio veut un command (un jeton exécutable, pas une chaîne shell) plus args / env / cwd optionnels ; un binaire empaqueté doit utiliser un chemin relatif préfixé ./. streamable-http et le sse héritage optionnel veulent une URL absolue. Hors boucle locale, HTTPS obligatoire. La spec est nette : pas de secrets dans headers ; OAuth et identifiants sont gérés par le client, pas des champs portables. Entrée invalide, transport non supporté ou poignée de main ratée : on saute seulement ce serveur.

Le JSON Schema apparaît trois fois. Ne les mélangez pas dans un fichier. D’abord les contrats de paquet : plugin.schema.json et mcp.schema.json — le plugin peut-il être découvert. Ensuite les entrées d’outil : inputSchema MCP — les arguments du modèle ont-ils la bonne forme. Enfin l’OpenAPI ou la sortie structurée de votre API métier. Si le premier échoue, le client n’entre jamais dans la boîte. Si le second échoue, tools/call meurt à l’exécution. La chaîne de validation est dans l’article MCP Schema ci-dessus. Ci-dessous un mcp.json avec stdio local et Streamable HTTP distant.

{
  "$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json",
  "mcpServers": {
    "invoice-tools": {
      "type": "stdio",
      "command": "./bin/invoice-mcp",
      "args": ["--data", "${PLUGIN_DATA}/invoices"],
      "cwd": "${PLUGIN_ROOT}"
    },
    "docs": {
      "type": "streamable-http",
      "url": "https://docs.example.com/mcp"
    }
  }
}
{
  "name": "searchInvoices",
  "description": "Query invoices by date range and status",
  "inputSchema": {
    "type": "object",
    "properties": {
      "startDate": { "type": "string", "format": "date" },
      "endDate": { "type": "string", "format": "date" },
      "status": { "type": "string", "enum": ["draft", "sent", "paid"] }
    },
    "required": ["startDate", "endDate"]
  }
}

Ce que Google a livré en 2026 : Developer Plugin, Agents CLI, Data Agent Kit

Empilez les deux annonces. Août : rejoindre le TSC (Amazon, Cursor, Microsoft, OpenAI, Vercel étaient déjà core maintainers) et soutenir le format dans les produits Google. Septembre : publier le vaisseau google-cloud-developer sur google/skills. Ce n’est pas « encore un wrapper gcloud ». C’est un plugin de fondation : auth, projets, garde-fous gcloud, plus le MCP Developer Knowledge pour ancrer l’agent sur la doc officielle actuelle plutôt qu’un blog d’il y a un an. L’install passe par le marketplace ou la CLI de chaque client. Les clés restent en variables d’environnement, pas dans les headers de mcp.json — exactement la spec qui refuse de rendre les secrets portables.

Deux autres lignes dans le même écosystème. Agents CLI emballe échafaudage ADK, eval, déploiement, observabilité et publication pour qu’Antigravity, Gemini CLI, Claude Code et Cursor sachent construire des agents sur Google Cloud. Data Agent Kit emballe skills et MCP pour BigQuery, Spanner, Cloud SQL et le plan données. Les deux pouvaient déjà livrer des skills. Ils utilisent désormais une arborescence qui n’est pas privée à Google. Votre plugin factures et le plugin cloud de Google se valident contre les mêmes schémas.

Ne mélangez pas avec A2A. Un plugin répond à « comment cet agent gagne un jeu de skills et d’outils ». Une Agent Card A2A répond à « comment un autre agent est découvert et délégué ». Le MCP dans la boîte reste une main vers le bas. Les collègues latéraux restent des Agent Cards et des Tasks. Couches : A2A vs MCP. Envelopper tout un agent distant comme un seul outil dans mcp.json, et les clarifications multi-tours plus les callbacks asynchrones feront éclater la forme d’appel de fonction.

Ce que Google livre Ce qu’il y a dans la boîte À quoi vous l’utilisez
google-cloud-developerSkills fondation Cloud + MCP Developer KnowledgeTout client compatible qui doit faire l’auth GCP et la doc
Plugin Agents CLISkills cycle de vie ADK (échafaudage / eval / déploiement)Un coding agent qui doit faire de l’ingénierie d’agents sur Cloud
Data Agent KitSkills et MCP BigQuery, Spanner, Cloud SQLPipelines et requêtes qui suivent l’agent, pas un IDE

Vérifier les deux contrats dans JSONVue

Avant de publier, gardez quatre fixtures : un plugin.json légal, un manifeste avec un champ de tête en trop, un mcp.json légal, une entrée dont command vaut ../bin/escape. Le premier doit passer le schéma officiel. Le second doit être signalé et ignoré — le plugin charge encore. Si votre CI le traite comme fatal, vous êtes plus stricts que le client ; sachez-le. Le troisième vérifie type et chemins. Le quatrième doit échouer : un chemin relatif qui sort de la racine du plugin est une erreur dure.

Un cinquième fixture : un inputSchema d’outil et un vrai objet arguments tools/call. Un contrat de paquet vert ne veut pas dire que le modèle a bien rempli les dates. N’entassez pas les deux schémas dans un fichier « validation générique ». L’un est la découverte, l’autre l’invocation. Le MCP Developer Knowledge utilise une clé API au runtime client. Ce que vous validez dans git est un mcp.json sans secrets.

Dans le navigateur :Formater du JSONpour voir si les deux manifestes parsent ;Valider JSON Schemapour $schema, name, mcpServers ;JSON Diffpour comparer le mcp.json du dépôt à un export natif du client. Les données restent sur cette machine. Suite :MCP et JSON Schema, ce qu’est MCP, et comment A2A et MCP se partagent le travail.

Liés : Qu’est-ce que MCP, MCP et JSON Schema, A2A vs MCP, Qu’est-ce qu’un AI Agent.

FAQ

Agent Plugins est-il un format propriétaire Google ?

Non. 1.0.0 est publié par un TSC ouvert. Les core maintainers incluent Amazon, Cursor, Microsoft, OpenAI, Vercel ; Google a rejoint en août 2026. Le Google Cloud Developer Plugin est un paquet conforme, pas la spec. Votre plugin n’a pas à vivre dans google/skills pour être un Agent Plugin.

Je n’ai qu’un skill. Dois-je le mettre dans un plugin ?

En général non. Google l’a écrit : un skill, un serveur MCP ou un client se installe plus simplement en natif. Emballez quand deux choses ou plus doivent voyager ensemble — un MCP qui interroge des chiffres et un skill qui écrit le résumé hebdo. Emballez trop tôt et vous n’ajoutez qu’un manifeste à tenir.

plugin.json est-il la même chose que gemini-extension.json de Gemini CLI ?

Non. Gemini CLI a toujours son manifeste d’extension, et MCP peut vivre dans gemini-extension.json. Agent Plugins pousse MCP vers mcp.json à la racine ; le manifeste est fermé et ne peut pas inliner les composants. Les clients projettent le format portable sur leur config native. Différenciez les deux fichiers dans JSONVue plutôt que de deviner des alias de champs.

Valider plugin.json remplace-t-il valider inputSchema ?

Non. Le schéma de manifeste ne répond qu’à « ce paquet peut-il être découvert ». Le schéma d’outil répond à « les arguments de ce saut sont-ils légaux ». Le premier peut passer alors que startDate manque. Deux contrats, deux contrôles. Ne partagez pas un helper « parse juste ».

Résumé et suite

Google Agent Plugins en 2026 tient en une phrase : un format de paquet ouvert qui place des Skills et des serveurs MCP déjà portables dans des répertoires fixes. Google s’en sert pour livrer Cloud Developer Plugin, Agents CLI et Data Agent Kit — pas pour inventer un quatrième protocole d’outils.

Livrez dans cet ordre : faire parser plugin.json, garder name légal, figer $schema sur 1.0.0 ; puis décider si vous avez besoin de skills/ et mcp.json ; puis vérifier les contrats de paquet avec les schémas officiels et les arguments d’outil avec un second schéma. Gardez les fixtures dans JSONVue. Le détail de protocole est dans les articles MCP ; la délégation inter-agents dans l’article A2A.