@mapbox/mcp-server 0.12.6 → 0.12.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. package/dist/commonjs/resources/ui-apps/DirectionsAppUIResource.d.ts +3 -2
  2. package/dist/commonjs/resources/ui-apps/DirectionsAppUIResource.d.ts.map +1 -1
  3. package/dist/commonjs/resources/ui-apps/DirectionsAppUIResource.js +5 -3
  4. package/dist/commonjs/resources/ui-apps/DirectionsAppUIResource.js.map +1 -1
  5. package/dist/commonjs/resources/ui-apps/directionsAppHtml.d.ts +20 -8
  6. package/dist/commonjs/resources/ui-apps/directionsAppHtml.d.ts.map +1 -1
  7. package/dist/commonjs/resources/ui-apps/directionsAppHtml.js +198 -18
  8. package/dist/commonjs/resources/ui-apps/directionsAppHtml.js.map +1 -1
  9. package/dist/commonjs/tools/directions-tool/DirectionsTool.d.ts.map +1 -1
  10. package/dist/commonjs/tools/directions-tool/DirectionsTool.input.schema.d.ts.map +1 -1
  11. package/dist/commonjs/tools/directions-tool/DirectionsTool.input.schema.js +6 -2
  12. package/dist/commonjs/tools/directions-tool/DirectionsTool.input.schema.js.map +1 -1
  13. package/dist/commonjs/tools/directions-tool/DirectionsTool.js +52 -109
  14. package/dist/commonjs/tools/directions-tool/DirectionsTool.js.map +1 -1
  15. package/dist/commonjs/tools/directions-tool/buildDirectionsRequestUrl.d.ts +29 -0
  16. package/dist/commonjs/tools/directions-tool/buildDirectionsRequestUrl.d.ts.map +1 -0
  17. package/dist/commonjs/tools/directions-tool/buildDirectionsRequestUrl.js +63 -0
  18. package/dist/commonjs/tools/directions-tool/buildDirectionsRequestUrl.js.map +1 -0
  19. package/dist/commonjs/version.json +3 -3
  20. package/dist/esm/resources/ui-apps/DirectionsAppUIResource.d.ts +3 -2
  21. package/dist/esm/resources/ui-apps/DirectionsAppUIResource.d.ts.map +1 -1
  22. package/dist/esm/resources/ui-apps/DirectionsAppUIResource.js +5 -3
  23. package/dist/esm/resources/ui-apps/DirectionsAppUIResource.js.map +1 -1
  24. package/dist/esm/resources/ui-apps/directionsAppHtml.d.ts +20 -8
  25. package/dist/esm/resources/ui-apps/directionsAppHtml.d.ts.map +1 -1
  26. package/dist/esm/resources/ui-apps/directionsAppHtml.js +198 -18
  27. package/dist/esm/resources/ui-apps/directionsAppHtml.js.map +1 -1
  28. package/dist/esm/tools/directions-tool/DirectionsTool.d.ts.map +1 -1
  29. package/dist/esm/tools/directions-tool/DirectionsTool.input.schema.d.ts.map +1 -1
  30. package/dist/esm/tools/directions-tool/DirectionsTool.input.schema.js +6 -2
  31. package/dist/esm/tools/directions-tool/DirectionsTool.input.schema.js.map +1 -1
  32. package/dist/esm/tools/directions-tool/DirectionsTool.js +52 -109
  33. package/dist/esm/tools/directions-tool/DirectionsTool.js.map +1 -1
  34. package/dist/esm/tools/directions-tool/buildDirectionsRequestUrl.d.ts +29 -0
  35. package/dist/esm/tools/directions-tool/buildDirectionsRequestUrl.d.ts.map +1 -0
  36. package/dist/esm/tools/directions-tool/buildDirectionsRequestUrl.js +60 -0
  37. package/dist/esm/tools/directions-tool/buildDirectionsRequestUrl.js.map +1 -0
  38. package/dist/esm/version.json +3 -3
  39. package/package.json +1 -1
@@ -13,15 +13,16 @@
13
13
  *
14
14
  * 2. **Legacy MCP-UI spec** — `directions_tool` inlines a `rawHtml`
15
15
  * UIResource into its content array (gated by `isMcpUiEnabled()`). The
16
- * HTML is generated at tool-execute time with the route geometry already
17
- * baked in as an `initialData` script block, so the iframe renders
18
- * immediately without needing the host to deliver the tool result.
16
+ * HTML is generated at tool-execute time with the call's input params
17
+ * baked in as an `initialData` script block; the iframe uses those params
18
+ * to self-fetch the route from the Directions API, so it never depends on
19
+ * the host delivering the tool result.
19
20
  *
