AutomationFlowsWeb Scraping › Npr Station Finder Service Mcp Server

Npr Station Finder Service Mcp Server

ByDavid Ashby @cfomodz on n8n.io

Complete MCP server exposing 2 NPR Station Finder Service API operations to AI agents.

Event trigger★★☆☆☆ complexityAI-powered6 nodesMcp TriggerHTTP Request Tool
Web Scraping Trigger: Event Nodes: 6 Complexity: ★★☆☆☆ AI nodes: yes Added:

This workflow corresponds to n8n.io template #5654 — we link there as the canonical source.

This workflow follows the HTTP Request Tool → Mcptrigger 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
{
  "id": "LGM7GXme9TYLVx2n",
  "meta": null,
  "name": "NPR Station Finder Service MCP Server",
  "tags": [],
  "nodes": [
    {
      "id": "6a86e0e7-236e-4531-a433-d3a0b76d9a77",
      "name": "Setup Instructions",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1380,
        -240
      ],
      "parameters": {
        "color": 4,
        "height": 1020,
        "content": "### \u2699\ufe0f Setup Instructions\n\n1. **Import Workflow**: \nLoad this workflow into your n8n instance\n\n2. **Configure Authentication**: \nSet up oauth2 credentials\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### \ud83d\udca1 Usage Notes\n\u2022 Parameters are auto-populated by AI using $fromAI() expressions\n\u2022 With 2 API endpoints available as tools\n\u2022 Responses maintain original API structure\n\n\n### \ud83d\udee0\ufe0f Customization\n\u2022 Add data transformation nodes if needed\n\u2022 Implement custom error handling\n\u2022 Add logging or monitoring nodes\n\n\u2022 Modify parameter defaults in any HTTP request node as needed\n\n### \ud83d\udcac 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": "ce201fa2-4043-4511-8fd2-c173dde16667",
      "name": "Workflow Overview",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -1120,
        -240
      ],
      "parameters": {
        "width": 420,
        "height": 760,
        "content": "## \ud83d\udee0\ufe0f NPR Station Finder Service MCP Server \u2705 2 operations\n\n### About\nAllows clients to look up NPR member station information\n\n### \ud83d\udd27 How it Works\n\nThis workflow converts the NPR Station Finder Service API into an MCP-compatible interface for AI agents.\n\n\u2022 **MCP Trigger**: Serves as your server endpoint for AI agent requests\n\u2022 **HTTP Request Nodes**: Handle API calls to https://station.api.npr.org\n\u2022 **AI Expressions**: Automatically populate parameters via `$fromAI()` placeholders\n\u2022 **Native Integration**: Returns responses directly to the AI agent\n\n\n### \ud83d\udccb Available Operations (2 endpoints)\n\n**Station Finder (2 operations)**\nList, Retrieve\n\n"
      },
      "typeVersion": 1
    },
    {
      "id": "3e3daf17-9f45-44c1-b278-65b07eb53771",
      "name": "NPR Station Finder Service MCP Server",
      "type": "@n8n/n8n-nodes-langchain.mcpTrigger",
      "position": [
        -620,
        -240
      ],
      "parameters": {
        "path": "npr-station-finder-service-mcp"
      },
      "typeVersion": 1
    },
    {
      "id": "13d71f04-809f-4198-8d17-17d0e5020db5",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        -660,
        -100
      ],
      "parameters": {
        "color": 2,
        "width": 500,
        "height": 200,
        "content": "## Station Finder"
      },
      "typeVersion": 1
    },
    {
      "id": "ae6c5aa4-2bf9-422f-b12b-de2d2bf989e4",
      "name": "Get Stations 1",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -520,
        -60
      ],
      "parameters": {
        "url": "=https://station.api.npr.org/v3/stations",
        "options": {},
        "sendQuery": true,
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "queryParameters": {
          "parameters": [
            {
              "name": "q",
              "value": "={{ $fromAI('q', 'Search terms to search on; can be a station name, network name, call letters, or zipcode', 'string') }}"
            },
            {
              "name": "city",
              "value": "={{ $fromAI('city', 'A city to look for stations from; intended to be paired with `state`', 'string') }}"
            },
            {
              "name": "state",
              "value": "={{ $fromAI('state', 'A state to look for stations from (using the 2-letter abbreviation); intended to be paired with `city`', 'string') }}"
            },
            {
              "name": "lat",
              "value": "={{ $fromAI('lat', 'A latitude value from a geographic coordinate system; only works if paired with `lon`', 'number') }}"
            },
            {
              "name": "lon",
              "value": "={{ $fromAI('lon', 'A longitude value from a geographic coordinate system; only works if paired with `lat`', 'number') }}"
            }
          ]
        },
        "toolDescription": "List stations close to you or filter by search criteria\n\nParameters:\n- Query parameters:\n  \u2022 q (optional) - Search terms to search on; can be a station name, network name, call letters, or zipcode\n  \u2022 city (optional) - A city to look for stations from; intended to be paired with `state`\n  \u2022 state (optional) - A state to look for stations from (using the 2-letter abbreviation); intended to be paired with `city`\n  \u2022 lat (optional) - A latitude value from a geographic coordinate system; only works if paired with `lon`\n  \u2022 lon (optional) - A longitude value from a geographic coordinate system; only works if paired with `lat`"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 4.2
    },
    {
      "id": "e18855f2-acb4-46b9-a08d-9554285c8600",
      "name": "Get Station 1",
      "type": "n8n-nodes-base.httpRequestTool",
      "position": [
        -320,
        -60
      ],
      "parameters": {
        "url": "=https://station.api.npr.org/v3/stations/{{ $fromAI('stationId', 'The numeric ID of a station', 'number') }}",
        "options": {},
        "authentication": "genericCredentialType",
        "genericAuthType": "httpHeaderAuth",
        "toolDescription": "Retrieve metadata for the station with the given numeric ID\n\nParameters:\n- Path parameters:\n  \u2022 stationId (required) - Numeric ID of a station"
      },
      "credentials": {
        "httpHeaderAuth": {
          "name": "<your 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-03T17:14:07.973Z",
      "projectId": "G5fce9xGuBAsWBXe",
      "updatedAt": "2025-07-03T17:14:07.973Z",
      "workflowId": "LGM7GXme9TYLVx2n"
    }
  ],
  "settings": {
    "timezone": "America/New_York"
  },
  "createdAt": "2025-07-03T17:14:07.971Z",
  "updatedAt": "2025-07-03T17:19:38.000Z",
  "versionId": "74e4de01-1674-447a-bc0b-c3eef6d8d27a",
  "isArchived": false,
  "staticData": null,
  "connections": {
    "Get Station 1": {
      "ai_tool": [
        [
          {
            "node": "NPR Station Finder Service MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    },
    "Get Stations 1": {
      "ai_tool": [
        [
          {
            "node": "NPR Station Finder Service MCP Server",
            "type": "ai_tool",
            "index": 0
          }
        ]
      ]
    }
  },
  "triggerCount": 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

Complete MCP server exposing 2 NPR Station Finder Service API operations to AI agents.

Source: https://n8n.io/workflows/5654/ — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →

Related workflows

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

Web Scraping

Need help? Want access to this workflow + many more paid workflows + live Q&A sessions with a top verified n8n creator?

Mcp Trigger, HTTP Request Tool
Web Scraping

Need help? Want access to this workflow + many more paid workflows + live Q&A sessions with a top verified n8n creator?

Mcp Trigger, HTTP Request Tool
Web Scraping

An MCP server that exposes 10 specialized AI tools for deep observability over your OpenObserve logs and traces.

HTTP Request Tool, Mcp Trigger
Web Scraping

Complete MCP server exposing 4 Transportation Laws and Incentives API operations to AI agents.

Mcp Trigger, HTTP Request Tool
Web Scraping

Complete MCP server exposing 4 BikeWise API v2 API operations to AI agents.

Mcp Trigger, HTTP Request Tool