
JustRouting MCP Server
io.github.justroutingv0.1.5更新於 Oct 3, 2026
Road routing, travel-time matrices, geocoding, and fleet optimization for Southeast Asia.
概覽
讓助理在東南亞進行地理編碼、開車或機車路線計算、行車時間矩陣計算,以及多車輛配送路線最佳化。
- 功能
- 把 JustRouting 路線 API 包裝成四個工具:geocode 將地名或地址轉成座標;route 回傳兩點之間的開車距離與時間;table 產生多個地點之間的距離與時間矩陣;optimize 把工作指派給車輛並排出每輛車的停靠順序。預設使用開車模式,也可選擇機車模式。這台伺服器是精簡的 stdio 程序,把請求轉送給 JustRouting API。
- 適用情境
- 當助理需要東南亞的道路路線、行車時間或車隊規劃時使用,例如比較哪位司機離客戶最近、規劃多輛貨車的取件路線,或回答兩地開車要多久。在涵蓋範圍以外沒有用處。
- 執行需求
- 由 MCP 用戶端透過 stdio 啟動的本機程序。需要 JustRouting API 金鑰,透過環境變數 JUSTROUTING_API_KEY 傳入。提供 macOS、Linux 與 Windows 的預先編譯執行檔;從原始碼建置需要 Go 1.25 以上版本。需要連線至 JustRouting API 的網路存取。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 JustRouting MCP Server,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
JustRouting MCP
MCP server for JustRouting, a Southeast Asia-focused routing API.
Use JustRouting's road-routing capabilities from MCP-compatible AI assistants such as Claude and Cursor.
Features
- Driving route calculation
- Motorcycle routing profile
- Driving distance
- Estimated travel duration
- Distance and duration matrix (table)
- Address and place search (geocoding)
- Route optimization (vehicle routing)
- Southeast Asia-focused road coverage
- MCP stdio transport
- Built on the official JustRouting Go client
Requirements
- A JustRouting API key
- Go 1.25+ (only needed when installing from source)
Installation
One-line installer (macOS / Linux)
Downloads the latest prebuilt binary for your OS/architecture from GitHub Releases, verifies its checksum, and installs it to /usr/local/bin (or ~/.local/bin). No Go required.
Pin a specific version:
Uninstall: remove the justrouting-mcp binary from the directory it was installed to.
Manual download
Prebuilt binaries for macOS, Linux, and Windows are attached to every release. Download the archive for your platform, extract it, and put the binary on your PATH.
From source (Go users)
Make sure justrouting-mcp is available in your PATH.
Configuration
Set your JustRouting API key:
Tools
route
Calculate a route between two locations, using the driving profile by default or the motorcycle profile when requested.
Input:
profile is optional. Set it to "motorcycle" for a motorcycle route; omit it (or use "car") for the default driving route. When the user mentions a motorcycle or motorbike, the assistant sets profile to "motorcycle".
Coordinates must use:
If the user asks about places by name or address instead of coordinates, call geocode first (see below) and pass its coordinates values here.
Output:
distance_meters is the driving distance in meters.
duration_seconds is the estimated driving duration in seconds.
geocode
Search for places and convert a place name or address into coordinates. Use this before route when the user refers to places by name.
The search is structured: the assistant parses the user's place reference into address components and passes only the ones it can determine — name, housenumber, street, postcode, city, country. Components with no data are omitted. Prefer including country (and city) when the context implies them — they are the strongest disambiguators for common, abbreviated, or misspelled names.
Input:
At least one component is required. limit is optional and defaults to 1 (best match only); it must not exceed 10. filters is also optional, for example "filters": ["countrycode:sg"] to restrict results to Singapore.
Output:
Results are ordered best first — always take the first result's coordinates (ready to pass to route, table or optimize). If nothing matches, the tool returns an error.
table
Calculate a matrix of driving durations and distances between many locations at once. Use it to compare several places — for example, to find which of several drivers is nearest to a customer.
Input:
coordinates is required and must hold at least two entries in longitude,latitude format (as returned by geocode). The position of each entry is its index: matrix rows and columns, and the index field of every source/destination in the output, refer back to it. Pass the places in a fixed order — for a nearest-driver question, put the customer first and the drivers after, then read the first row.
sources and destinations optionally restrict the matrix to subsets of the coordinates by index (empty or omitted means all of them). annotations optionally selects "duration", "distance", or both (default both). profile works exactly as in route — set "motorcycle" when the user mentions a motorcycle or motorbike, otherwise omit it (or use "car") for driving.
Output:
durations is in seconds and distances in meters, each indexed [source][destination]. A null entry means the engine could not connect that pair — it is not zero. Every source and destination object carries an index back to the input coordinates list.
optimize
Assign jobs to vehicles and order each vehicle's stops (vehicle routing). Use it for delivery or visit planning — for example, two vans picking up parcels from customers.
The assistant geocodes every place first — always taking each call's first (best) result — then builds the request. For a prompt such as "I have two vans, V1 at 'garlick ville singapore' and V2 at 'victoria place singapore'; pick up parcels from 6 customers at 'original sin', 'henry park primary school', 'astrid meadows tennis court', 'little oaks montessori kindergarten', 'eden hall' and 'villa chancery'", the assistant geocodes all 8 places and calls:
Input:
At least one vehicle and one job are required, with unique ids. Coordinates are longitude,latitude strings (as returned by geocode). Set a vehicle's start and end both to its current location for a round trip, or omit them (or pass "") when the vehicle may start or end anywhere. profile works per vehicle exactly as in route — set "motorcycle" when the user mentions a motorcycle or motorbike, otherwise omit it (or use "car") for driving.
Output (vehicle 2's route and some fields omitted for brevity):
Read each route's steps in order: "job" steps carry the job id plus the arrival time and travel duration in seconds, so they tell which vehicle serves which jobs and when. unassigned lists the jobs no vehicle could serve. summary aggregates cost, duration and distance across all routes.
Asking about places by name
For a prompt such as "how long from 'marina bay singapore' driving to 'changqi airport'?", the assistant geocodes each place and then routes:
geocodewith"name": "marina bay", "country": "singapore"→ take the first result'scoordinatesgeocodewith"name": "changqi airport"→ take the first result'scoordinatesroutewith the twocoordinatesvalues asoriginanddestination(omitprofilefor driving)
For a comparison such as "which of these 4 drivers is nearest to the customer?", geocode the customer and every driver, take each call's first result, pass all coordinates values to table in a fixed order — customer first — and read the first row of the returned matrices.
For a multi-vehicle plan such as "two vans, six customers to pick up from", geocode the vans' locations and every customer, take each call's first result, then call optimize with one vehicle entry per van (start and end set to its location) and one job entry per customer. Read the routes[].steps in order to see which van serves which customers.
Claude
Configure the MCP server:
Cursor
Add the following MCP server configuration:
Development
Clone the repository:
Install dependencies:
Run tests:
Build:
Run:
The server communicates with MCP clients through stdin/stdout.
Releasing
Tag and push — GitHub Actions builds the binaries and publishes the release:
The install.sh script always installs the latest release, so it never needs to be updated when a new version ships.
Architecture
The MCP server is intentionally thin.
Routing logic, API authentication, HTTP transport, retries, and API error handling are provided by the official JustRouting Go client.
Roadmap
- Route geometry
- Alternative routes
- Waypoints
- Distance matrix
- Route optimization
- Streamable HTTP
- Remote MCP deployment
License
來源:README.md,提交 5ac78d3
工具
0版本歷史
1- v0.1.5最新Oct 3, 2026


