BikeTheRail

Look up U.S. rail-trails: search, nearby trails, trail facts, trailheads and closures.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
95%
Naming quality
95%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,076Tokens (tool definitions)
~2.0 KBTypical response size
Moderate attention impact (0.84% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "trails": {
      "url": "https://biketherail.org/mcp"
    }
  }
}

Remote endpoints

https://biketherail.org/mcpstreamable-http

What it can do

Tool inventory

Tools (4)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢search_trails(query, state, surface, kind, min_miles, ...)

Find U.S. rail-trails, canal towpaths and greenways by name, state, surface, kind and length. Returns each trail's page URL and slug (for get_trail). With no query, lists the longest trails that match the filters.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "description": "Words from the trail's name, for example \"Great Allegheny Passage\" or \"Virginia Creeper\". Small typos are tolerated.",
      "type": "string",
      "maxLength": 200
    },
    "state": {
      "type": "string",
      "maxLength": 40,
      "description": "Two-letter state code (PA) or state name. Matches every trail that enters the state."
    },
    "surface": {
      "type": "string",
      "enum": [
        "paved",
        "crushed_stone",
        "gravel",
        "dirt",
        "mixed",
        "unknown"
      ],
      "description": "Trail surface. crushed_stone is packed stone dust, good for most bikes."
    },
    "kind": {
      "type": "string",
      "enum": [
        "rail",
        "trolley",
        "canal_towpath",
        "greenway"
      ],
      "description": "rail: on a former railway; trolley: an old streetcar or interurban line; canal_towpath: beside a canal; greenway: a car-free path not on a railbed."
    },
    "min_miles": {
      "description": "Shortest length, in miles.",
      "type": "number",
      "minimum": 0
    },
    "max_miles": {
      "description": "Longest length, in miles.",
      "type": "number",
      "minimum": 0
    },
    "limit": {
      "default": 10,
      "description": "How many trails to return (1-50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_trail(slug)

One trail's facts (length, surface, states, managing organization, official website, year opened), trailheads with parking, restrooms and water, any current closure, the opening of its "About this trail" article, its numbered sources and its page URL. Takes the slug from search_trails or trails_near.

Input Schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200,
      "description": "The trail's slug, for example \"great-allegheny-passage\". Its page URL or exact name also work."
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢trails_near(lat, lon, radius_miles, surface, kind, ...)

Trails within a radius of a latitude and longitude, nearest first, with the distance to the closest point of each trail. For a town or address, pass its coordinates. Optional filters as in search_trails.

Input Schema

{
  "type": "object",
  "properties": {
    "lat": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude in decimal degrees."
    },
    "lon": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in decimal degrees (negative in the United States)."
    },
    "radius_miles": {
      "default": 10,
      "description": "Search radius in miles (up to 100).",
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "surface": {
      "type": "string",
      "enum": [
        "paved",
        "crushed_stone",
        "gravel",
        "dirt",
        "mixed",
        "unknown"
      ],
      "description": "Trail surface. crushed_stone is packed stone dust, good for most bikes."
    },
    "kind": {
      "type": "string",
      "enum": [
        "rail",
        "trolley",
        "canal_towpath",
        "greenway"
      ],
      "description": "rail: on a former railway; trolley: an old streetcar or interurban line; canal_towpath: beside a canal; greenway: a car-free path not on a railbed."
    },
    "min_miles": {
      "description": "Shortest trail length, in miles.",
      "type": "number",
      "minimum": 0
    },
    "limit": {
      "default": 10,
      "description": "How many trails to return (1-50).",
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "required": [
    "lat",
    "lon"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢list_closures(state)

Current trail closures and detours posted by trail managers and agencies, optionally for one state, with the source notice. Trails not listed have no reported closure.

Input Schema

{
  "type": "object",
  "properties": {
    "state": {
      "type": "string",
      "maxLength": 40,
      "description": "Two-letter state code (PA) or state name. Matches every trail that enters the state."
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded4 tools