AutomationFlowsData & Sheets › AI-Powered Postgres CRUD Operations

AI-Powered Postgres CRUD Operations

Original n8n title: Workflow 3631

Workflow 3631. Uses postgresTool, executeWorkflowTrigger, toolWorkflow, postgres. Event-driven trigger; 15 nodes.

Event trigger★★★★☆ complexityAI-powered15 nodesPostgres ToolExecute Workflow TriggerTool WorkflowPostgresMcp Trigger
Data & Sheets Trigger: Event Nodes: 15 Complexity: ★★★★☆ AI nodes: yes Added:

This workflow follows the Execute Workflow Trigger → Postgres recipe pattern — see all workflows that pair these two integrations.

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "meta": {
    "templateCredsSetupCompleted": true
  },
  "nodes": [
    {
      "id": "0c49141e-128c-424e-afdf-ea131b7a3dd8",
      "name": "GetTableSchema",
      "type": "n8n-nodes-base.postgresTool",
      "position": [
        -460,
        220
      ],
      "parameters": {
        "query": "SELECT column_name, data_type FROM information_schema.columns WHERE table_name = $1",
        "options": {
          "queryReplacement": "={{ $fromAI('tableName', 'The name of the table.') }}"
        },
        "operation": "executeQuery",
        "descriptionType": "manual",
        "toolDescription": "Read a table's schema."
      },
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.6
    },
    {
      "id": "8ffeefb9-357c-41bc-8239-0c07c706be97",
      "name": "ListTables",
      "type": "n8n-nodes-base.postgresTool",
      "position": [
        -340,
        300
      ],
      "parameters": {
        "query": "SELECT table_name FROM information_schema.tables WHERE table_schema = 'public'",
        "options": {},
        "operation": "executeQuery",
        "descriptionType": "manual",
        "toolDescription": "List all available tables."
      },
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.6
    },
    {
      "id": "efcf7ff3-976e-448a-9d47-47a98f3b0fcb",
      "name": "When Executed by Another Workflow",
      "type": "n8n-nodes-base.executeWorkflowTrigger",
      "position": [
        280,
        200
      ],
      "parameters": {
        "workflowInputs": {
          "values": [
            {
              "name": "operation"
            },
            {
              "name": "tableName"
            },
            {
              "name": "values",
              "type": "object"
            },
            {
              "name": "where",
              "type": "object"
            }
          ]
        }
      },
      "typeVersion": 1.1
    },
    {
      "id": "abd292d7-fc2b-4e98-a474-b50e44d16b6c",
      "name": "CreateTableRecords",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        -240,
        400
      ],
      "parameters": {
        "name": "CreateTableRows",
        "workflowId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $workflow.id }}"
        },
        "description": "Call this tool to create a row in the database.",
        "workflowInputs": {
          "value": {
            "where": "={{ {} }}",
            "values": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values', `An object of key-value pair where key represents the column name.`, 'string') }}",
            "operation": "insert",
            "tableName": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('tableName', `Name of table to update`, 'string') }}"
          },
          "schema": [
            {
              "id": "operation",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "operation",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tableName",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "tableName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "values",
              "type": "object",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "values",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "where",
              "type": "object",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "where",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "4a71d42a-99a5-489e-b449-09c3c5081505",
      "name": "ReadTableRecord",
      "type": "n8n-nodes-base.postgres",
      "position": [
        760,
        0
      ],
      "parameters": {
        "query": "SELECT * FROM {{ $json.tableName }}\n{{ $json.where && Object.keys($json.where).length > 0\n  ? `WHERE ` + Object.keys($json.where).map((key,idx) => `${key} = $${idx+1}`).join(' AND ')\n  : ''\n}}",
        "options": {
          "queryReplacement": "={{ Object.values($json.where).join(',') }}"
        },
        "operation": "executeQuery"
      },
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.6,
      "alwaysOutputData": true
    },
    {
      "id": "bdc60aa8-9ab1-4bbd-8b9e-89c968d54043",
      "name": "Operation",
      "type": "n8n-nodes-base.switch",
      "position": [
        460,
        200
      ],
      "parameters": {
        "rules": {
          "values": [
            {
              "outputKey": "READ",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "81b134bc-d671-4493-b3ad-8df9be3f49a6",
                    "operator": {
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.operation }}",
                    "rightValue": "read"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "INSERT",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "8d57914f-6587-4fb3-88e0-aa1de6ba56c1",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.operation }}",
                    "rightValue": "insert"
                  }
                ]
              },
              "renameOutput": true
            },
            {
              "outputKey": "UPDATE",
              "conditions": {
                "options": {
                  "version": 2,
                  "leftValue": "",
                  "caseSensitive": true,
                  "typeValidation": "strict"
                },
                "combinator": "and",
                "conditions": [
                  {
                    "id": "7c38f238-213a-46ec-aefe-22e0bcb8dffc",
                    "operator": {
                      "name": "filter.operator.equals",
                      "type": "string",
                      "operation": "equals"
                    },
                    "leftValue": "={{ $json.operation }}",
                    "rightValue": "update"
                  }
                ]
              },
              "renameOutput": true
            }
          ]
        },
        "options": {}
      },
      "typeVersion": 3.2
    },
    {
      "id": "cdb5b556-3638-4fa5-94c6-bff0c03f6c89",
      "name": "UpdateTableRecord",
      "type": "n8n-nodes-base.postgres",
      "position": [
        760,
        400
      ],
      "parameters": {
        "query": "UPDATE {{ $json.tableName }}\nSET\n  {{ Object.keys($json.values)\n  .map((key,idx) => `${key} = $${idx+1}`)\n  .join(',')\n}}\nWHERE\n  {{ Object.keys($json.where)\n  .map((key,idx) => `${key} = $${idx+Object.keys($json.values).length+1}`)\n  .join(' AND ')\n}}",
        "options": {
          "queryReplacement": "={{ Object.values($json.values).join(',') }},{{ Object.values($json.where).join(',') }}"
        },
        "operation": "executeQuery"
      },
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.6
    },
    {
      "id": "9263fc78-321e-4c83-90d3-890dd87d6aed",
      "name": "UpdateTableRecords",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        -100,
        320
      ],
      "parameters": {
        "name": "UpdateTableRows",
        "workflowId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $workflow.id }}"
        },
        "description": "Call this tool to create a row in the database.",
        "workflowInputs": {
          "value": {
            "where": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('where', `An object of key-value pair where key represents the column name.`, 'string') }}",
            "values": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('values', `An object of key-value pair where key represents the column name.`, 'string') }}",
            "operation": "=update",
            "tableName": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('tableName', `Table to update`, 'string') }}"
          },
          "schema": [
            {
              "id": "operation",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "operation",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tableName",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "tableName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "values",
              "type": "object",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "values",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "where",
              "type": "object",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "where",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "dd7e28fb-b2c7-4084-bc9b-9aa3e0187682",
      "name": "CreateTableRecord",
      "type": "n8n-nodes-base.postgres",
      "position": [
        760,
        200
      ],
      "parameters": {
        "query": "INSERT INTO {{ $json.tableName }}\n  ({{ Object.keys($json.values).join(',') }})\nVALUES\n  ({{ Object.keys($json.values).map((_,idx) => `$${idx+1}`).join(',') }})",
        "options": {
          "queryReplacement": "={{ Object.values($json.values).join(',') }}"
        },
        "operation": "executeQuery"
      },
      "credentials": {
        "postgres": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.6
    },
    {
      "id": "324503c0-117b-45ec-97dd-7074eb1db22e",
      "name": "ReadTableRows",
      "type": "@n8n/n8n-nodes-langchain.toolWorkflow",
      "position": [
        20,
        240
      ],
      "parameters": {
        "name": "ReadTableRows",
        "workflowId": {
          "__rl": true,
          "mode": "id",
          "value": "={{ $workflow.id }}"
        },
        "description": "Call this tool to read a row in the database.",
        "workflowInputs": {
          "value": {
            "where": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('where', `An object of key-value pair where key represents the column name.`, 'string') }}",
            "values": "{}",
            "operation": "read",
            "tableName": "={{ /*n8n-auto-generated-fromAI-override*/ $fromAI('tableName', ``, 'string') }}"
          },
          "schema": [
            {
              "id": "operation",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "operation",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "tableName",
              "type": "string",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "tableName",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "values",
              "type": "object",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "values",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            },
            {
              "id": "where",
              "type": "object",
              "display": true,
              "removed": false,
              "required": false,
              "displayName": "where",
              "defaultMatch": false,
              "canBeUsedToMatch": true
            }
          ],
          "mappingMode": "defineBelow",
          "matchingColumns": [],
          "attemptToConvertTypes": false,
          "convertFieldsToString": false
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "9cf39ca3-b704-49ce-b6e2-db2703c4acad",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -520,
        -120
      ],
      "parameters": {
        "color": 7,
        "width": 680,
        "height": 660,
        "content": "## 1. MCP \uc11c\ubc84 \ud2b8\ub9ac\uac70 \uc124\uc815  \n[ MCP \uc11c\ubc84 \ud2b8\ub9ac\uac70\uc5d0 \ub300\ud574 \ub354 \uc77d\uae30 ](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.mcptrigger)"
      },
      "typeVersion": 1
    },
    {
      "id": "ac3d9b98-8f1e-4abd-972c-1725aac1ad1e",
      "name": "PostgreSQL MCP Server",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        -340,
        20
      ],
      "parameters": {
        "path": "a5fd7047-e31b-4c0d-bd68-c36072c3da0d"
      },
      "typeVersion": 1
    },
    {
      "id": "416a09d5-c327-410d-b951-a2d08402c6fe",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        180,
        -120
      ],
      "parameters": {
        "color": 7,
        "width": 820,
        "height": 720,
        "content": "## 2. \uc6d0\uc2dc SQL \ubb38 \ubc29\uc9c0\ub85c \ubcf4\uc548 \uc720\uc9c0\n[PostgreSQL Node\uc5d0 \ub300\ud574 \ub354 \uc77d\uae30](https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.postgres/)\n\n\ub300\ub9ac\uc778\uc774 \uc804\uccb4 \uc6d0\uc2dc SQL \ubb38\uc744 \uc81c\uacf5\ud558\ub3c4\ub85d \ud558\ub294 \uac83\uc774 \ub354 \uc27d\uc9c0\ub9cc, \ucd5c\uc545\uc758 \uacbd\uc6b0 \ub370\uc774\ud130\uac00 \ubaa8\ub974\uac8c \uc720\ucd9c\ub418\uac70\ub098 \uc0ad\uc81c\ub420 \uc218 \uc788\ub294 \uc2e4\uc81c \ubcf4\uc548 \uc704\ud5d8\uc5d0 \ub2f9\uc2e0\uc774\ub098 \ub2f9\uc2e0\uc758 \uc870\uc9c1\uc744 \ub178\ucd9c\uc2dc\ud0ac \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n\n\ub300\ub9ac\uc778\uc774 \ucffc\ub9ac\uc758 \ub9e4\uac1c\ubcc0\uc218\ub9cc \uc81c\uacf5\ud558\ub3c4\ub85d \uac15\uc81c\ud558\uba74 \uc774 \uc704\ud5d8\uc5d0 \ub300\ud574 \uc5b4\ub290 \uc815\ub3c4 \ubc29\uc5b4\ud560 \uc218 \uc788\uc73c\uba70, SQL \uc778\uc81d\uc158 \uacf5\uaca9\uc5d0 \ub300\ud55c \ucd5c\uc120\uc758 \uad00\ud589\uc73c\ub85c \ucffc\ub9ac \ub9e4\uac1c\ubcc0\uc218\ub97c \uc0ac\uc6a9\ud560 \uc218 \uc788\uac8c \ud569\ub2c8\ub2e4."
      },
      "typeVersion": 1
    },
    {
      "id": "0187fb3f-4c31-461d-84e9-4a4a0bf4188d",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1000,
        -560
      ],
      "parameters": {
        "width": 440,
        "height": 1320,
        "content": "## \uc9c1\uc811 \ud574\ubcf4\uc138\uc694!\n### \uc774 n8n\uc740 \uac04\ub2e8\ud55c PostgreSQL MCP \uc11c\ubc84\ub97c \uad6c\ucd95\ud558\uc5ec HR, \uae09\uc5ec, \ud310\ub9e4, \uc7ac\uace0 \ubc0f \uae30\ud0c0\uc640 \uac19\uc740 PostgreSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uad00\ub9ac\ud558\ub294 \ubc29\ubc95\uc744 \ubcf4\uc5ec\uc90d\ub2c8\ub2e4!\n\n\uc774 MCP \uc608\uc81c\ub294 \uacf5\uc2dd MCP \ucc38\uc870 \uad6c\ud604\uc744 \uae30\ubc18\uc73c\ub85c \ud558\uba70, \uc5ec\uae30\uc5d0\uc11c \ucc3e\uc744 \uc218 \uc788\uc2b5\ub2c8\ub2e4 - https://github.com/modelcontextprotocol/servers/tree/main/src/postgres\n\n### \uc791\ub3d9 \uc6d0\ub9ac\n* MCP \uc11c\ubc84 \ud2b8\ub9ac\uac70\uac00 \uc0ac\uc6a9\ub418\uba70, 5\uac1c\uc758 \ub3c4\uad6c(2\uac1c\uc758 PostgreSQL \ubc0f 3\uac1c\uc758 \ucee4\uc2a4\ud140 \uc6cc\ud06c\ud50c\ub85c)\uc5d0 \uc5f0\uacb0\ub429\ub2c8\ub2e4.\n* 2\uac1c\uc758 PostgreSQL \ub3c4\uad6c\ub294 \uac04\ub2e8\ud55c \uc77d\uae30 \uc804\uc6a9 \ucffc\ub9ac\uc774\ubbc0\ub85c, PostgreSQL \ub3c4\uad6c\ub97c \uac04\ub2e8\ud788 \uc0ac\uc6a9\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n* 3\uac1c\uc758 \ucee4\uc2a4\ud140 \uc6cc\ud06c\ud50c\ub85c \ub3c4\uad6c\ub294 \uc120\ud0dd, \uc0bd\uc785 \ubc0f \uc5c5\ub370\uc774\ud2b8 \ucffc\ub9ac\uc5d0 \uc0ac\uc6a9\ub418\uba70, \uc774\ub7ec\ud55c \uc791\uc5c5\uc740 \uc57d\uac04 \ub354 \uc2e0\uc911\ud55c \ucc98\ub9ac\uac00 \ud544\uc694\ud569\ub2c8\ub2e4.\n* \uc5d0\uc774\uc804\ud2b8\uac00 \uc6d0\uc2dc SQL \ucffc\ub9ac\ub97c \uc0ac\uc6a9\ud558\ub294 \uac83\uc774 \ub354 \uc27d\uc9c0\ub9cc, \ub9e4\uac1c\ubcc0\uc218\ub9cc \ud5c8\uc6a9\ud558\ub294 \uac83\uc774 \uc870\uae08 \ub354 \uc548\uc804\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4. \ucee4\uc2a4\ud140 \uc6cc\ud06c\ud50c\ub85c \ub3c4\uad6c\ub97c \uc0ac\uc6a9\ud558\uba74 \ub3c4\uad6c \uc785\ub825\uc5d0 \ub300\ud55c \uc81c\ud55c\ub41c \uc2a4\ud0a4\ub9c8\ub97c \uc815\uc758\ud558\uc5ec SQL \ubb38\uc744 \uc9c1\uc811 \uad6c\uc131\ud560 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n* 3\uac1c\uc758 \ucee4\uc2a4\ud140 \uc6cc\ud06c\ud50c\ub85c \ub3c4\uad6c\ub294 \uc774 \ud15c\ud50c\ub9bf\uc758 \ub3d9\uc77c\ud55c \"\uc6cc\ud06c\ud50c\ub85c \uc2e4\ud589\" \ud2b8\ub9ac\uac70\ub97c \ud2b8\ub9ac\uac70\ud558\uba70, \uc2a4\uc704\uce58\ub97c \ud1b5\ud574 \uc791\uc5c5\uc744 \uc62c\ubc14\ub978 \ud578\ub4e4\ub7ec\ub85c \ub77c\uc6b0\ud305\ud569\ub2c8\ub2e4.\n* \ub9c8\uc9c0\ub9c9\uc73c\ub85c, \ud45c\uc900 PostgreSQL \ub178\ub4dc\ub97c \uc0ac\uc6a9\ud558\uc5ec \uc120\ud0dd, \uc0bd\uc785 \ubc0f \uc5c5\ub370\uc774\ud2b8 \uc791\uc5c5\uc744 \ucc98\ub9ac\ud569\ub2c8\ub2e4. \uc751\ub2f5\uc740 MCP \ud074\ub77c\uc774\uc5b8\ud2b8\ub85c \ub2e4\uc2dc \ubcf4\ub0b4\uc9d1\ub2c8\ub2e4.\n\n### \uc0ac\uc6a9 \ubc29\ubc95\n* \uc774 PostgreSQL MCP \uc11c\ubc84\ub294 \uc120\ud0dd, \uc0dd\uc131 \ubc0f \uc5c5\ub370\uc774\ud2b8 \uc791\uc5c5\uc744 \uc9c0\uc6d0\ud558\uc5ec \ud638\ud658\ub418\ub294 MCP \ud074\ub77c\uc774\uc5b8\ud2b8\uac00 PostgreSQL \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uad00\ub9ac\ud560 \uc218 \uc788\uac8c \ud569\ub2c8\ub2e4. \uc11c\ubc84\ub97c \uc0ac\uc6a9\ud558\uae30 \uc804\uc5d0 \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub97c \uc900\ube44\ud574\uc57c \ud569\ub2c8\ub2e4.\n* MCP \ud074\ub77c\uc774\uc5b8\ud2b8\ub97c \uc5f0\uacb0\ud558\ub824\uba74 n8n \uc9c0\uce68\uc744 \ub530\ub974\uc138\uc694 - https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.mcptrigger/#integrating-with-claude-desktop\n* MCP \ud074\ub77c\uc774\uc5b8\ud2b8\uc5d0\uc11c \ub2e4\uc74c \ucffc\ub9ac\ub97c \uc2dc\ub3c4\ud574 \ubcf4\uc138\uc694:\n  * \"Alex\uac00 users \ud14c\uc774\ube14\uc5d0 \ud56d\ubaa9\uc774 \uc788\ub294\uc9c0 \ud655\uc778\ud574 \uc8fc\uc138\uc694. \uc5c6\uc73c\uba74 \uadf8\ub140\uc758 \ub808\ucf54\ub4dc\ub97c \uc0dd\uc131\ud574 \uc8fc\uc138\uc694.\"\n  * \"\uc9c0\ub09c \uc8fc\uc5d0 \uac00\uc7a5 \ub9ce\uc774 \ud314\ub9b0 \uc81c\ud488\uc740 \ubb34\uc5c7\uc778\uac00\uc694?\"\n  * \"\uc624\ub298 \uc544\uce68\uc5d0 \uc5ec\uc804\ud788 \uc5f4\ub9b0 \ub192\uc740 \uc6b0\uc120\uc21c\uc704 \uc9c0\uc6d0 \ud2f0\ucf13\uc758 \uc218\ub294 \uc5bc\ub9c8\uc778\uac00\uc694?\"\n\n### \uc694\uad6c \uc0ac\ud56d\n* \ub370\uc774\ud130\ubca0\uc774\uc2a4\ub85c PostgreSQL\uc744 \uc0ac\uc6a9\ud558\uc138\uc694. \uc774\ub294 Supabase\uc640 \uac19\uc740 \uc678\ubd80 \ub370\uc774\ud130\ubca0\uc774\uc2a4 \ub610\ub294 \ub0b4\ubd80\uc801\uc73c\ub85c \ud638\uc2a4\ud305\ud558\ub294 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uac00 \ub420 \uc218 \uc788\uc2b5\ub2c8\ub2e4.\n* MCP \ud074\ub77c\uc774\uc5b8\ud2b8 \ub610\ub294 \uc5d0\uc774\uc804\ud2b8(\uc608: Claude Desktop)\ub97c \uc0ac\uc6a9\ud558\uc138\uc694 - https://claude.ai/download\n\n### \uc774 \uc6cc\ud06c\ud50c\ub85c \uc0ac\uc6a9\uc790\ud654\n* \uc2a4\ud0a4\ub9c8\ub098 \ud14c\uc774\ube14\uc758 \ubc94\uc704\uac00 \ub108\ubb34 \ub113\ub2e4\uba74, \ube44\uc988\ub2c8\uc2a4 \uc6b4\uc601\uc5d0 \ud2b9\uc815 \ubaa9\uc801\uc744 \ub450\ub3c4\ub85d \uc81c\ud55c\ud574 \ubcf4\uc138\uc694. \uc608\ub97c \ub4e4\uc5b4, \ud574\ub2f9 \ubd80\uc11c\uc758 \uc0ac\ub78c\ub4e4\uc5d0\uac8c \uc561\uc138\uc2a4 \uad8c\ud55c\uc744 \ubd80\uc5ec\ud558\uae30 \uc804\uc5d0 \ucffc\ub9ac \ubc0f \ud3b8\uc9d1\uc744 HR \ud14c\uc774\ube14\uc5d0\ub9cc \ud55c\uc815\ud558\uc138\uc694.\n* \ud504\ub85c\ub355\uc158 \ud658\uacbd\uc5d0\uc11c \uc774 MCP \uc11c\ubc84\ub97c \ub2e4\ub978 \uc0ac\ub78c\uacfc \uacf5\uc720\ud558\uae30 \uc804\uc5d0 \uc790\uaca9 \uc99d\uba85 \uc694\uad6c \uc124\uc815\uc744 \uc78a\uc9c0 \ub9c8\uc138\uc694! \n\n### \ucd9c\ub825"
      },
      "typeVersion": 1
    },
    {
      "id": "bc4e427f-f6fd-4243-844a-8edf2dc1a0e9",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -520,
        -240
      ],
      "parameters": {
        "color": 5,
        "width": 380,
        "height": 100,
        "content": "\ud56d\uc0c1 \uc11c\ubc84\ub97c \uc778\uc99d\ud558\uc138\uc694!  \n\ud504\ub85c\ub355\uc158\uc73c\ub85c \uac00\uae30 \uc804\uc5d0, MCP \uc11c\ubc84 \ud2b8\ub9ac\uac70\uc5d0\uc11c \uc778\uc99d\uc744 \ud65c\uc131\ud654\ud558\ub294 \uac83\uc774 \ud56d\uc0c1 \uad8c\uace0\ub429\ub2c8\ub2e4."
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Operation": {
      "main": [
        [
          {
            "node": "ReadTableRecord",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "CreateTableRecord",
            "type": "main",
            "index": 0
          }
        ],
        [
          {
            "node": "UpdateTableRecord",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "ListTables": {
      "ai_tool": [
        [
          {
            "node": "PostgreSQL MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "ReadTableRows": {
      "ai_tool": [
        [
          {
            "node": "PostgreSQL MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "GetTableSchema": {
      "ai_tool": [
        [
          {
            "node": "PostgreSQL MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "ReadTableRecord": {
      "main": [
        []
      ]
    },
    "CreateTableRecords": {
      "ai_tool": [
        [
          {
            "node": "PostgreSQL MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "UpdateTableRecords": {
      "ai_tool": [
        [
          {
            "node": "PostgreSQL MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "When Executed by Another Workflow": {
      "main": [
        [
          {
            "node": "Operation",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

Pro

For the full experience including quality scoring and batch install features for each workflow upgrade to Pro

About this workflow

Workflow 3631. Uses postgresTool, executeWorkflowTrigger, toolWorkflow, postgres. Event-driven trigger; 15 nodes.

Source: https://github.com/n8nKOR/n8n-shared-workflow/blob/62a671327e906c22a40d290b339ff6d2373f8d75/workflows/n8n-workflows-by-Zie619/devops/3631_workflow_3631.json — original creator credit. Request a take-down →

More Data & Sheets workflows → · Browse all categories →

Related workflows

Workflows that share integrations, category, or trigger type with this one. All free to copy and import.

Data & Sheets

Stickynote Postgrestool. Uses postgresTool, executeWorkflowTrigger, toolWorkflow, postgres. Event-driven trigger; 15 nodes.

Postgres Tool, Execute Workflow Trigger, Tool Workflow +2
Data & Sheets

This MCP example is based off an official MCP reference implementation which can be found here -https://github.com/modelcontextprotocol/servers/tree/main/src/postgres A MCP server trigger is used and

Postgres Tool, Execute Workflow Trigger, Tool Workflow +2
Data & Sheets

Template was created in n8n v1.90.2 Execute Sub-workflow Trigger node Chat Trigger node Redis node Postgres node Google Calendar node Execute Sub-workflow If node, Switch node, Code node, Edit Fields

Execute Workflow Trigger, Chat Trigger, Redis +2
Data & Sheets

Agendamiento_v2. Uses n8n-nodes-evolution-api, redis, httpRequest, executeWorkflowTrigger. Event-driven trigger; 59 nodes.

N8N Nodes Evolution Api, Redis, HTTP Request +3
Data & Sheets

Cancelacion_v2. Uses executeWorkflowTrigger, redis, httpRequest, n8n-nodes-evolution-api. Event-driven trigger; 46 nodes.

Execute Workflow Trigger, Redis, HTTP Request +3