{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "7726c8ac-204b-4464-b4eb-8cde21dbe515",
      "name": "Google Drive MCP Server",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        720,
        -320
      ],
      "parameters": {
        "path": "a289c719-fb71-4b08-97c6-79d12645dc7e"
      },
      "typeVersion": 1
    },
    {
      "id": "b0645471-cf3d-4fe9-b313-1bb3267f32b5",
      "name": "Search Files from Gdrive",
      "type": "n8n-nodes-base.googleDriveTool",
      "position": [
        240,
        -96
      ],
      "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') }}"
      },
      "typeVersion": 3
    },
    {
      "id": "70d3d7a8-3058-450d-9659-ceb87c79b2e0",
      "name": "Create a document in Google Docs",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        448,
        -96
      ],
      "parameters": {
        "title": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Title', ``, 'string') }}",
        "folderId": "1L3CaQB_khbHGb4HZO-qyDDQCvZfut3jY"
      },
      "typeVersion": 2
    },
    {
      "id": "548e33dc-c80e-448f-8dd0-d32de30abc00",
      "name": "Get a document in Google Docs",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        656,
        -96
      ],
      "parameters": {
        "operation": "get",
        "documentURL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Doc_ID_or_URL', ``, 'string') }}"
      },
      "typeVersion": 2
    },
    {
      "id": "f2024410-0e71-42cf-b06e-d83d5667edc7",
      "name": "Update a document in Google Docs using Find and Replace",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        864,
        -96
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Text', ``, 'string') }}",
              "action": "replaceAll",
              "matchCase": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Match_Case', ``, 'boolean') }}",
              "replaceText": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_New_Text', ``, 'string') }}"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Doc_ID_or_URL', ``, 'string') }}"
      },
      "typeVersion": 2
    },
    {
      "id": "c0cb449d-ccb4-4573-8716-3243e8395050",
      "name": "Add Text to a document in Google Docs",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        1072,
        -96
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Text', ``, 'string') }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Doc_ID_or_URL', ``, 'string') }}",
        "descriptionType": "manual",
        "toolDescription": "Add text to the end of a document in Google Docs"
      },
      "typeVersion": 2
    },
    {
      "id": "e5358578-99c0-4d4a-943f-a2643dc50a59",
      "name": "Add Page Break to the end of a document in Google Docs1",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        1296,
        -96
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "action": "insert",
              "object": "pageBreak"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Doc_ID_or_URL', ``, 'string') }}",
        "updateFields": {
          "writeControlObject": {
            "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Revision_ID', ``, 'string') }}"
          }
        },
        "descriptionType": "manual",
        "toolDescription": "Add page break to the end of a document in Google Docs"
      },
      "typeVersion": 2
    },
    {
      "id": "1c8b55b9-750b-476d-b91b-5547990b7045",
      "name": "Create Checkbox List in a document in Google Docs1",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        448,
        64
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "action": "create",
              "object": "paragraphBullets",
              "endIndex": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_End_Index', ``, 'number') }}",
              "startIndex": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Start_Index', ``, 'number') }}",
              "bulletPreset": "BULLET_CHECKBOX"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Doc_ID_or_URL', ``, 'string') }}",
        "updateFields": {
          "writeControlObject": {
            "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Revision_ID', ``, 'string') }}"
          }
        },
        "descriptionType": "manual",
        "toolDescription": "Create Checkbox list from paragraphs of a document in Google Docs using index"
      },
      "typeVersion": 2
    },
    {
      "id": "bea96516-cb71-421c-bcd0-0c93529e1ef1",
      "name": "Create Bullet List in a document in Google Docs",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        240,
        64
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "action": "create",
              "object": "paragraphBullets",
              "endIndex": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_End_Index', ``, 'number') }}",
              "startIndex": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Start_Index', ``, 'number') }}"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Doc_ID_or_URL', ``, 'string') }}",
        "updateFields": {
          "writeControlObject": {
            "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Revision_ID', ``, 'string') }}"
          }
        },
        "descriptionType": "manual",
        "toolDescription": "Create Bullet List from paragraphs of a document in Google Docs using index"
      },
      "typeVersion": 2
    },
    {
      "id": "73172169-dbd4-42f2-826c-86fe7bab7ffd",
      "name": "Create Numbered List in a document in Google Docs",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        656,
        64
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "action": "create",
              "object": "paragraphBullets",
              "endIndex": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_End_Index', ``, 'number') }}",
              "startIndex": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Start_Index', ``, 'number') }}",
              "bulletPreset": "NUMBERED_DECIMAL_NESTED"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Doc_ID_or_URL', ``, 'string') }}",
        "updateFields": {
          "writeControlObject": {
            "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Revision_ID', ``, 'string') }}"
          }
        },
        "descriptionType": "manual",
        "toolDescription": "Create Numbered list from paragraphs of a document in Google Docs using index"
      },
      "typeVersion": 2
    },
    {
      "id": "3609d5c9-7379-4c02-bd60-aa6f53422852",
      "name": "Insert Empty Table to the end of a document in Google Docs1",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        864,
        64
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "rows": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Rows', ``, 'number') }}",
              "action": "insert",
              "object": "table",
              "columns": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Columns', ``, 'number') }}"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Doc_ID_or_URL', ``, 'string') }}",
        "updateFields": {
          "writeControlObject": {
            "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Revision_ID', ``, 'string') }}"
          }
        },
        "descriptionType": "manual",
        "toolDescription": "Create Empty table to the end of a document in Google Docs"
      },
      "typeVersion": 2
    },
    {
      "id": "7c39abdf-da09-49c5-b452-507fda4772e5",
      "name": "Insert Empty Table to a document in Google Docs using Index",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        1072,
        64
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "rows": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Rows', ``, 'number') }}",
              "index": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Index', ``, 'number') }}",
              "action": "insert",
              "object": "table",
              "columns": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Columns', ``, 'number') }}",
              "locationChoice": "location"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Doc_ID_or_URL', ``, 'string') }}",
        "updateFields": {
          "writeControlObject": {
            "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Revision_ID', ``, 'string') }}"
          }
        },
        "descriptionType": "manual",
        "toolDescription": "Create Empty table to a document in Google Docs using index"
      },
      "typeVersion": 2
    },
    {
      "id": "a19cb50c-b144-4cd0-8ff3-4ecae24a763e",
      "name": "Insert Page Break to a document in Google Docs using Index",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        1520,
        -96
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "index": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Index', ``, 'number') }}",
              "action": "insert",
              "object": "pageBreak",
              "locationChoice": "location"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Doc_ID_or_URL', ``, 'string') }}",
        "updateFields": {
          "writeControlObject": {
            "value": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Revision_ID', ``, 'string') }}"
          }
        },
        "descriptionType": "manual",
        "toolDescription": "Add page break to a document in Google Docs using Index"
      },
      "typeVersion": 2
    },
    {
      "id": "d5655a38-0eec-4411-b93c-fdc238b1e006",
      "name": "Insert Text to the end of a document in Google Docs",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        1296,
        64
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Text', ``, 'string') }}",
              "action": "insert"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Doc_ID_or_URL', ``, 'string') }}"
      },
      "typeVersion": 2
    },
    {
      "id": "5631701c-6abf-4ac6-9f88-3a074f64f466",
      "name": "Insert Text to a document in Google Docs using Index",
      "type": "n8n-nodes-base.googleDocsTool",
      "position": [
        1520,
        64
      ],
      "parameters": {
        "actionsUi": {
          "actionFields": [
            {
              "text": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Text', ``, 'string') }}",
              "index": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('actionFields0_Index', ``, 'number') }}",
              "action": "insert",
              "locationChoice": "location"
            }
          ]
        },
        "operation": "update",
        "documentURL": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('Doc_ID_or_URL', ``, 'string') }}"
      },
      "typeVersion": 2
    },
    {
      "id": "6eeebb92-2cd7-4f9a-be12-ae9d3c24d405",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -736,
        -400
      ],
      "parameters": {
        "width": 288,
        "height": 640,
        "content": "## Google Docs MCP Access Server\nThis MCP server enables coding agents such as Claude, ChatGPT (with MCP support),\nClawed Code, and other MCP-compatible clients to interact with **Google Docs**\nprogrammatically \u2014 including reading, writing, editing, and structuring content.\n\nMany agents today can *search Google Drive*, but cannot reliably **edit or mutate**\ndocuments. This workflow fills that gap by exposing Google Docs actions via MCP.\n\nSupported operations include:\n* Search files in Google Drive\n* Create a new Google Doc\n* Get a Google Doc\u2019s content\n* Update a Google Doc (find & replace, insert text, page breaks, bullets, tables)\n* List formatting actions (checkbox list, bullet list, numbered list)\n"
      },
      "typeVersion": 1
    },
    {
      "id": "deddf09e-0f61-4376-92f9-fac50ac421ec",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -432,
        -400
      ],
      "parameters": {
        "width": 288,
        "height": 640,
        "content": "## Why This Google Docs MCP Server Matters\nCoding agents often struggle with Drive-only access:\n* They can *find* docs via Drive search\u2026\n* \u2026but **cannot reliably open, edit, or format content**.\n\nThis workflow standardizes document interactions via MCP:\n* Agents send structured requests to read or modify a doc\n* Your server triggers Google Docs actions in n8n\n* Results are returned to the agent in a structured response\n\nResult: richer Doc automation for workflows like:\n* auto-generating reports based on Drive search\n* cleaning or restructuring docs via AI\n* formatting checklists, bullets, tables programmatically\n"
      },
      "typeVersion": 1
    },
    {
      "id": "f6d906a5-a0b1-4f18-ac66-feb66d2ae261",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -128,
        -400
      ],
      "parameters": {
        "width": 288,
        "height": 640,
        "content": "## How This MCP Server Works\n1. **Agent Sends a Request**  \n   The MCP client asks to *search docs*, *create*, *get*, or *update* a Google Doc.\n\n2. **Trigger Receives Input**  \n   The MCP Server Trigger handles structured inputs such as:\n   * search query\n   * document URL/ID\n   * text edits, replace instructions, formatting commands\n\n3. **Google Drive & Docs Tools Execute**  \n   * Drive search finds matching files\n   * Google Docs actions read/edit content\n   * Use cases include find & replace, insert text, page breaks, bullet lists, tables\n\n4. **Return Output to Agent**  \n   Results, status, or updated content is sent back to the client in a clean MCP response.\n"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Search Files from Gdrive": {
      "ai_tool": [
        [
          {
            "node": "Google Drive MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get a document in Google Docs": {
      "ai_tool": [
        [
          {
            "node": "Google Drive MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Create a document in Google Docs": {
      "ai_tool": [
        [
          {
            "node": "Google Drive MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Add Text to a document in Google Docs": {
      "ai_tool": [
        [
          {
            "node": "Google Drive MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Create Bullet List in a document in Google Docs": {
      "ai_tool": [
        [
          {
            "node": "Google Drive MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Create Numbered List in a document in Google Docs": {
      "ai_tool": [
        [
          {
            "node": "Google Drive MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Create Checkbox List in a document in Google Docs1": {
      "ai_tool": [
        [
          {
            "node": "Google Drive MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Insert Text to the end of a document in Google Docs": {
      "ai_tool": [
        [
          {
            "node": "Google Drive MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Insert Text to a document in Google Docs using Index": {
      "ai_tool": [
        [
          {
            "node": "Google Drive MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Add Page Break to the end of a document in Google Docs1": {
      "ai_tool": [
        [
          {
            "node": "Google Drive MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Update a document in Google Docs using Find and Replace": {
      "ai_tool": [
        [
          {
            "node": "Google Drive MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Insert Page Break to a document in Google Docs using Index": {
      "ai_tool": [
        [
          {
            "node": "Google Drive MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Insert Empty Table to a document in Google Docs using Index": {
      "ai_tool": [
        [
          {
            "node": "Google Drive MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Insert Empty Table to the end of a document in Google Docs1": {
      "ai_tool": [
        [
          {
            "node": "Google Drive MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  }
}