Intégration Antigravity & Google Workspace
Débloquez la puissance de l'extension Google Workspace pour Gemini CLI directement dans votre IDE Antigravity.
Prérequis
Avant de commencer, assurez-vous que votre environnement est prêt :
- Gemini CLI : Doit être installé et authentifié.
- Google Workspace Extension : Doit être installée et vérifiée.
gemini extensions list pour localiser vos
extensions.
Le Problème de Compatibilité
Vous avez peut-être essayé d'ajouter l'extension Workspace directement dans Antigravity et rencontré cette erreur :
La Cause : L'extension Google Workspace utilise des points dans les noms d'outils
(ex: docs.create). Or, le client MCP de Google Antigravity impose une expression
régulière stricte qui n'autorise que les caractères alphanumériques, les tirets bas et les traits
d'union.
La Solution : Script Proxy
Pour contourner ce problème sans modifier le code source de l'extension (ce qui casserait les mises à jour), nous utilisons un script "Proxy" Node.js.
Ce script agit comme un intermédiaire :
- Sanitization : Il remplace les points par des tirets (
docs.create->docs-create) avant d'envoyer la liste à Antigravity. - Restauration : Lorsqu'Antigravity appelle un outil, le proxy rétablit le nom original avant de transmettre la requête à l'extension.
Mise en place
Créez un fichier nommé proxy.js dans le même répertoire que l'extension (généralement
~/.gemini/extensions/google-workspace/dist/) et collez le code suivant :
/**
* Proxy for the MCP server of Google Workspace Extension for Gemini CLI.
* It converts characters in tool names that do not match the regex rule
* into hyphens for the client.
*/
const { spawn } = require("child_process");
const readline = require("readline");
const path = require("path");
const targetScript = process.argv[2];
if (!targetScript) {
console.error("Error: Please provide the target script file.");
process.exit(1);
}
const toolNameMap = new Map();
const serverProcess = spawn("node", [targetScript], {
stdio: ["pipe", "pipe", process.stderr],
});
function sanitizeToolName(originalName) {
const sanitized = originalName.replace(/[^a-zA-Z0-9_-]/g, "-");
if (sanitized !== originalName) {
toolNameMap.set(sanitized, originalName);
}
return sanitized;
}
function restoreToolName(sanitizedName) {
return toolNameMap.get(sanitizedName) || sanitizedName;
}
const inputRl = readline.createInterface({
input: process.stdin, output: null, terminal: false,
});
inputRl.on("line", (line) => {
try {
const request = JSON.parse(line);
if (request.method === "tools/call" && request.params && request.params.name) {
const originalName = restoreToolName(request.params.name);
request.params.name = originalName;
serverProcess.stdin.write(JSON.stringify(request) + "\n");
} else {
serverProcess.stdin.write(line + "\n");
}
} catch (e) {
serverProcess.stdin.write(line + "\n");
}
});
const outputRl = readline.createInterface({
input: serverProcess.stdout, output: null, terminal: false,
});
outputRl.on("line", (line) => {
try {
const response = JSON.parse(line);
if (response.result && Array.isArray(response.result.tools)) {
response.result.tools = response.result.tools.map((tool) => {
if (tool.name) tool.name = sanitizeToolName(tool.name);
return tool;
});
console.log(JSON.stringify(response));
} else {
console.log(line);
}
} catch (e) {
console.log(line);
}
});
serverProcess.on("close", (code) => process.exit(code));
process.on("SIGINT", () => {
serverProcess.kill("SIGINT");
process.exit();
});
Configuration Antigravity
Mettez à jour votre fichier mcp_config.json pour router le trafic via le proxy :
{
"mcpServers": {
"tools-for-mcp-server-extension": {
"command": "node",
"args": [
"/home/{username}/.gemini/extensions/google-workspace/dist/proxy.js",
"/home/{username}/.gemini/extensions/google-workspace/dist/index.js"
]
}
}
}
{username} par votre nom d'utilisateur réel.
Validation & Tests
Une fois la configuration mise à jour, rafraîchissez les serveurs MCP. L'erreur devrait disparaître.
Vous pouvez maintenant tester l'intégration avec des prompts en langage naturel dans Antigravity :
Prompt : "Search a file 'sample file for searching' on Google Drive."
Prompt : "Get a text from a Google Document named 'sample Google Document'."
Résumé
Cette solution permet de combiner l'extension officielle Google Workspace (avec son authentification simplifiée) et l'IDE Google Antigravity. Le script proxy résout élégamment le conflit de nommage, ouvrant la voie à une automatisation agentique fluide et puissante.