
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

