鉄道駅LOD MCPサーバー
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
鉄道駅LOD MCPサーバー
日本の鉄道の事業者・路線・駅を検索し、位置情報(駅=ポイント / 路線=ポリライン、GeoJSON)・営業キロ・乗降客数(1 日あたり、2011〜2024年度)・乗換/隣接駅・簡易経路を取得できる、ローカル実行(stdio)の MCP サーバーです。データソースは 鉄道駅LOD(認証不要・オープンライセンス、CC BY-SA 4.0)。
Claude Desktop / Claude Code などの MCP 対応クライアントから、次のようなことができます:
駅・路線・事業者のラベル/別名検索(
JR東日本⇔東日本旅客鉄道、〜本線⇔〜線を自動吸収)駅のポイント / 路線のポリライン(分岐線を含む)を GeoJSON で取得(地図表示向け)
事業者 → 路線 → 駅 のドリルダウン、路線の駅一覧(データ上の順序)
緯度経度からの最寄り駅検索(逆ジオコーディング、駅の geohash を利用)
路線の全長算出(形状ポリラインからの実測長 + 公表営業キロ、乖離の理由注記つき)
駅の乗降客数(1 日あたり)の年度推移(2011〜2024)
静的な路線図(隣接駅・乗換駅)上の簡易経路探索(乗換/駅数最小。時刻表・所要時間・直通運転は非考慮)
Tools
Tool | 概要 |
| 駅・路線・事業者をラベル/別名で検索( |
| 駅(ポイント)/ 路線(ポリライン)を GeoJSON Feature で取得。 |
| 複数の駅・路線をまとめて 1 つの FeatureCollection で(最大 50 件、地図表示向け) |
| 同上をローカルファイルへ直接書き出し(応答サイズ上限の回避。出典・ライセンスを注記) |
| 事業者 → 路線 / 路線 → 駅 の一覧( |
| 路線の全駅をデータ上の順序で一覧( |
| 緯度経度から最寄り駅(駅の 7 桁 geohash プレフィックスで絞り、セル中心までの距離でランキング) |
| 鉄道事業者(約 176)の名称一覧 |
| 路線の全長を算出(実測長 + 公表営業キロ |
| 駅の乗降客数(1 日あたり)の年度推移(2011〜2024、最大 50 駅をまとめて取得。出典・集計注記つき。補正推定値があれば |
| 駅ネットワーク上の経路(乗換/駅数最小)。時刻表・所要時間・最速・列車種別・直通運転は非考慮。信頼性注記( |
Related MCP server: transit-mcp
制約と注意点
駅はポイント、路線はポリラインとして持ちます(路線は分岐線を含む複数本になることがあります)。
get_railway_line_lengthsの実測長は国土数値情報 鉄道データの軌道中心線の幾何長です。鉄道各社の営業キロとは定義が異なり数%〜数十%ずれます(JR 各社が区間ごとに分けて持つ路線では担当区間のみ、支線・貨物短絡線を含む、球近似の積算のため)。find_rail_network_pathは時刻表を持ちません。答えられるのは「どの路線でどこを経由するか(最小乗換 / 最小駅数)」までです。直通運転(副都心線⇔東急東横線 等)は辺として存在せず乗換回数を過大に数えます。運行系統(湘南新宿ライン・快速等)は路線として存在しません。乗降客数は国土数値情報 駅別乗降客数データ(2011〜2024 年度)由来の 1 日あたりの値(人/日) です。各鉄道事業者が独自に算出した値で、統一的な基準に基づくものではありません(事業者をまたいだ比較には注意)。
記載誤りの可能性がある値には、原本とは別に補正推定値(前後年度と同路線の他駅の増減から推定。国・鉄道事業者の公表値ではない)が付くことがあります。
get_station_passengersは常に原本をvalueで返し、補正推定値はestimateに併記するだけです。推定値を使うかどうかはユーザーに確認します。
必要環境
Node.js 18.17 以上
セットアップ
npm install
npm run dev # tsx watch でホットリロード起動(stdio)Claude Code への登録
プロジェクト直下の .mcp.json に登録済みです。このリポジトリを Claude Code で開くと自動的に検出されます。
Claude Desktop への登録
事前にビルドします:
npm run buildclaude_desktop_config.json に以下を追加します(args のパスは実際にリポジトリを配置した絶対パスに):
{
"mcpServers": {
"jrslod-mcp-server": {
"command": "node",
"args": ["/path/to/jrslod-mcp-server/dist/index.js"]
}
}
}Windows はパス区切りを \\ でエスケープします(例: "C:\\path\\to\\jrslod-mcp-server\\dist\\index.js")。
Tips: プロンプトに「鉄道駅LOD MCPサーバーを使って」のようにサーバー名を明示すると、確実にこのサーバーの Tool が呼ばれます。
使い方の例
エンティティの指定は URI(https://uedayou.net/jrslod/東日本旅客鉄道/山手線)でも 「会社名/路線名(/駅名)」(東日本旅客鉄道/山手線)でも、多くの場合名前だけでも通ります。JR東日本⇔東日本旅客鉄道、東京メトロ⇔東京地下鉄、〜本線⇔〜線 の揺れは自動補完されます。各例の末尾に、利用が想定される Tool を示します(実際にどれを呼ぶかは LLM の判断によります)。
「鉄道事業者を全部挙げて」
list_railway_operators()(パラメータなし)→ 約 176 事業者の名称配列。手で列挙して漏らさないための一覧想定される Tool:
list_railway_operators
「"みなとみらい" を含む駅を探して」 / 「路線の中から "本線" を検索して」
search_railway(query:"みなとみらい")→ ラベルと別名(略称・旧称等)の部分一致で[{uri, label, kind}]。kindはstation/line/operatorsearch_railway(query:"本線", kind:"line")のようにkindで種別を絞れる(limit既定 20、最大 100)。得られたuriを以降の Tool に渡す想定される Tool:
search_railway
「近鉄の路線を全部挙げて」 / 「鶴見線の所属駅は?」
list_railway_children(parent:"近畿日本鉄道")→ 所属路線の[{uri, label}]list_railway_children(parent:"東日本旅客鉄道/鶴見線")→ 所属駅の[{uri, label}](順序は不定)。順番に並べたいときは次の例のlist_stations_on_lineを使う想定される Tool:
list_railway_children
「山手線の駅を順番に全部」 / 「鶴見線の駅を順番に」
list_stations_on_line(line:"東日本旅客鉄道/山手線")→ 30 駅をデータ上の順序(東京→有楽町→新橋→…)でlist_stations_on_line(line:"東日本旅客鉄道/鶴見線")→ 13 駅。分岐線(海芝浦支線・大川支線)は区間ごとの順序を連結し、「3 区間(分岐)ぶんの順序を連結」と注記される想定される Tool:
list_stations_on_line
「渋谷駅の位置と、乗換路線・隣の駅・乗降客数を教えて」
search_railway(query:"渋谷", kind:"station")でuriを選ぶ →get_railway_geometry(address:<uri>)返り値の GeoJSON Feature の
geometryは駅の代表点(Point、座標は[経度, 緯度])。propertiesにoperator、belongsToLine、lineColor、transferStations(乗換駅)、adjacentStations(隣接駅、left/right)が入る乗降客数は
get_station_passengers(stations:[<uri>])で取得する(GeoJSON には含めない。補正推定値の注記をget_station_passengers側で返すため)想定される Tool:
search_railway→get_railway_geometry→get_station_passengers
「新宿駅で乗り換えられる路線を全部教えて」
get_railway_geometry(address:"東日本旅客鉄道/山手線/新宿")→properties.transferStationsに乗換先の駅 URI 配列(wdt:P833)。各 URI の 2 番目のセグメントが乗換路線名(中央線 / 小田急小田原線 / 京王線 / 都営地下鉄新宿線 / 東京メトロ丸ノ内線 / 都営地下鉄大江戸線 …)他社線も、駅名の違う徒歩連絡も含む(新宿 ⇔
都営地下鉄大江戸線/新宿西口、⇔西武新宿線/西武新宿)想定される Tool:
get_railway_geometry
「渋谷駅の隣の駅は? / 山手線を渋谷から 1 駅ずつたどって」
get_railway_geometry(address:"東日本旅客鉄道/山手線/渋谷")→properties.adjacentStationsに[{direction:"left", station:".../原宿"}, {direction:"right", station:".../恵比寿"}](wdt:P197。同一路線の前後の駅、left/rightは路線に沿った方向)返ってきた駅 URI で再度
get_railway_geometryを呼べば 1 駅ずつ連鎖できる。路線の全駅を一気に順序どおり欲しいときはlist_stations_on_lineを使う想定される Tool:
get_railway_geometry(全駅ならlist_stations_on_line)
「大阪環状線の形をそのまま地図に描きたい」
get_railway_geometry(address:"西日本旅客鉄道/大阪環状線")→geometryは複数パーツからなるMultiLineString。propertiesにlineColor(ラインカラー hex、大阪環状線ならE80000)・publishedLengthKm(営業キロ、21.7)長大路線は
simplify:"low"|"medium"|"high"で座標点数を間引ける(既定none)。戻り値は標準 GeoJSON なので Leaflet のL.geoJSON()/ MapLibre GL JS / deck.gl にそのまま渡せる想定される Tool:
get_railway_geometry

Claude Desktop で「大阪環状線の形をそのまま地図に描きたい」と入力して生成された作図例。本 MCP サーバー経由で get_railway_geometry が返した MultiLineString(路線)と駅ポイントを使用。線形・駅位置・ラインカラー・営業キロは鉄道駅LOD による。
「東京メトロの全路線を 1 枚の地図に」
list_railway_children(parent:"東京地下鉄")で路線uriを取得 →get_railway_geometries(addresses:[...], simplify:"medium")で 1 つの GeoJSONFeatureCollection(最大 50 件)一部が解決できなくても全体は失敗にせず、
featuresから除外してunresolvedとして注記(全件失敗のときだけisError)想定される Tool:
list_railway_children→get_railway_geometries

Claude Desktop で「東京メトロの全路線を 1 枚の地図に」と入力して生成された地図。list_railway_children(parent:"東京地下鉄") で路線一覧を取得し、get_railway_geometries が返した FeatureCollection を Leaflet で描画。線形・ラインカラーは鉄道駅LOD、ベースマップは OpenStreetMap。
「JR東日本の全在来線のポリラインを 1 つの GeoJSON ファイルにエクスポートして」
list_railway_children(parent:"東日本旅客鉄道")→save_railway_geometries_to_file(addresses:[...], outputPath:"jre-lines.geojson")→ ローカルファイルへ直接書き出し、パス・概要・出典(CC BY-SA)だけを返す中身は会話に返らないので、Claude 自身がその場で地図を描く依頼では使わず
get_railway_geometriesを使うこと想定される Tool:
list_railway_children→save_railway_geometries_to_file
「緯度 35.6812, 経度 139.7671 の最寄り駅は?」
find_nearest_stations(lat:35.6812, long:139.7671, limit:5)→ 距離順に[{uri, name, line, approxKm}]approxKmは駅の 7 桁 geohash セル中心までの近似(±0.1km 程度)。厳密な位置が要るならuriをget_railway_geometryに渡す。会社・路線ごとに別エンティティのため同一物理駅が複数返ることがある想定される Tool:
find_nearest_stations(必要なら →get_railway_geometry)
「大糸線は全体で何 km? JR東日本と JR西日本の担当区間は?」 / 「JR九州で営業キロが長い在来線トップ 5」
get_railway_line_lengths(routes:["東日本旅客鉄道/大糸線", "西日本旅客鉄道/大糸線"])→ JR東 約 70.5km / JR西 約 35.5km(合計 ≈ 全線)、各行にpublishedLengthKm: 105.4(全線の営業キロ)とlengthNote:"operator-segment"(= 実測は担当区間のみ)トップ 5 は
list_railway_children(parent:"九州旅客鉄道")→get_railway_line_lengths(routes:[...])(最大 50 件)で比較実測長は軌道中心線の幾何長で営業キロと数%〜数十%ずれる。支線・貨物短絡線を含む路線は実測 > 営業キロで
lengthNote:"includes-branches"。駅を渡すと「路線ではない」として除外想定される Tool:
get_railway_line_lengths(トップ 5 は +list_railway_children)
「渋谷駅の乗降客数はこの 10 年でどう変わった?」
get_station_passengers(stations:["東日本旅客鉄道/山手線/渋谷"])→[{uri, name, line, series:[{year, value, note, estimate?}], latest}]。valueは 1 日あたりの乗降客数(人/日)。2011〜2024 年度(コロナ禍の落ち込みが見える)。noteは集計対象の但し書き(他路線を含む 等)、出典も注記複数の駅は 1 回にまとめて渡せる(最大 50 駅)。例:
list_stations_on_line(line:"西日本旅客鉄道/大阪環状線")の結果を渡せば環状線の全駅を比較できる。出典・定義・補正推定値の注記は 1 回だけ返る駅名が曖昧なときは会社名・路線名を含めて指定する
想定される Tool:
get_station_passengers
「渋谷から浅草へ、乗り換えの少ない行き方」 / 「乗換が増えてもいいので駅数最小で」
find_rail_network_path(from:"渋谷", to:"浅草")→ 東京メトロ銀座線で 1 本(optimize既定fewest_transfers)find_rail_network_path(from:"渋谷", to:"浅草", optimize:"fewest_stops")で駅数最小(乗換は駅 4 つ相当のペナルティ)。fastest(最速)は時刻表が無いため提供しない返り値:
legs(乗車/乗換の並び)、totals(stops/transfers)、reliability(level= high/medium/low、signals、advisory)、各区間のevidence(wdt:P197/wdt:P833の元データ URL)時刻表・所要時間・最速・直通運転は非考慮。直通運転区間(副都心線⇔東急東横線 等)を含むと
reliabilityが下がり、実際は乗換不要の可能性がある旨がadvisoryに出る。運行系統(湘南新宿ライン・快速等)は路線として存在しない想定される Tool:
find_rail_network_path
「渋谷から浅草への乗換が少ない経路を、路線を色分けして地図に描いて」(乗換なしの例)
find_rail_network_path(from:"渋谷", to:"浅草")→legsは 1 本(東京メトロ銀座線・乗換なし・18 駅)。totals= 18 駅 / 0 乗換路線名を
get_railway_geometryに渡しproperties.lineColor(銀座線FF9501)でポリラインを 1 色描画。legsのevidenceの駅 URI から出発・到着駅と途中駅をマーカーに乗換が無いので色分けは 1 色。乗換があると次の例のように区間ごとに色が変わる
想定される Tool:
find_rail_network_path→get_railway_geometry

find_rail_network_path(from:"渋谷", to:"浅草") が返した 1 区間(銀座線)を get_railway_geometry の lineColor で描画し、evidence の駅を Leaflet でマーカー表示。線形・ラインカラー・駅位置は鉄道駅LOD、ベースマップは OpenStreetMap。時刻表・所要時間・直通運転は非考慮。
「中野から押上へ、乗換の少ない経路を路線ごとに色分けして地図に描いて」(乗換ありの例)
find_rail_network_path(from:"中野", to:"押上")→legs= 東京メトロ東西線(中野→大手町・8 駅)/ 大手町で乗換 / 東京メトロ半蔵門線(大手町→押上・6 駅)。totals= 14 駅 / 1 乗換、reliability.level= highlegsの各rideの路線名をget_railway_geometryに渡し、properties.lineColor(東西線019BBF/ 半蔵門線8F75D6)でポリラインを色分け起点・乗換・到着の駅は
evidenceの駅 URI をget_railway_geometryに渡し、返るPointをマーカーに経由路線は全形が返るので、実際に乗る区間(起点〜乗換〜到着)だけ濃い線で強調し、残りは薄く描くと分かりやすい。
reliability.advisoryとtotalsはキャプションへ上の渋谷→浅草の例と違い
legsが複数になり、区間ごとにlineColorが変わる。乗換駅を境に色が切り替わる図になる想定される Tool:
find_rail_network_path→get_railway_geometry(路線ごと・駅ごと)

find_rail_network_path(from:"中野", to:"押上") が返した 2 区間(東西線 → 大手町で乗換 → 半蔵門線)を、各路線の get_railway_geometry の lineColor で色分けし Leaflet で描画。濃い線が実際に乗る区間、薄い線が路線の全形。線形・ラインカラーは鉄道駅LOD、ベースマップは OpenStreetMap。時刻表・所要時間・直通運転は非考慮。
応用事例:住所LOD MCP サーバーと組み合わせる
鉄道駅LOD MCP サーバーは 1 データセット専用ですが、住所LOD MCP サーバー(日本の行政界・町丁目を扱う 住所LOD の MCP サーバー)を同じクライアントで同時に有効化すれば、Claude 側で両者の結果を突き合わせて 1 枚の地図にできます。
「住所LOD MCPサーバーと鉄道駅LOD MCPサーバーを利用して、大阪環状線の各駅の平均乗降客数と大阪市の行政区の人口を地図上にビジュアライズしてください。」
大阪環状線の各駅の平均乗降客数(円の大きさ)と、大阪市の行政区の人口(色の濃さ)を 1 枚に重ねた地図です。鉄道側の路線形状・駅位置・乗降客数を鉄道駅LOD MCP サーバーから、行政区の境界と人口を住所LOD MCP サーバー(人口・世帯数の取得に対応)から取得しています。

Claude Desktop で上記プロンプトを入力して生成。プロンプトの解釈・データの結合方法・可視化の形式はいずれも Claude 側の判断による。区の人口は住所LOD の値(2020年国勢調査の基本単位区を合算した参考値で、公式統計値とは一致しない場合がある)。出典表記は画像内および各データソース(鉄道駅LOD / 住所LOD / 国土数値情報)に準拠。
開発
npm run typecheck # tsc --noEmit
npm test # vitest(オフライン、fixture ベース)
npm run build # dist/ へコンパイル
npm run inspector # MCP Inspector で対話的に確認元データについて
このサーバーは 鉄道駅LOD が公開するデータを利用しています。
ライセンス: CC BY-SA 4.0(出典表記 + 継承)
データ出典: 国土数値情報 鉄道データ(N02-25 版)/ 国土数値情報 駅別乗降客数データ(2011〜2024 年度)/ Wikidata / DBpedia 日本語版
最新の状況は 鉄道駅LOD サイト を参照してください。
免責事項
本ソフトウェアは現状有姿(as-is)で提供され、開発者はその動作・正確性・可用性についていかなる保証も行いません。
本ソフトウェアが問い合わせる 鉄道駅LOD は無償で公開されている共有サービスです。多数のアクセスが集中した場合や特定利用者からの大量アクセスがあった場合、鉄道駅LOD 側の判断で利用が制限されることがあります。
鉄道駅LOD が提供するデータの正確性・完全性・最新性は保証されません。出力の利用にあたっては利用者自身の責任で妥当性を判断してください。
ライセンス
本ソフトウェア(コード)は MIT License のもとで公開しています。利用しているデータ(鉄道駅LOD)のライセンスは上記のとおり別途 CC BY-SA 4.0 です。
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for Japan geodata: cadastral lot numbers (chiban) and reverse geocoding, for AI agents.
Geo-based flight search MCP server. Find more flights between any two places on earth
An MCP server that audits the fairness of construction and renovation estimates in Japan. Provides fair-price ranges, overcharge detection, and verifiable unit-cost data based on JCCDB (65,520 items across 402 categories, CC BY 4.0, DOI-backed).
Experimental MCP server for current empirical verification of explicit public HTTPS endpoint claims.
Related MCP Servers
- AlicenseAqualityDmaintenanceMCP server for searching Japanese train routes using Yahoo! Transit data, enabling station-to-station route planning with optional via stations, time specifications, and fare options.118 npm30MIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Japanese public transit journey planning with interactive map UI, enabling station search, route planning, and departure lookups via natural language.MIT
- AlicenseAqualityDmaintenanceUnofficial MCP server for Yahoo! Transit that provides Japanese train route search (including last/first train), real-time service disruption info, and station timetables as MCP tools.41MIT
- AlicenseAqualityDmaintenanceAn (unofficial) MCP server for the Deutsche Bahn Timetables API — station search, planned departures, and real-time changes (delays, platform changes, cancellations) as tools for Claude and other MCP clients.42MIT