protogrid

Search / io.github.Hashtagsmile/sl-mcp

SL – Stockholm public transport

R0· no sign-in

Stockholm public transport (SL): live departures, trips to addresses with exits, disruptions.

v0.2.0 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality87new
Trust97of 100
Uptime, 30 days100%
Latency p50279 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "sl-mcp": {
      "type": "http",
      "url": "https://sl-mcp.miltonlindblad.workers.dev/mcp"
    }
  }
}
claude mcp add --transport http sl-mcp https://sl-mcp.miltonlindblad.workers.dev/mcp
[mcp_servers.sl-mcp]
url = "https://sl-mcp.miltonlindblad.workers.dev/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sl-mcp": {
      "type": "remote",
      "url": "https://sl-mcp.miltonlindblad.workers.dev/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "sl-mcp": {
      "type": "http",
      "url": "https://sl-mcp.miltonlindblad.workers.dev/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=sl-mcp&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vc2wtbWNwLm1pbHRvbmxpbmRibGFkLndvcmtlcnMuZGV2L21jcCJ9"
}
{
  "servers": {
    "sl-mcp": {
      "type": "http",
      "url": "https://sl-mcp.miltonlindblad.workers.dev/mcp"
    }
  }
}
{
  "mcpServers": {
    "sl-mcp": {
      "httpUrl": "https://sl-mcp.miltonlindblad.workers.dev/mcp"
    }
  }
}
extensions:
  "sl-mcp":
    enabled: true
    name: "sl-mcp"
    type: streamable_http
    uri: "https://sl-mcp.miltonlindblad.workers.dev/mcp"
    timeout: 300

Quality 87 / 100new

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene86 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations4 of 4 tools declare readOnlyHint or destructiveHint
  • fail
    tools.directory_hintsno tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_departures (destructiveHint, idempotentHint); get_disruptions (destructiveHint, idempotentHint); plan_trip (destructiveHint, idempotentHint); …
  • pass
    tools.token_costabout 1,323 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stabilityn/a · weight 15
  • n/a
    stability.changes, stability.rug_pulltool history recorded for 3 of the 7 days needed
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

4 tools, about 1,323 tokens to load them all · tool set 79e840e199bf · checked 2026-11-07 17:28 UTC

Tool changes

No tool definition changes recorded. A server's first observation is its baseline; later probes record what changes.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 97 / 100

provenance90
liveness100
freshness100
hygiene100

+repository +namespace-matches-repo +website +reachable +uptime-100% +updated-4d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://sl-mcp.miltonlindblad.workers.dev/mcp streamable-httpnoneyes100%279 ms2026-07-282026-11-07

Tools (4)

find_stopread-onlyFind Stockholm public transport (SL) stops by name and return their ids, names and transport modes. Use it to get the siteId for get_departures, or a stop id for plan_trip. Not for street addresses: pass those to plan_trip as text instead. A name can match several stops ('Arlanda' gives the train station and bus stops): pick by name and modes, or ask the user. Typos are fine, abbreviations are not: write 'Tekniska högskolan', not 'KTH'. Returns one line per stop: '<id>: <town>, <name> (<modes>)'.
get_departuresread-onlyList live departures from one SL stop, soonest first: line, mode, final destination, direction (1 or 2), platform or bus stop letter, minutes or clock time, delay, cancellation and SL's notes. Use it for 'when does the next X leave from Y'. To get from A to B, use plan_trip; for announced track work or broken lifts, use get_disruptions. Real-time data from SL: at most 3 departures per line and direction, up to 3 hours ahead. `towards` matches the final destination only: for a station on the way (e.g. 'mot T-Centralen' from Slussen), leave it out and pick the direction from the results. An unknown siteId gives no departures, not an error.
get_disruptionsread-onlyList disruptions SL has announced: track work, closed entrances, broken lifts and replacement buses, with the lines affected and until when. Use it to check a line or the stops of a trip before travelling, e.g. lifts for a wheelchair. For live delays and cancelled departures, use get_departures instead. The text is in Swedish, so translate it if needed, and is cut at 800 characters. Results are cached for 1 minute, as SL asks. Leave both filters out to list everything.
plan_tripread-onlyPlan trips by SL public transport between two stops or street addresses, leaving or arriving at a given time. Returns up to 3 trips, plus walking all the way when that takes at most 30 min. Each ride lists line, direction, platform, stops, crowding and delay; each walk lists minutes and the station exit (uppgång). Use it for 'how do I get to X' and 'when must I leave'; for departures from one stop, use get_departures. Addresses are fuzzy matched, so the result starts with what each one matched. Times are Stockholm time. Unknown stops, the same stop twice and times outside the timetable give a clear error. SL cannot plan step-free trips: for a wheelchair or pram, use prefer 'least walking' and check get_disruptions for broken lifts at the stops.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.Hashtagsmile/sl-mcp",
  "title": "SL – Stockholm public transport",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://sl-mcp.miltonlindblad.workers.dev/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.2.0",
  "repository": {
    "url": "https://github.com/Hashtagsmile/sl-mcp",
    "source": "github"
  },
  "websiteUrl": "https://github.com/Hashtagsmile/sl-mcp",
  "description": "Stockholm public transport (SL): live departures, trips to addresses with exits, disruptions."
}