{
  "workflow": {
    "id": 5539,
    "name": "IP geolocation lookup with BigDataCloud API for AI agents",
    "views": 278,
    "recentViews": 0,
    "totalViews": 278,
    "createdAt": "2025-07-01T21:27:24.500Z",
    "description": "Complete MCP server exposing 2 IP Geolocation API operations to AI agents.\n\n## ⚡ Quick Setup\n\nNeed help? Want access to more workflows and even live Q&A sessions with a top verified n8n creator.. All 100% free?\n\n[Join the community](https://www.skool.com/n8n-nodes-automation-lab-1570/about)\n1. **Import** this workflow into your n8n instance\n2. **Credentials** Add IP Geolocation API credentials\n3. **Activate** the workflow to start your MCP server\n4. **Copy** the webhook URL from the MCP trigger node\n5. **Connect** AI agents using the MCP URL\n\n## 🔧 How it Works\n\nThis workflow converts the IP Geolocation API into an MCP-compatible interface for AI agents.\n\n• **MCP Trigger**: Serves as your server endpoint for AI agent requests\n• **HTTP Request Nodes**: Handle API calls to https://api.bigdatacloud.net\n• **AI Expressions**: Automatically populate parameters via `$fromAI()` placeholders\n• **Native Integration**: Returns responses directly to the AI agent\n\n## 📋 Available Operations (2 total)\n\n### 🔧 Data (2 endpoints)\n\n• **GET /data/ip-geolocation-full**: IP Geolocation with Confidence Area and Hazard Report API\n• **GET /data/ip-geolocation-with-confidence**: IP Geolocation with Confidence Area API\n\n## 🤖 AI Integration\n\n**Parameter Handling**: AI agents automatically provide values for:\n• Path parameters and identifiers\n• Query parameters and filters\n• Request body data\n• Headers and authentication\n\n**Response Format**: Native IP Geolocation API responses with full data structure\n\n**Error Handling**: Built-in n8n HTTP request error management\n\n## 💡 Usage Examples\n\nConnect this MCP server to any AI agent or workflow:\n\n• **Claude Desktop**: Add MCP server URL to configuration\n• **Cursor**: Add MCP server SSE URL to configuration\n• **Custom AI Apps**: Use MCP URL as tool endpoint\n• **API Integration**: Direct HTTP calls to MCP endpoints\n\n## ✨ Benefits\n\n• **Zero Setup**: No parameter mapping or configuration needed\n• **AI-Ready**: Built-in `$fromAI()` expressions for all parameters\n• **Production Ready**: Native n8n HTTP request handling and logging\n• **Extensible**: Easily modify or add custom logic\n\n&gt; 🆓 **[Free for community use](https://github.com/Cfomodz/community-use)!** Ready to deploy in under 2 minutes.",
    "workflow": {
      "id": "cwrarZxOJMtWX52O",
      "meta": null,
      "name": "IP Geolocation API MCP Server",
      "tags": [],
      "nodes": [
        {
          "id": "5a47abdd-f4a3-4055-8727-1120ff40f62c",
          "name": "Setup Instructions",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1380,
            -240
          ],
          "parameters": {
            "color": 4,
            "height": 1060,
            "content": "### ⚙️ Setup Instructions\n\n1. **Import Workflow**: \nLoad this workflow into your n8n instance\n\n2. **Authentication**: \nNo authentication required\n\n3. **Activate Workflow**:\nEnable the workflow to start the MCP server\n\n4. **Get MCP URL**: \nCopy the webhook URL from the MCP trigger\n\n5. **Connect AI Agent**:\nUse the MCP URL in your AI agent configuration\n\n\n### 💡 Usage Notes\n• Parameters are auto-populated by AI using $fromAI() expressions\n• With 2 API endpoints available as tools\n• Responses maintain original API structure\n\n\n### 🛠️ Customization\n• Add data transformation nodes if needed\n• Implement custom error handling\n• Add logging or monitoring nodes\n\n• Modify parameter defaults in any HTTP request node as needed\n\n### 💬 Need Help?\nPing me on [discord](https://discord.me/cfomodz) for integration guidance and custom automations. Check the [n8n documentation](https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.toolmcp/) for more information."
          },
          "typeVersion": 1
        },
        {
          "id": "5ef44366-36ef-4558-b901-6112390e35eb",
          "name": "Workflow Overview",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -1120,
            -240
          ],
          "parameters": {
            "width": 420,
            "height": 940,
            "content": "## 🛠️ IP Geolocation MCP Server ✅ 2 operations\n\n### About\nBigDataCloud's IP Geolocation API returns detailed information about the geographical location, ownership and connectivity of the provided IPv4 IP address. This API is powered by patent-pending âNext Generation IP Geolocation Technology'. As a result, the API has sub-millisecond response time. You can authenticate the API with the use of API keys provided in your BigDataCloud account. BigDataCloud provides 10K Free queries per month. You can upgrade your package with $2/month per 10K additional queries. The API has Unprecedented Update Rate - Geolocation data re-evaluated every 2 hours or at least once a day - BGP data updated every 2 hours - Registry data updated at least once a day - Country object data usually updates at least once in a month You can learn more about the API at [bigdatacloud.com](https://www.bigdatacloud.com/ip-geolocation-apis).\n\n### 🔧 How it Works\n\nThis workflow converts the IP Geolocation API into an MCP-compatible interface for AI agents.\n\n• **MCP Trigger**: Serves as your server endpoint for AI agent requests\n• **HTTP Request Nodes**: Handle API calls to https://api.bigdatacloud.net\n• **AI Expressions**: Automatically populate parameters via `$fromAI()` placeholders\n• **Native Integration**: Returns responses directly to the AI agent\n\n\n### 📋 Available Operations (2 endpoints)\n\n**Data (2 operations)**\nip\n\n"
          },
          "typeVersion": 1
        },
        {
          "id": "a136a83b-f2ba-45b1-95ac-87a72de8f3d4",
          "name": "IP Geolocation MCP Server",
          "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
          "position": [
            -620,
            -240
          ],
          "webhookId": "fde3bb5a-f955-4d52-9dec-463d5c375c10",
          "parameters": {
            "path": "ip-geolocation-mcp"
          },
          "typeVersion": 1
        },
        {
          "id": "73bad0a4-32ae-4a7b-8110-28ea36b14118",
          "name": "Sticky Note",
          "type": "n8n-nodes-base.stickyNote",
          "position": [
            -660,
            -100
          ],
          "parameters": {
            "color": 2,
            "width": 500,
            "height": 200,
            "content": "## Data"
          },
          "typeVersion": 1
        },
        {
          "id": "e197f32a-730f-41d7-994f-3b3bd8125142",
          "name": "IP Geolocation with Confidence Area and Hazard Report API",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -520,
            -60
          ],
          "parameters": {
            "url": "=https://api.bigdatacloud.net/data/ip-geolocation-full",
            "options": {},
            "sendQuery": true,
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "queryParameters": {
              "parameters": [
                {
                  "name": "ip",
                  "value": "={{ $fromAI('ip', 'IPv4 IP address in a string or numeric format. If omitted, the callerâs IP address is assumed', 'string') }}"
                },
                {
                  "name": "localityLanguage",
                  "value": "={{ $fromAI('localityLanguage', 'Preferred language for locality names in ISO 639-1 format, such as 'en' for English, 'es' for Spanish etc. Please note: 147 common world languages are supported, full list here, but not all languages are available for every location. If requested language is not available for a requested location it will default to English, if no English is available, the native, local names will be provided', 'string') }}"
                },
                {
                  "name": "key",
                  "value": "={{ $fromAI('key', 'Your API key', 'string') }}"
                }
              ]
            },
            "toolDescription": "IP Geolocation with Confidence Area and Hazard Report API\n\nParameters:\n- Query parameters:\n  • ip (optional) - IPv4 IP address in a string or numeric format. If omitted, the callerâs IP address is assumed\n  • localityLanguage (optional) - Preferred language for locality names in ISO 639-1 format, such as 'en' for English, 'es' for Spanish etc. Please note: 147 common world languages are supported, full list here, but not all languages are available for every location. If requested language is not available for a requested location it will default to English, if no English is available, the native, local names will be provided\n  • key (optional) - Your API key"
          },
          "credentials": {
            "httpHeaderAuth": {
              "id": "credential-id",
              "name": "httpHeaderAuth Credential"
            }
          },
          "typeVersion": 4.2
        },
        {
          "id": "66a448bb-acb2-4c5a-9ca7-5f4d9587cd51",
          "name": "IP Geolocation with Confidence Area API",
          "type": "n8n-nodes-base.httpRequestTool",
          "position": [
            -320,
            -60
          ],
          "parameters": {
            "url": "=https://api.bigdatacloud.net/data/ip-geolocation-with-confidence",
            "options": {},
            "sendQuery": true,
            "authentication": "genericCredentialType",
            "genericAuthType": "httpHeaderAuth",
            "queryParameters": {
              "parameters": [
                {
                  "name": "ip",
                  "value": "={{ $fromAI('ip', 'IPv4 IP address in a string or numeric format. If omitted, the callerâs IP address is assumed', 'string') }}"
                },
                {
                  "name": "localityLanguage",
                  "value": "={{ $fromAI('localityLanguage', 'Preferred language for locality names in ISO 639-1 format, such as 'en' for English, 'es' for Spanish etc. Please note: 147 common world languages are supported, full list here, but not all languages are available for every location. If requested language is not available for a requested location it will default to English, if no English is available, the native, local names will be provided', 'string') }}"
                },
                {
                  "name": "key",
                  "value": "={{ $fromAI('key', 'Your API key', 'string') }}"
                }
              ]
            },
            "toolDescription": "IP Geolocation with Confidence Area API\n\nParameters:\n- Query parameters:\n  • ip (optional) - IPv4 IP address in a string or numeric format. If omitted, the callerâs IP address is assumed\n  • localityLanguage (optional) - Preferred language for locality names in ISO 639-1 format, such as 'en' for English, 'es' for Spanish etc. Please note: 147 common world languages are supported, full list here, but not all languages are available for every location. If requested language is not available for a requested location it will default to English, if no English is available, the native, local names will be provided\n  • key (optional) - Your API key"
          },
          "credentials": {
            "httpHeaderAuth": {
              "id": "credential-id",
              "name": "httpHeaderAuth Credential"
            }
          },
          "typeVersion": 4.2
        }
      ],
      "active": false,
      "shared": [
        {
          "role": "workflow:owner",
          "project": {
            "id": "G5fce9xGuBAsWBXe",
            "icon": null,
            "name": "David Ashby <david.ashby.lds@gmail.com>",
            "type": "personal",
            "createdAt": "2025-06-04T02:55:02.013Z",
            "updatedAt": "2025-06-04T02:56:01.361Z",
            "projectRelations": [
              {
                "role": "project:personalOwner",
                "user": {
                  "id": "715c1c00-cb48-4712-9a32-f1f4b6db2b30",
                  "role": "global:owner",
                  "email": "david.ashby.lds@gmail.com",
                  "disabled": false,
                  "lastName": "Ashby",
                  "settings": {
                    "npsSurvey": {
                      "responded": true,
                      "lastShownAt": 1749357655581
                    },
                    "userActivated": true,
                    "userActivatedAt": 1749075994495,
                    "easyAIWorkflowOnboarded": true,
                    "firstSuccessfulWorkflowId": "3N3vVikZb3MckFYm"
                  },
                  "createdAt": "2025-06-04T02:55:01.745Z",
                  "firstName": "David",
                  "isPending": false,
                  "updatedAt": "2025-06-08T04:40:58.399Z",
                  "mfaEnabled": false,
                  "personalizationAnswers": {
                    "version": "v4",
                    "personalization_survey_n8n_version": "1.95.3",
                    "personalization_survey_submitted_at": "2025-06-04T02:56:07.075Z"
                  }
                },
                "userId": "715c1c00-cb48-4712-9a32-f1f4b6db2b30",
                "createdAt": "2025-06-04T02:55:02.013Z",
                "projectId": "G5fce9xGuBAsWBXe",
                "updatedAt": "2025-06-04T02:55:02.013Z"
              }
            ]
          },
          "createdAt": "2025-07-01T21:23:09.722Z",
          "projectId": "G5fce9xGuBAsWBXe",
          "updatedAt": "2025-07-01T21:23:09.722Z",
          "workflowId": "cwrarZxOJMtWX52O"
        }
      ],
      "pinData": {},
      "settings": {
        "timezone": "America/New_York"
      },
      "createdAt": "2025-07-01T21:23:09.720Z",
      "updatedAt": "2025-07-01T21:27:13.000Z",
      "versionId": "df337cad-4672-42ae-9ddc-d358cf06306b",
      "isArchived": false,
      "staticData": null,
      "connections": {
        "IP Geolocation with Confidence Area API": {
          "ai_tool": [
            [
              {
                "node": "IP Geolocation MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        },
        "IP Geolocation with Confidence Area and Hazard Report API": {
          "ai_tool": [
            [
              {
                "node": "IP Geolocation MCP Server",
                "type": "ai_tool",
                "index": 0
              }
            ]
          ]
        }
      },
      "triggerCount": 0
    },
    "lastUpdatedBy": 29,
    "workflowInfo": {
      "nodeCount": 6,
      "nodeTypes": {
        "n8n-nodes-base.stickyNote": {
          "count": 3
        },
        "n8n-nodes-base.httpRequestTool": {
          "count": 2
        },
        "@n8n/n8n-nodes-langchain.mcpTrigger": {
          "count": 1
        }
      }
    },
    "status": "published",
    "user": {
      "name": "David Ashby",
      "username": "cfomodz",
      "bio": "Unlimited Access to my paid workflows 👇 For the cost of one a month",
      "verified": true,
      "links": [
        "https://www.skool.com/n8n-automation-lab"
      ],
      "avatar": "https://gravatar.com/avatar/0118796cfdab829a3307d407dfeeb01a3952eb402584a45a211e4ef7d15edbbf?r=pg&d=retro&size=200"
    },
    "nodes": [
      {
        "id": 565,
        "icon": "fa:sticky-note",
        "name": "n8n-nodes-base.stickyNote",
        "codex": {
          "data": {
            "alias": [
              "Comments",
              "Notes",
              "Sticky"
            ],
            "categories": [
              "Core Nodes"
            ],
            "nodeVersion": "1.0",
            "codexVersion": "1.0",
            "subcategories": {
              "Core Nodes": [
                "Helpers"
              ]
            }
          }
        },
        "group": "[\"input\"]",
        "defaults": {
          "name": "Sticky Note",
          "color": "#FFD233"
        },
        "iconData": {
          "icon": "sticky-note",
          "type": "icon"
        },
        "displayName": "Sticky Note",
        "typeVersion": 1,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          }
        ]
      },
      {
        "id": 1293,
        "icon": "file:../mcp.svg",
        "name": "@n8n/n8n-nodes-langchain.mcpTrigger",
        "codex": {
          "data": {
            "alias": [
              "Model Context Protocol",
              "MCP Server"
            ],
            "resources": {
              "primaryDocumentation": [
                {
                  "url": "https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-langchain.mcptrigger/"
                }
              ]
            },
            "categories": [
              "AI",
              "Core Nodes",
              "Langchain"
            ],
            "subcategories": {
              "AI": [
                "Root Nodes",
                "Model Context Protocol"
              ],
              "Core Nodes": [
                "Other Trigger Nodes"
              ]
            }
          }
        },
        "group": "[\"trigger\"]",
        "defaults": {
          "name": "MCP Server Trigger"
        },
        "iconData": {
          "type": "file",
          "fileBuffer": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTgwIiBoZWlnaHQ9IjE4MCIgdmlld0JveD0iMCAwIDE5NSAxOTUiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+Cgk8ZyBzdHJva2U9IiMwMDAiIHN0cm9rZS13aWR0aD0iMTIiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCI+CgkJPHBhdGggZD0iTTI1IDk3Ljg1MjhMOTIuODgyMyAyOS45NzA2QzEwMi4yNTUgMjAuNTk4IDExNy40NTEgMjAuNTk4IDEyNi44MjMgMjkuOTcwNlYyOS45NzA2QzEzNi4xOTYgMzkuMzQzMSAxMzYuMTk2IDU0LjUzOTEgMTI2LjgyMyA2My45MTE3TDc1LjU1ODEgMTE1LjE3NyIvPgoJCTxwYXRoIGQ9Ik03Ni4yNjUzIDExNC40N0wxMjYuODIzIDYzLjkxMTdDMTM2LjE5NiA1NC41MzkxIDE1MS4zOTIgNTQuNTM5MSAxNjAuNzY1IDYzLjkxMTdMMTYxLjExOCA2NC4yNjUyQzE3MC40OTEgNzMuNjM3OCAxNzAuNDkxIDg4LjgzMzggMTYxLjExOCA5OC4yMDYzTDk5LjcyNDggMTU5LjZDOTYuNjAwNiAxNjIuNzI0IDk2LjYwMDYgMTY3Ljc4OSA5OS43MjQ4IDE3MC45MTNMMTEyLjMzMSAxODMuNTIiLz4KCQk8cGF0aCBkPSJNMTA5Ljg1MyA0Ni45NDExTDU5LjY0ODIgOTcuMTQ1N0M1MC4yNzU3IDEwNi41MTggNTAuMjc1NyAxMjEuNzE0IDU5LjY0ODIgMTMxLjA4N1YxMzEuMDg3QzY5LjAyMDggMTQwLjQ1OSA4NC4yMTY4IDE0MC40NTkgOTMuNTg5NCAxMzEuMDg3TDE0My43OTQgODAuODgyMiIvPgoJPC9nPgo8L3N2Zz4K"
        },
        "displayName": "MCP Server Trigger",
        "typeVersion": 2,
        "nodeCategories": [
          {
            "id": 9,
            "name": "Core Nodes"
          },
          {
            "id": 25,
            "name": "AI"
          },
          {
            "id": 26,
            "name": "Langchain"
          }
        ]
      }
    ],
    "categories": [
      {
        "id": 5,
        "name": "Engineering"
      },
      {
        "id": 48,
        "name": "AI RAG"
      }
    ],
    "image": []
  }
}