20
21
  * One source of truth for the rendering logic; two slim entry conditions.
21
22
  */
22
23
  export const MAPBOX_GL_VERSION = '3.12.0';
23
24
  export function renderDirectionsAppHtml(params) {
24
- const { publicToken, initialData } = params;
25
+ const { publicToken, apiEndpoint, initialData } = params;
25
26
  const glVersion = params.glVersion ?? MAPBOX_GL_VERSION;
26
27
  const initialDataScript = initialData
27
28
  ? `<script id="initial-data" type="application/json">${escapeForScript(JSON.stringify(initialData))}</script>`
@@ -68,6 +69,7 @@ ${initialDataScript}
68
69
  <script>
69
70
  (function() {
70
71
  var TOKEN = ${JSON.stringify(publicToken)};
72
+ var API_ENDPOINT = ${JSON.stringify(apiEndpoint)};
71
73
 
72
74
  var loadingEl = document.getElementById('loading');
73
75
  var errorEl = document.getElementById('error');
@@ -80,6 +82,159 @@ ${initialDataScript}
80
82
  // Track markers across re-renders so we can remove them before drawing the
81
83
  // next route — otherwise a second tool-result delivery stacks pins.
82
84
  var routeMarkers = [];
85
+ // One render "cycle" per tool call delivered to this iframe. A new
86
+ // tool-input (or baked initial-data) delivery starts a new cycle by
87
+ // bumping \`generation\`; async callbacks that captured an older value are
88
+ // stale and must not touch the UI. This dedupes self-fetch vs tool-result
89
+ // within one call WITHOUT permanently blocking later calls that reuse
90
+ // this same iframe instance.
91
+ var generation = 0;
92
+ var renderedGeneration = -1; // generation whose route is on screen (-1 = none)
93
+ var selfFetchGeneration = -1; // generation that started a self-fetch (-1 = none)
94
+
95
+ // -------------------------------------------------------------------------
96
+ // Self-fetch: build a Directions API request directly from the tool call's
97
+ // input parameters and fetch the route ourselves, so this map never
98
+ // depends on the tool response carrying geometries="geojson".
99
+ //
100
+ // Mirrors src/tools/directions-tool/buildDirectionsRequestUrl.ts — kept in
101
+ // sync by the parity test in
102
+ // test/tools/directions-tool/directionsUrlParity.test.ts. Always forces
103
+ // geometries=geojson regardless of what the tool call itself requested.
104
+ // -------------------------------------------------------------------------
105
+ function formatIsoDateTimeClient(dateTime) {
106
+ var noTzWithSeconds = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}$/;
107
+ if (noTzWithSeconds.test(dateTime)) {
108
+ return dateTime.substring(0, dateTime.lastIndexOf(':'));
109
+ }
110
+ return dateTime;
111
+ }
112
+
113
+ function encodeExcludeClient(value) {
114
+ return value
115
+ .replace(/,/g, '%2C')
116
+ .replace(/\\(/g, '%28')
117
+ .replace(/\\)/g, '%29')
118
+ .replace(/ /g, '%20');
119
+ }
120
+
121
+ function buildDirectionsApiUrl(params, publicToken, apiEndpoint) {
122
+ var coords = params.coordinates
123
+ .map(function(c) { return c.longitude + ',' + c.latitude; })
124
+ .join(';');
125
+ var encodedCoords = encodeURIComponent(coords);
126
+ var profile = params.routing_profile || 'mapbox/driving-traffic';
127
+
128
+ var qp = new URLSearchParams();
129
+ qp.append('access_token', publicToken);
130
+ qp.append('geometries', 'geojson');
131
+ qp.append('alternatives', params.alternatives ? 'true' : 'false');
132
+ qp.append(
133
+ 'annotations',
134
+ profile === 'mapbox/driving-traffic'
135
+ ? 'distance,congestion,speed'
136
+ : 'distance,speed'
137
+ );
138
+ qp.append('overview', 'full');
139
+
140
+ if (params.depart_at) {
141
+ qp.append('depart_at', formatIsoDateTimeClient(params.depart_at));
142
+ } else if (params.arrive_by) {
143
+ qp.append('arrive_by', formatIsoDateTimeClient(params.arrive_by));
144
+ }
145
+ if (params.max_height !== undefined && params.max_height !== null) {
146
+ qp.append('max_height', String(params.max_height));
147
+ }
148
+ if (params.max_width !== undefined && params.max_width !== null) {
149
+ qp.append('max_width', String(params.max_width));
150
+ }
151
+ if (params.max_weight !== undefined && params.max_weight !== null) {
152
+ qp.append('max_weight', String(params.max_weight));
153
+ }
154
+ qp.append('steps', 'true');
155
+
156
+ var queryString = qp.toString();
157
+ if (params.exclude) {
158
+ queryString += '&exclude=' + encodeExcludeClient(params.exclude);
159
+ }
160
+
161
+ return apiEndpoint + 'directions/v5/' + profile + '/' + encodedCoords + '?' + queryString;
162
+ }
163
+ // Exposed so the parity test (Node vm sandbox) can call this in isolation.
164
+ window.__buildDirectionsApiUrl = buildDirectionsApiUrl;
165
+
166
+ // Params arrive via postMessage and are untrusted: they get interpolated
167
+ // into the request URL, so validate the pieces our encoding does not
168
+ // neutralize. routing_profile is spliced into the URL path unencoded, and
169
+ // encodeExcludeClient only escapes ',', '(', ')' and spaces — characters
170
+ // like '&' or '../' path segments would otherwise let a hostile sibling
171
+ // frame reshape the request. Server-side input is zod-validated before it
172
+ // reaches buildDirectionsRequestUrl; this mirrors those guarantees for
173
+ // the client copy.
174
+ function isSafeDirectionsParams(params) {
175
+ if (!params || !Array.isArray(params.coordinates)) return false;
176
+ if (params.coordinates.length < 2) return false;
177
+ for (var i = 0; i < params.coordinates.length; i++) {
178
+ var c = params.coordinates[i];
179
+ if (!c || typeof c.longitude !== 'number' || !isFinite(c.longitude)) return false;
180
+ if (typeof c.latitude !== 'number' || !isFinite(c.latitude)) return false;
181
+ }
182
+ if (params.routing_profile !== undefined && params.routing_profile !== null) {
183
+ if (typeof params.routing_profile !== 'string') return false;
184
+ if (!/^mapbox\\/[a-z-]+$/.test(params.routing_profile)) return false;
185
+ }
186
+ if (params.exclude !== undefined && params.exclude !== null) {
187
+ if (typeof params.exclude !== 'string') return false;
188
+ if (!/^[A-Za-z0-9_,.() -]+$/.test(params.exclude)) return false;
189
+ }
190
+ return true;
191
+ }
192
+
193
+ function fetchRouteFromDirectionsApi(params) {
194
+ // Every delivery (tool-input notification or baked initial-data) starts
195
+ // a new render cycle, even when the guard below prevents the fetch from
196
+ // actually running — the new call must still invalidate the previous
197
+ // cycle's in-flight callbacks and error-suppression state.
198
+ generation++;
199
+ if (!TOKEN || !isSafeDirectionsParams(params)) return;
200
+ var gen = generation; // captured by the callbacks below
201
+ selfFetchGeneration = gen; // marked only when the fetch actually proceeds
202
+ var url = buildDirectionsApiUrl(params, TOKEN, API_ENDPOINT);
203
+ fetch(url)
204
+ .then(function(res) {
205
+ if (!res.ok) {
206
+ return res
207
+ .json()
208
+ .catch(function() { return null; })
209
+ .then(function(body) {
210
+ var msg =
211
+ body && body.message
212
+ ? body.message
213
+ : 'Directions API error (' + res.status + ')';
214
+ throw new Error(msg);
215
+ });
216
+ }
217
+ return res.json();
218
+ })
219
+ .then(function(data) {
220
+ if (gen !== generation) return; // stale: a newer call started
221
+ if (renderedGeneration === gen) return; // cycle already drawn (tool-result won)
222
+ var route = data && data.routes && data.routes[0];
223
+ var picked = route ? pickRouteGeometry(route) : null;
224
+ if (picked) {
225
+ renderRoute(picked);
226
+ } else {
227
+ showError('Directions API returned no route.');
228
+ }
229
+ })
230
+ .catch(function(err) {
231
+ if (gen !== generation) return;
232
+ if (renderedGeneration === gen) return;
233
+ showError(
234
+ 'Could not fetch route: ' + (err && err.message ? err.message : err)
235
+ );
236
+ });
237
+ }
83
238
 
84
239
  // -------------------------------------------------------------------------
85
240
  // MCP App postMessage protocol (skipped silently in MCP-UI rawHtml mode)
@@ -103,6 +258,14 @@ ${initialDataScript}
103
258
  }
104
259
 
105
260
  window.addEventListener('message', function(event) {
261
+ // Only the embedding host (parent frame) is a legitimate sender. Any
262
+ // frame in the page can obtain this window's reference and postMessage
263
+ // crafted notifications; pinning the source window blocks that while
264
+ // staying host-agnostic — the host's origin is unknowable at
265
+ // HTML-generation time, so an origin allowlist isn't possible for a
266
+ // portable MCP App. (Standalone/top-level, window.parent === window,
267
+ // so self-posted messages still work for manual testing.)
268
+ if (event.source !== window.parent) return;
106
269
  var message = event.data;
107
270
  if (!message || typeof message !== 'object') return;
108
271
 
@@ -113,6 +276,9 @@ ${initialDataScript}
113
276
  else handlers.resolve(message.result);
114
277
  return;
115
278
  }
279
+ if (message.method === 'ui/notifications/tool-input' && message.params) {
280
+ fetchRouteFromDirectionsApi(message.params.arguments);
281
+ }
116
282
  if (message.method === 'ui/notifications/tool-result' && message.params) {
117
283
  handleToolResult(message.params);
118
284
  }
@@ -176,31 +342,32 @@ ${initialDataScript}
176
342
  initMap();
177
343
 
178
344
  // -------------------------------------------------------------------------
179
- // Initial data path (MCP-UI rawHtml): geometry was baked in server-side.
180
- // Accepts the same geometry shapes as extractRoute (GeoJSON or polyline).
345
+ // Initial data path (MCP-UI rawHtml): the tool call's input params were
346
+ // baked in server-side. Self-fetch the route from the Directions API
347
+ // rather than relying on baked-in geometry from the tool response.
181
348
  // -------------------------------------------------------------------------
182
349
  function consumeInitialData() {
183
350
  var el = document.getElementById('initial-data');
184
351
  if (!el || !el.textContent) return;
185
352
  try {
186
353
  var data = JSON.parse(el.textContent);
187
- if (!data || !data.geometry) return;
188
- // Reuse pickRouteGeometry by wrapping the baked-in payload as a route.
189
- var route = pickRouteGeometry({
190
- geometry: data.geometry,
191
- distance: data.distance,
192
- duration: data.duration
193
- });
194
- if (route) {
195
- if (data.summary) route.summary = data.summary;
196
- drawRoute(route);
197
- }
354
+ if (!data || !data.params) return;
355
+ fetchRouteFromDirectionsApi(data.params);
198
356
  } catch (_) { /* ignore */ }
199
357
  }
200
358
 
201
359
  function handleToolResult(result) {
360
+ // A tool-result that isn't paired with this cycle's self-fetch (no
361
+ // tool-input was delivered for it — e.g. hosts that only send
362
+ // tool-result) represents a new tool call, so it starts its own render
363
+ // cycle. A paired result belongs to the cycle its tool-input opened;
364
+ // bumping for it would wrongly invalidate the in-flight self-fetch.
365
+ if (selfFetchGeneration !== generation) generation++;
202
366
  var route = extractRoute(result);
203
367
  if (route) {
368
+ // Authoritative geometry: always (re)render — drawRoute removes the
369
+ // previous route's layers/markers, which is what lets a host reuse
370
+ // one iframe across sequential directions_tool calls.
204
371
  renderRoute(route);
205
372
  return;
206
373
  }
@@ -211,28 +378,39 @@ ${initialDataScript}
211
378
  // MCP Apps host resources/read bridge.
212
379
  var tempUri = findTempResourceUri(result);
213
380
  if (tempUri) {
381
+ var gen = generation;
214
382
  loadingEl.textContent = 'Fetching full route…';
215
383
  sendRequest('resources/read', { uri: tempUri }).then(
216
384
  function(rr) {
385
+ if (gen !== generation) return; // stale: a newer call started
217
386
  var fetched = readResourceJson(rr);
218
387
  var fetchedRoute = fetched ? extractRoute({ structuredContent: fetched }) : null;
219
388
  if (fetchedRoute) {
220
389
  renderRoute(fetchedRoute);
221
- } else {
390
+ } else if (renderedGeneration !== gen) {
222
391
  showError('Could not parse route from the temporary resource.');
223
392
  }
224
393
  },
225
394
  function(err) {
395
+ if (gen !== generation || renderedGeneration === gen) return;
226
396
  showError('Could not read temporary resource: ' + (err && err.message ? err.message : err));
227
397
  }
228
398
  );
229
399
  return;
230
400
  }
231
401
 
402
+ // No geometry in this result. Suppress the hard error only when this
403
+ // cycle's self-fetch is handling it (in flight, already rendered, or it
404
+ // already reported its own error via its .catch() handler). An unpaired
405
+ // result opened a fresh cycle above, so a route left over from an
406
+ // earlier call never suppresses this error.
407
+ if (selfFetchGeneration === generation) return;
408
+
232
409
  showError('Could not find route data in tool result.');
233
410
  }
234
411
 
235
412
  function renderRoute(route) {
413
+ renderedGeneration = generation;
236
414
  if (route.summary) {
237
415
  summaryEl.textContent = route.summary;
238
416
  summaryEl.style.display = 'block';
@@ -388,6 +566,8 @@ ${initialDataScript}
388
566
  return;
389
567
  }
390
568
 
569
+ errorEl.style.display = 'none';
570
+
391
571
  if (route.summary && summaryEl.style.display === 'none') {
392
572
  summaryEl.textContent = route.summary;
393
573
  summaryEl.style.display = 'block';
@@ -1 +1 @@
1
- {"version":3,"file":"directionsAppHtml.js","sourceRoot":"","sources":["../../../../src/resources/ui-apps/directionsAppHtml.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,kCAAkC;AAElC;;;;;;;;;;;;;;;;;;GAkBG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAO1C,MAAM,UAAU,uBAAuB,CAAC,MAIvC;IACC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IAC5C,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,iBAAiB,CAAC;IAExD,MAAM,iBAAiB,GAAG,WAAW;QACnC,CAAC,CAAC,qDAAqD,eAAe,CAClE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B,WAAW;QACd,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;;;;mDAM0C,SAAS;oDACR,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B3D,iBAAiB;;;;gBAIH,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA4XnC,CAAC;AACT,CAAC;AAED,SAAS,eAAe,CAAC,CAAS;IAChC,qEAAqE;IACrE,OAAO,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;AAClD,CAAC"}
1
+ {"version":3,"file":"directionsAppHtml.js","sourceRoot":"","sources":["../../../../src/resources/ui-apps/directionsAppHtml.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,kCAAkC;AAElC;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,MAAM,CAAC,MAAM,iBAAiB,GAAG,QAAQ,CAAC;AAkB1C,MAAM,UAAU,uBAAuB,CAAC,MAKvC;IACC,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,MAAM,CAAC;IACzD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,iBAAiB,CAAC;IAExD,MAAM,iBAAiB,GAAG,WAAW;QACnC,CAAC,CAAC,qDAAqD,eAAe,CAClE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAC5B,WAAW;QACd,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;;;;mDAM0C,SAAS;oDACR,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8B3D,iBAAiB;;;;gBAIH,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;uBACpB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA8iB1C,CAAC;AACT,CAAC;AAED,SAAS,eAAe,CAAC,CAAS;IAChC,qEAAqE;IACrE,OAAO,CAAC,CAAC,OAAO,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;AAClD,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"DirectionsTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/directions-tool/DirectionsTool.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EACL,wBAAwB,EAEzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AASzD,qBAAa,cAAe,SAAQ,kBAAkB,CACpD,OAAO,qBAAqB,EAC5B,OAAO,wBAAwB,CAChC;IACC,IAAI,SAAqB;IACzB,WAAW,SAImD;IAC9D,WAAW;;;;;;MAMT;IACF,QAAQ,CAAC,IAAI;;;;;;;;MAQX;gBAEU,MAAM,EAAE;QAAE,WAAW,EAAE,WAAW,CAAA;KAAE;cAOhC,OAAO,CACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,EAC5C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC;CAmU3B"}
1
+ {"version":3,"file":"DirectionsTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/directions-tool/DirectionsTool.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAGzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AACzE,OAAO,EACL,wBAAwB,EAEzB,MAAM,mCAAmC,CAAC;AAC3C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AASzD,qBAAa,cAAe,SAAQ,kBAAkB,CACpD,OAAO,qBAAqB,EAC5B,OAAO,wBAAwB,CAChC;IACC,IAAI,SAAqB;IACzB,WAAW,SAM+B;IAC1C,WAAW;;;;;;MAMT;IACF,QAAQ,CAAC,IAAI;;;;;;;;MAQX;gBAEU,MAAM,EAAE;QAAE,WAAW,EAAE,WAAW,CAAA;KAAE;cAOhC,OAAO,CACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,EAC5C,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,cAAc,CAAC;CAyQ3B"}
@@ -1 +1 @@
1
- {"version":3,"file":"DirectionsTool.input.schema.d.ts","sourceRoot":"","sources":["../../../../src/tools/directions-tool/DirectionsTool.input.schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoHxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;iBAkKhC,CAAC"}
1
+ {"version":3,"file":"DirectionsTool.input.schema.d.ts","sourceRoot":"","sources":["../../../../src/tools/directions-tool/DirectionsTool.input.schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAoHxB,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;iBAsKhC,CAAC"}
@@ -119,8 +119,12 @@ export const DirectionsInputSchema = z.object({
119
119
  .optional()
120
120
  .default('none')
121
121
  .describe('The format of the returned geometry. Options: \n' +
122
- '- none (default): no geometry object is returned at all, use this if you do not need all of the intermediate coordinates.\n' +
123
- '- geojson: as GeoJSON LineString (might be very long as there could be a lot of points)'),
122
+ '- none (default): no geometry object is returned in the response. The map preview UI ' +
123
+ 'still renders the route on its own; use this whenever you do not need the raw ' +
124
+ 'coordinates yourself.\n' +
125
+ '- geojson: as GeoJSON LineString (might be very long as there could be a lot of ' +
126
+ 'points). Only needed when you (the caller) require the coordinates directly — not ' +
127
+ 'required for the map preview to work.'),
124
128
  max_height: z
125
129
  .number()
126
130
  .min(0, 'Vehicle height must be between 0 and 10 meters')
@@ -1 +1 @@
1
- {"version":3,"file":"DirectionsTool.input.schema.js","sourceRoot":"","sources":["../../../../src/tools/directions-tool/DirectionsTool.input.schema.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DirectionsTool.input.schema.js","sourceRoot":"","sources":["../../../../src/tools/directions-tool/DirectionsTool.input.schema.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,10 @@
1
1
  // Copyright (c) Mapbox, Inc.
2
2
  // Licensed under the MIT License.
3
- import { URLSearchParams } from 'node:url';
4
3
  import { randomBytes, randomUUID } from 'node:crypto';
5
4
  import { createUIResource } from '@mcp-ui/server';
6
5
  import { MapboxApiBasedTool } from '../MapboxApiBasedTool.js';
7
6
  import { cleanResponseData } from './cleanResponseData.js';
8
- import { formatIsoDateTime } from '../../utils/dateUtils.js';
7
+ import { buildDirectionsRequestUrl } from './buildDirectionsRequestUrl.js';
9
8
  import { DirectionsInputSchema } from './DirectionsTool.input.schema.js';
10
9
  import { DirectionsResponseSchema } from './DirectionsTool.output.schema.js';
11
10
  import { temporaryResourceManager } from '../../utils/temporaryResourceManager.js';
@@ -17,9 +16,11 @@ import { renderDirectionsAppHtml } from '../../resources/ui-apps/directionsAppHt
17
16
  export class DirectionsTool extends MapboxApiBasedTool {
18
17
  name = 'directions_tool';
19
18
  description = 'Fetches directions from Mapbox API based on provided coordinates and direction method. ' +
20
- 'For route planning and distance calculations, use geometries="none" to get compact responses. ' +
21
- 'Only request full geometry (geometries="geojson") when you need to visualize the route on a map ' +
22
- 'or provide detailed turn-by-turn navigation instructions.';
19
+ 'This tool always attaches an interactive map preview UI to its result; the map fetches and ' +
20
+ 'renders its own route independently, so it works regardless of the geometries parameter. ' +
21
+ 'Use geometries="none" (default) for compact text/data responses (distance, duration, ' +
22
+ 'turn-by-turn instructions). Use geometries="geojson" only when you need the raw route ' +
23
+ 'coordinates in the response yourself.';
23
24
  annotations = {
24
25
  title: 'Directions Tool',
25
26
  readOnlyHint: true,
@@ -157,63 +158,11 @@ export class DirectionsTool extends MapboxApiBasedTool {
157
158
  isError: true
158
159
  };
159
160
  }
160
- const joined = input.coordinates
161
- .map(({ longitude, latitude }) => `${longitude},${latitude}`)
162
- .join(';');
163
- const encodedCoords = encodeURIComponent(joined);
164
- // Build query parameters
165
- const queryParams = new URLSearchParams();
166
- queryParams.append('access_token', accessToken);
167
- // Only add geometries parameter if not 'none'
168
- if (input.geometries !== 'none') {
169
- queryParams.append('geometries', input.geometries);
170
- }
171
- queryParams.append('alternatives', input.alternatives.toString());
172
- // Add annotations parameter
173
- if (input.routing_profile === 'mapbox/driving-traffic') {
174
- // congestion is available only when driving
175
- queryParams.append('annotations', 'distance,congestion,speed');
176
- }
177
- else {
178
- queryParams.append('annotations', 'distance,speed');
179
- }
180
- // For annotations to work, overview must be set to 'full'
181
- queryParams.append('overview', 'full');
182
- // Add depart_at or arrive_by parameter if provided, converting format if needed
183
- if (input.depart_at) {
184
- const formattedDateTime = formatIsoDateTime(input.depart_at);
185
- queryParams.append('depart_at', formattedDateTime);
186
- }
187
- else if (input.arrive_by) {
188
- const formattedDateTime = formatIsoDateTime(input.arrive_by);
189
- queryParams.append('arrive_by', formattedDateTime);
190
- }
191
- // Add vehicle dimension parameters if provided
192
- if (input.max_height !== undefined) {
193
- queryParams.append('max_height', input.max_height.toString());
194
- }
195
- if (input.max_width !== undefined) {
196
- queryParams.append('max_width', input.max_width.toString());
197
- }
198
- if (input.max_weight !== undefined) {
199
- queryParams.append('max_weight', input.max_weight.toString());
200
- }
201
- queryParams.append('steps', 'true');
202
- let queryString = queryParams.toString();
203
- // Add exclude parameter if provided (ensuring proper encoding of special characters)
204
- if (input.exclude) {
205
- // Custom encoding function to match the expected format in tests
206
- const customEncodeForExclude = (str) => {
207
- return str
208
- .replace(/,/g, '%2C') // Encode comma
209
- .replace(/\(/g, '%28') // Encode opening parenthesis
210
- .replace(/\)/g, '%29') // Encode closing parenthesis
211
- .replace(/ /g, '%20'); // Encode space as %20, not +
212
- };
213
- const excludeEncoded = customEncodeForExclude(input.exclude);
214
- queryString += `&exclude=${excludeEncoded}`;
215
- }
216
- const url = `${MapboxApiBasedTool.mapboxApiEndpoint}directions/v5/${input.routing_profile}/${encodedCoords}?${queryString}`;
161
+ const url = buildDirectionsRequestUrl({
162
+ input,
163
+ accessToken,
164
+ apiEndpoint: MapboxApiBasedTool.mapboxApiEndpoint
165
+ });
217
166
  const response = await this.httpRequest(url);
218
167
  if (!response.ok) {
219
168
  const errorMessage = await this.getErrorMessage(response);
@@ -239,6 +188,20 @@ export class DirectionsTool extends MapboxApiBasedTool {
239
188
  this.log('warning', `DirectionsTool: Response validation failed: ${error}`);
240
189
  validatedData = cleanedData;
241
190
  }
191
+ let uiResourceBlock;
192
+ if (isMcpUiEnabled()) {
193
+ const inlineHtml = await tryRenderInlineUiHtml(input, accessToken, this.httpRequest);
194
+ if (inlineHtml) {
195
+ uiResourceBlock = createUIResource({
196
+ uri: `ui://mapbox/directions/${randomUUID()}`,
197
+ content: { type: 'rawHtml', htmlString: inlineHtml },
198
+ encoding: 'text',
199
+ uiMetadata: {
200
+ 'preferred-frame-size': ['100%', '500px']
201
+ }
202
+ });
203
+ }
204
+ }
242
205
  // Check response size and conditionally create temporary resource
243
206
  const RESPONSE_SIZE_THRESHOLD = 50 * 1024; // 50KB
244
207
  const responseText = JSON.stringify(validatedData, null, 2);
@@ -287,8 +250,13 @@ ${responseSize > RESPONSE_SIZE_THRESHOLD ? `\n⚠️ Full response (${Math.round
287
250
  legs: undefined
288
251
  }))
289
252
  };
253
+ const content = [
254
+ { type: 'text', text: summaryText }
255
+ ];
256
+ if (uiResourceBlock)
257
+ content.push(uiResourceBlock);
290
258
  return {
291
- content: [{ type: 'text', text: summaryText }],
259
+ content,
292
260
  structuredContent: summaryStructuredContent,
293
261
  isError: false
294
262
  };
@@ -297,22 +265,8 @@ ${responseSize > RESPONSE_SIZE_THRESHOLD ? `\n⚠️ Full response (${Math.round
297
265
  const content = [
298
266
  { type: 'text', text: responseText }
299
267
  ];
300
- // Legacy MCP-UI: inline a rawHtml UIResource so non-MCP-Apps clients
301
- // also get a live GL JS map. Only works when the response actually
302
- // carries a renderable GeoJSON geometry — i.e. geometries=geojson.
303
- if (isMcpUiEnabled()) {
304
- const inlineHtml = await tryRenderInlineUiHtml(validatedData, accessToken, this.httpRequest);
305
- if (inlineHtml) {
306
- content.push(createUIResource({
307
- uri: `ui://mapbox/directions/${randomUUID()}`,
308
- content: { type: 'rawHtml', htmlString: inlineHtml },
309
- encoding: 'text',
310
- uiMetadata: {
311
- 'preferred-frame-size': ['100%', '500px']
312
- }
313
- }));
314
- }
315
- }
268
+ if (uiResourceBlock)
269
+ content.push(uiResourceBlock);
316
270
  return {
317
271
  content,
318
272
  structuredContent: validatedData,
@@ -321,25 +275,14 @@ ${responseSize > RESPONSE_SIZE_THRESHOLD ? `\n⚠️ Full response (${Math.round
321
275
  }
322
276
  }
323
277
  /**
324
- * Try to render the same DirectionsAppHtml as the MCP Apps resource, but
325
- * with the route geometry baked in so MCP-UI clients (which don't fetch
326
- * external resources) can render inline. Returns undefined when the
327
- * response has no GeoJSON geometry to render or no public token can be
328
- * resolved — the caller falls back to text-only output.
278
+ * Render the same DirectionsAppHtml as the MCP Apps resource, but with the
279
+ * call's input parameters baked in so the iframe can self-fetch the route
280
+ * from the Directions API — MCP-UI clients don't fetch external resources,
281
+ * so this is what makes the map work for them too. Attached unconditionally;
282
+ * the only failure mode is no public token being resolvable, in which case
283
+ * the caller falls back to text-only output.
329
284
  */
330
- async function tryRenderInlineUiHtml(data, accessToken, httpRequest) {
331
- const route = data.routes?.[0];
332
- const geometry = route?.geometry;
333
- // Accept either a GeoJSON LineString object or a polyline string — the
334
- // iframe normalizes both shapes before rendering.
335
- const hasGeojson = geometry &&
336
- typeof geometry === 'object' &&
337
- geometry.type === 'LineString' &&
338
- Array.isArray(geometry.coordinates);
339
- const hasPolyline = typeof geometry === 'string' && geometry.length > 0;
340
- if (!hasGeojson && !hasPolyline) {
341
- return undefined;
342
- }
285
+ async function tryRenderInlineUiHtml(input, accessToken, httpRequest) {
343
286
  const publicToken = await resolveMapboxPublicToken({
344
287
  accessToken,
345
288
  apiEndpoint: MapboxApiBasedTool.mapboxApiEndpoint,
@@ -347,21 +290,21 @@ async function tryRenderInlineUiHtml(data, accessToken, httpRequest) {
347
290
  });
348
291
  if (!publicToken)
349
292
  return undefined;
350
- const summaryParts = [];
351
- if (typeof route?.distance === 'number') {
352
- summaryParts.push(`${(route.distance / 1609.34).toFixed(1)} mi`);
353
- }
354
- if (typeof route?.duration === 'number') {
355
- summaryParts.push(`${Math.round(route.duration / 60)} min`);
356
- }
357
- const summary = summaryParts.length
358
- ? `Route: ${summaryParts.join(', ')}`
359
- : 'Route';
360
293
  return renderDirectionsAppHtml({
361
294
  publicToken,
295
+ apiEndpoint: MapboxApiBasedTool.mapboxApiEndpoint,
362
296
  initialData: {
363
- geometry: geometry,
364
- summary
297
+ params: {
298
+ coordinates: input.coordinates,
299
+ routing_profile: input.routing_profile,
300
+ alternatives: input.alternatives,
301
+ exclude: input.exclude,
302
+ depart_at: input.depart_at,
303
+ arrive_by: input.arrive_by,
304
+ max_height: input.max_height,
305
+ max_width: input.max_width,
306
+ max_weight: input.max_weight
307
+ }
365
308
  }
366
309
  });
367
310
  }
@@ -1 +1 @@
1
- {"version":3,"file":"DirectionsTool.js","sourceRoot":"","sources":["../../../../src/tools/directions-tool/DirectionsTool.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"DirectionsTool.js","sourceRoot":"","sources":["../../../../src/tools/directions-tool/DirectionsTool.ts"],"names":[],"mappings":"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"}