Construir un servidor MCP de Google Drive personalizado
Este es unBuilding Blocks, AIflujo de automatización del dominio deautomatización que contiene 17 nodos.Utiliza principalmente nodos como Set, Switch, GoogleDrive, ExtractFromFile, GoogleDriveTool, combinando tecnología de inteligencia artificial para lograr automatización inteligente. Construir un servidor MCP personalizado para Google Drive
- •Credenciales de API de Google Drive
- •Clave de API de OpenAI
Nodos utilizados (17)
{
"meta": {
"instanceId": "408f9fb9940c3cb18ffdef0e0150fe342d6e655c3a9fac21f0f644e8bedabcd9",
"templateCredsSetupCompleted": true
},
"nodes": [
{
"id": "fb5b682b-5e30-497e-b465-c3369bb3c2e3",
"name": "Nota adhesiva",
"type": "n8n-nodes-base.stickyNote",
"position": [
-32,
-20
],
"parameters": {
"color": 7,
"width": 680,
"height": 660,
"content": "## 1. Set up an MCP Server Trigger\n[Read more about the MCP Server Trigger](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.mcptrigger)"
},
"typeVersion": 1
},
{
"id": "cfc2c7f1-a6ee-42a9-b955-e5bce012b6e1",
"name": "Nota adhesiva 3",
"type": "n8n-nodes-base.stickyNote",
"position": [
-40,
-160
],
"parameters": {
"color": 5,
"width": 380,
"height": 100,
"content": "### Always Authenticate Your Server!\nBefore going to production, it's always advised to enable authentication on your MCP server trigger."
},
"typeVersion": 1
},
{
"id": "79586d35-0582-4da8-91da-5bc8451c2089",
"name": "Cuando se ejecuta por otro flujo de trabajo",
"type": "n8n-nodes-base.executeWorkflowTrigger",
"position": [
800,
360
],
"parameters": {
"workflowInputs": {
"values": [
{
"name": "operation"
},
{
"name": "folderId"
},
{
"name": "fileId"
}
]
}
},
"typeVersion": 1.1
},
{
"id": "02aee033-58e8-4f33-a18d-b872840e81d8",
"name": "Google Drive MCP Server",
"type": "@n8n/n8n-nodes-langchain.mcpTrigger",
"position": [
160,
160
],
"webhookId": "a289c719-fb71-4b08-97c6-79d12645dc7e",
"parameters": {
"path": "a289c719-fb71-4b08-97c6-79d12645dc7e"
},
"typeVersion": 1
},
{
"id": "e0e50653-d98a-4ad4-a2ed-e1b73332c380",
"name": "Nota adhesiva 1",
"type": "n8n-nodes-base.stickyNote",
"position": [
680,
-20
],
"parameters": {
"color": 7,
"width": 1340,
"height": 860,
"content": "## 2. Handle Multiple Binary Formats via Conversion and AI\n[Read more about the PostgreSQL Node](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.postgres/)\n\nMCP clients (or rather, the AI agents) still expect and require text responses from our MCP server.\nN8N can provide the right conversion tools to parse most text formats such as PDF, CSV and XML.\nFor images, audio and video, consider using multimodal LLMs to describe or transcribe the file instead."
},
"typeVersion": 1
},
{
"id": "6be1ff49-5edc-42d2-87de-09d207ee7733",
"name": "Descargar archivo 1",
"type": "n8n-nodes-base.googleDrive",
"position": [
1160,
360
],
"parameters": {
"fileId": {
"__rl": true,
"mode": "id",
"value": "={{ $json.fileId }}"
},
"options": {
"googleFileConversion": {
"conversion": {
"docsToFormat": "text/plain",
"slidesToFormat": "application/pdf"
}
}
},
"operation": "download"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "yOwz41gMQclOadgu",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "91b0a549-0494-48a1-bdf3-6c2b91409d01",
"name": "Tipo de archivo",
"type": "n8n-nodes-base.switch",
"position": [
1340,
320
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "pdf",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "7b6958ce-d553-4379-a5d6-743f39b342d0",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $binary.data.mimeType }}",
"rightValue": "application/pdf"
}
]
},
"renameOutput": true
},
{
"outputKey": "csv",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "d0816a37-ac06-49e3-8d63-17fcd061e33f",
"operator": {
"name": "filter.operator.equals",
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $binary.data.mimeType }}",
"rightValue": "text/csv"
}
]
},
"renameOutput": true
},
{
"outputKey": "image",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "589540e1-1439-41e3-ba89-b27f5e936190",
"operator": {
"type": "boolean",
"operation": "true",
"singleValue": true
},
"leftValue": "={{\n[\n 'image/jpeg',\n 'image/jpg',\n 'image/png',\n 'image/gif'\n].some(mimeType => $binary.data.mimeType === mimeType)\n}}",
"rightValue": ""
}
]
},
"renameOutput": true
},
{
"outputKey": "audio",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b8fc61a1-6057-4db3-960e-b8ddcbdd0f31",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $binary.data.mimeType }}",
"rightValue": "audio"
}
]
},
"renameOutput": true
},
{
"outputKey": "video",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "959d65a6-372f-4978-b2d1-f28aa1e372c6",
"operator": {
"type": "string",
"operation": "contains"
},
"leftValue": "={{ $binary.data.mimeType }}",
"rightValue": "video"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "d88ed202-1121-41db-859d-b31d53d46292",
"name": "Operación",
"type": "n8n-nodes-base.switch",
"position": [
980,
360
],
"parameters": {
"rules": {
"values": [
{
"outputKey": "ReadFile",
"conditions": {
"options": {
"version": 2,
"leftValue": "",
"caseSensitive": true,
"typeValidation": "strict"
},
"combinator": "and",
"conditions": [
{
"id": "b03bb746-dc4e-469c-b8e6-a34c0aa8d0a6",
"operator": {
"type": "string",
"operation": "equals"
},
"leftValue": "={{ $json.operation }}",
"rightValue": "readFile"
}
]
},
"renameOutput": true
}
]
},
"options": {}
},
"typeVersion": 3.2
},
{
"id": "7e8791e6-24c2-441a-8efb-7f4375f2519b",
"name": "Extraer de PDF",
"type": "n8n-nodes-base.extractFromFile",
"position": [
1620,
80
],
"parameters": {
"options": {},
"operation": "pdf"
},
"typeVersion": 1
},
{
"id": "2b33623c-cea4-4a83-80ef-f852b9a3d126",
"name": "Extraer de CSV",
"type": "n8n-nodes-base.extractFromFile",
"position": [
1620,
260
],
"parameters": {
"options": {
"encoding": "utf-8",
"headerRow": false,
"relaxQuotes": true,
"includeEmptyCells": true
}
},
"typeVersion": 1
},
{
"id": "6ca2542d-225e-4a65-b5ce-3edafb11379c",
"name": "Obtener respuesta de PDF",
"type": "n8n-nodes-base.set",
"position": [
1780,
80
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a481cde3-b8ec-4d97-aa13-4668bd66c24d",
"name": "response",
"type": "string",
"value": "={{ $json.text }}"
}
]
}
},
"typeVersion": 3.4
},
{
"id": "3d1c4aa6-cac1-4957-ab7e-3134368e4b53",
"name": "Obtener respuesta de CSV",
"type": "n8n-nodes-base.set",
"position": [
1780,
260
],
"parameters": {
"options": {},
"assignments": {
"assignments": [
{
"id": "a481cde3-b8ec-4d97-aa13-4668bd66c24d",
"name": "response",
"type": "string",
"value": "={{\n$input.all()\n .map(item => item.json.row.map(cell => `\"${cell}\"`).join(','))\n .join('\\n')\n}}"
}
]
}
},
"executeOnce": true,
"typeVersion": 3.4
},
{
"id": "141444f9-e937-41f9-ab97-09624646ddba",
"name": "Leer archivo desde GDrive",
"type": "@n8n/n8n-nodes-langchain.toolWorkflow",
"position": [
400,
380
],
"parameters": {
"name": "ReadFile",
"workflowId": {
"__rl": true,
"mode": "id",
"value": "={{ $workflow.id }}"
},
"description": "Call this tool to download and read the contents of a file within google drive.",
"workflowInputs": {
"value": {
"fileId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('fileId', ``, 'string') }}",
"folderId": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('folderId', ``, 'string') }}",
"operation": "readFile"
},
"schema": [
{
"id": "operation",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "operation",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "folderId",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "folderId",
"defaultMatch": false,
"canBeUsedToMatch": true
},
{
"id": "fileId",
"type": "string",
"display": true,
"removed": false,
"required": false,
"displayName": "fileId",
"defaultMatch": false,
"canBeUsedToMatch": true
}
],
"mappingMode": "defineBelow",
"matchingColumns": [],
"attemptToConvertTypes": false,
"convertFieldsToString": false
}
},
"typeVersion": 2.1
},
{
"id": "b5851527-0b57-447b-ac8c-10408a684862",
"name": "Buscar archivos en GDrive",
"type": "n8n-nodes-base.googleDriveTool",
"position": [
240,
380
],
"parameters": {
"limit": 10,
"filter": {
"driveId": {
"mode": "list",
"value": "My Drive"
},
"whatToSearch": "files"
},
"options": {},
"resource": "fileFolder",
"queryString": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Search_Query', ``, 'string') }}"
},
"credentials": {
"googleDriveOAuth2Api": {
"id": "yOwz41gMQclOadgu",
"name": "Google Drive account"
}
},
"typeVersion": 3
},
{
"id": "98197c91-c7e9-4fbb-a2b1-c16c873fa0a1",
"name": "Analizar imagen",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1620,
440
],
"parameters": {
"modelId": {
"__rl": true,
"mode": "list",
"value": "gpt-4o-mini",
"cachedResultName": "GPT-4O-MINI"
},
"options": {},
"resource": "image",
"inputType": "base64",
"operation": "analyze"
},
"credentials": {
"openAiApi": {
"id": "8gccIjcuf3gvaoEr",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "b44a787a-c670-47e1-b87e-d880425ce610",
"name": "Transcribir audio",
"type": "@n8n/n8n-nodes-langchain.openAi",
"position": [
1620,
620
],
"parameters": {
"options": {},
"resource": "audio",
"operation": "transcribe"
},
"credentials": {
"openAiApi": {
"id": "8gccIjcuf3gvaoEr",
"name": "OpenAi account"
}
},
"typeVersion": 1.8
},
{
"id": "1e1a358d-769e-48c9-bf27-6a3cfaaacb14",
"name": "Nota adhesiva 2",
"type": "n8n-nodes-base.stickyNote",
"position": [
-500,
-420
],
"parameters": {
"width": 440,
"height": 1060,
"content": "## Try It Out!\n### This n8n demonstrates how to build a simple Google Drive MCP server to search and get contents of files from Google Drive.\n\nThis MCP example is based off an official MCP reference implementation which can be found here -https://github.com/modelcontextprotocol/servers/tree/main/src/gdrive\n\n### How it works\n* A MCP server trigger is used and connected to 1x Google Drive tool and 1x Custom Workflow tool.\n* The Google Drive tool is set to perform a search on files within our Google Drive folder.\n* The Custom Workflow tool downloads target files found in our drive and converts the binaries to their text representation. Eg. PDFs have only their text contents extracted and returned to the MCP client.\n\n### How to use\n* This Google Drive MCP server allows any compatible MCP client to manage a person or shared Google Drive. Simple select a drive or for better control, specify a folder within the drive to scope the operations to.\n* Connect your MCP client by following the n8n guidelines here - https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.mcptrigger/#integrating-with-claude-desktop\n* Try the following queries in your MCP client:\n * \"Please help me search for last month's expense reports.\"\n * \"What does the company policy document say about cancellations and refunds?\"\n\n### Requirements\n* Google Drive for documents.\n* OpenAI for image and audio understanding.\n* MCP Client or Agent for usage such as Claude Desktop - https://claude.ai/download\n\n### Customising this workflow\n* Add additional capabilities such as renaming, moving and/or deleting files.\n* Remember to set the MCP server to require credentials before going to production and sharing this MCP server with others!"
},
"typeVersion": 1
}
],
"pinData": {},
"connections": {
"91b0a549-0494-48a1-bdf3-6c2b91409d01": {
"main": [
[
{
"node": "7e8791e6-24c2-441a-8efb-7f4375f2519b",
"type": "main",
"index": 0
}
],
[
{
"node": "2b33623c-cea4-4a83-80ef-f852b9a3d126",
"type": "main",
"index": 0
}
],
[
{
"node": "98197c91-c7e9-4fbb-a2b1-c16c873fa0a1",
"type": "main",
"index": 0
}
],
[
{
"node": "b44a787a-c670-47e1-b87e-d880425ce610",
"type": "main",
"index": 0
}
],
[]
]
},
"d88ed202-1121-41db-859d-b31d53d46292": {
"main": [
[
{
"node": "6be1ff49-5edc-42d2-87de-09d207ee7733",
"type": "main",
"index": 0
}
]
]
},
"6be1ff49-5edc-42d2-87de-09d207ee7733": {
"main": [
[
{
"node": "91b0a549-0494-48a1-bdf3-6c2b91409d01",
"type": "main",
"index": 0
}
]
]
},
"2b33623c-cea4-4a83-80ef-f852b9a3d126": {
"main": [
[
{
"node": "3d1c4aa6-cac1-4957-ab7e-3134368e4b53",
"type": "main",
"index": 0
}
]
]
},
"7e8791e6-24c2-441a-8efb-7f4375f2519b": {
"main": [
[
{
"node": "6ca2542d-225e-4a65-b5ce-3edafb11379c",
"type": "main",
"index": 0
}
]
]
},
"141444f9-e937-41f9-ab97-09624646ddba": {
"ai_tool": [
[
{
"node": "02aee033-58e8-4f33-a18d-b872840e81d8",
"type": "ai_tool",
"index": 0
}
]
]
},
"b5851527-0b57-447b-ac8c-10408a684862": {
"ai_tool": [
[
{
"node": "02aee033-58e8-4f33-a18d-b872840e81d8",
"type": "ai_tool",
"index": 0
}
]
]
},
"79586d35-0582-4da8-91da-5bc8451c2089": {
"main": [
[
{
"node": "d88ed202-1121-41db-859d-b31d53d46292",
"type": "main",
"index": 0
}
]
]
}
}
}¿Cómo usar este flujo de trabajo?
Copie el código de configuración JSON de arriba, cree un nuevo flujo de trabajo en su instancia de n8n y seleccione "Importar desde JSON", pegue la configuración y luego modifique la configuración de credenciales según sea necesario.
¿En qué escenarios es adecuado este flujo de trabajo?
Avanzado - Bloques de construcción, Inteligencia Artificial
¿Es de pago?
Este flujo de trabajo es completamente gratuito, puede importarlo y usarlo directamente. Sin embargo, tenga en cuenta que los servicios de terceros utilizados en el flujo de trabajo (como la API de OpenAI) pueden requerir un pago por su cuenta.
Flujos de trabajo relacionados recomendados
Jimleuk
@jimleukFreelance consultant based in the UK specialising in AI-powered automations. I work with select clients tackling their most challenging projects. For business enquiries, send me an email at hello@jimle.uk LinkedIn: https://www.linkedin.com/in/jimleuk/ X/Twitter: https://x.com/jimle_uk
Compartir este flujo de trabajo