@mapbox/mcp-server 0.13.0 → 0.15.0

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 (257) hide show
  1. package/README.md +111 -14
  2. package/dist/commonjs/cli.d.ts.map +1 -1
  3. package/dist/commonjs/cli.js +5 -2
  4. package/dist/commonjs/cli.js.map +1 -1
  5. package/dist/commonjs/index.js +38 -1
  6. package/dist/commonjs/index.js.map +1 -1
  7. package/dist/commonjs/resources/BaseResource.d.ts +18 -0
  8. package/dist/commonjs/resources/BaseResource.d.ts.map +1 -1
  9. package/dist/commonjs/resources/BaseResource.js +26 -4
  10. package/dist/commonjs/resources/BaseResource.js.map +1 -1
  11. package/dist/commonjs/resources/resourceRegistry.d.ts +1 -2
  12. package/dist/commonjs/resources/resourceRegistry.d.ts.map +1 -1
  13. package/dist/commonjs/resources/resourceRegistry.js +0 -2
  14. package/dist/commonjs/resources/resourceRegistry.js.map +1 -1
  15. package/dist/commonjs/resources/temporary/TemporaryDataResource.d.ts.map +1 -1
  16. package/dist/commonjs/resources/temporary/TemporaryDataResource.js +20 -10
  17. package/dist/commonjs/resources/temporary/TemporaryDataResource.js.map +1 -1
  18. package/dist/commonjs/resources/ui-apps/MapAppUIResource.d.ts.map +1 -1
  19. package/dist/commonjs/resources/ui-apps/MapAppUIResource.js +2 -8
  20. package/dist/commonjs/resources/ui-apps/MapAppUIResource.js.map +1 -1
  21. package/dist/commonjs/resources/ui-apps/mapAppCsp.d.ts +22 -0
  22. package/dist/commonjs/resources/ui-apps/mapAppCsp.d.ts.map +1 -0
  23. package/dist/commonjs/resources/ui-apps/mapAppCsp.js +39 -0
  24. package/dist/commonjs/resources/ui-apps/mapAppCsp.js.map +1 -0
  25. package/dist/commonjs/resources/ui-apps/mapAppHtml.d.ts +3 -3
  26. package/dist/commonjs/resources/ui-apps/mapAppHtml.d.ts.map +1 -1
  27. package/dist/commonjs/resources/ui-apps/mapAppHtml.js +89 -13
  28. package/dist/commonjs/resources/ui-apps/mapAppHtml.js.map +1 -1
  29. package/dist/commonjs/tools/BaseTool.d.ts +19 -0
  30. package/dist/commonjs/tools/BaseTool.d.ts.map +1 -1
  31. package/dist/commonjs/tools/BaseTool.js +25 -3
  32. package/dist/commonjs/tools/BaseTool.js.map +1 -1
  33. package/dist/commonjs/tools/directions-tool/DirectionsTool.d.ts +16 -0
  34. package/dist/commonjs/tools/directions-tool/DirectionsTool.d.ts.map +1 -1
  35. package/dist/commonjs/tools/directions-tool/DirectionsTool.js +107 -2
  36. package/dist/commonjs/tools/directions-tool/DirectionsTool.js.map +1 -1
  37. package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.d.ts.map +1 -1
  38. package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.js +7 -4
  39. package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.js.map +1 -1
  40. package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.output.schema.d.ts +4 -0
  41. package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.output.schema.d.ts.map +1 -1
  42. package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.output.schema.js +9 -1
  43. package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.output.schema.js.map +1 -1
  44. package/dist/commonjs/tools/isochrone-tool/IsochroneTool.js +1 -1
  45. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.d.ts +11 -1
  46. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.d.ts.map +1 -1
  47. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.input.schema.js +3 -3
  48. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.input.schema.js.map +1 -1
  49. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.js +134 -139
  50. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.js.map +1 -1
  51. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.output.schema.d.ts +71 -10
  52. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.output.schema.d.ts.map +1 -1
  53. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.output.schema.js +86 -10
  54. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.output.schema.js.map +1 -1
  55. package/dist/commonjs/tools/render-map-tool/RenderMapTool.d.ts +2 -4
  56. package/dist/commonjs/tools/render-map-tool/RenderMapTool.d.ts.map +1 -1
  57. package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.d.ts +50 -0
  58. package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.d.ts.map +1 -1
  59. package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.js +51 -2
  60. package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.js.map +1 -1
  61. package/dist/commonjs/tools/render-map-tool/RenderMapTool.js +50 -18
  62. package/dist/commonjs/tools/render-map-tool/RenderMapTool.js.map +1 -1
  63. package/dist/commonjs/tools/render-map-tool/RenderMapTool.output.schema.d.ts +50 -0
  64. package/dist/commonjs/tools/render-map-tool/RenderMapTool.output.schema.d.ts.map +1 -1
  65. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.d.ts.map +1 -1
  66. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.d.ts.map +1 -1
  67. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js +2 -2
  68. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js.map +1 -1
  69. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.js +6 -3
  70. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.js.map +1 -1
  71. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -1
  72. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.input.schema.d.ts +3 -3
  73. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.input.schema.d.ts.map +1 -1
  74. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.input.schema.js +16 -2
  75. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.input.schema.js.map +1 -1
  76. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js +17 -6
  77. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -1
  78. package/dist/commonjs/utils/index.d.ts +2 -0
  79. package/dist/commonjs/utils/index.d.ts.map +1 -1
  80. package/dist/commonjs/utils/index.js +8 -1
  81. package/dist/commonjs/utils/index.js.map +1 -1
  82. package/dist/commonjs/utils/jsonSchema2020.d.ts +26 -0
  83. package/dist/commonjs/utils/jsonSchema2020.d.ts.map +1 -0
  84. package/dist/commonjs/utils/jsonSchema2020.js +143 -0
  85. package/dist/commonjs/utils/jsonSchema2020.js.map +1 -0
  86. package/dist/commonjs/utils/jwtUtils.d.ts +48 -0
  87. package/dist/commonjs/utils/jwtUtils.d.ts.map +1 -1
  88. package/dist/commonjs/utils/jwtUtils.js +63 -0
  89. package/dist/commonjs/utils/jwtUtils.js.map +1 -1
  90. package/dist/commonjs/utils/mapAppPayload.d.ts +109 -0
  91. package/dist/commonjs/utils/mapAppPayload.d.ts.map +1 -1
  92. package/dist/commonjs/utils/mapAppPayload.js +38 -2
  93. package/dist/commonjs/utils/mapAppPayload.js.map +1 -1
  94. package/dist/commonjs/utils/redactToken.d.ts +3 -0
  95. package/dist/commonjs/utils/redactToken.d.ts.map +1 -0
  96. package/dist/commonjs/utils/redactToken.js +55 -0
  97. package/dist/commonjs/utils/redactToken.js.map +1 -0
  98. package/dist/commonjs/utils/redactingSpanExporter.d.ts +24 -0
  99. package/dist/commonjs/utils/redactingSpanExporter.d.ts.map +1 -0
  100. package/dist/commonjs/utils/redactingSpanExporter.js +97 -0
  101. package/dist/commonjs/utils/redactingSpanExporter.js.map +1 -0
  102. package/dist/commonjs/utils/selfFetchRef.d.ts.map +1 -1
  103. package/dist/commonjs/utils/selfFetchRef.js +31 -0
  104. package/dist/commonjs/utils/selfFetchRef.js.map +1 -1
  105. package/dist/commonjs/utils/serverInstructions.d.ts +12 -0
  106. package/dist/commonjs/utils/serverInstructions.d.ts.map +1 -0
  107. package/dist/commonjs/utils/serverInstructions.js +28 -0
  108. package/dist/commonjs/utils/serverInstructions.js.map +1 -0
  109. package/dist/commonjs/utils/storeMapPayload.d.ts +11 -11
  110. package/dist/commonjs/utils/storeMapPayload.d.ts.map +1 -1
  111. package/dist/commonjs/utils/storeMapPayload.js +14 -13
  112. package/dist/commonjs/utils/storeMapPayload.js.map +1 -1
  113. package/dist/commonjs/utils/temporaryResourceManager.d.ts +10 -4
  114. package/dist/commonjs/utils/temporaryResourceManager.d.ts.map +1 -1
  115. package/dist/commonjs/utils/temporaryResourceManager.js.map +1 -1
  116. package/dist/commonjs/utils/tracing.d.ts +4 -0
  117. package/dist/commonjs/utils/tracing.d.ts.map +1 -1
  118. package/dist/commonjs/utils/tracing.js +24 -1
  119. package/dist/commonjs/utils/tracing.js.map +1 -1
  120. package/dist/commonjs/utils/urlSafety.d.ts +23 -7
  121. package/dist/commonjs/utils/urlSafety.d.ts.map +1 -1
  122. package/dist/commonjs/utils/urlSafety.js +84 -66
  123. package/dist/commonjs/utils/urlSafety.js.map +1 -1
  124. package/dist/commonjs/version.json +3 -3
  125. package/dist/esm/cli.d.ts.map +1 -1
  126. package/dist/esm/cli.js +5 -2
  127. package/dist/esm/cli.js.map +1 -1
  128. package/dist/esm/index.js +39 -2
  129. package/dist/esm/index.js.map +1 -1
  130. package/dist/esm/resources/BaseResource.d.ts +18 -0
  131. package/dist/esm/resources/BaseResource.d.ts.map +1 -1
  132. package/dist/esm/resources/BaseResource.js +26 -4
  133. package/dist/esm/resources/BaseResource.js.map +1 -1
  134. package/dist/esm/resources/resourceRegistry.d.ts +1 -2
  135. package/dist/esm/resources/resourceRegistry.d.ts.map +1 -1
  136. package/dist/esm/resources/resourceRegistry.js +0 -2
  137. package/dist/esm/resources/resourceRegistry.js.map +1 -1
  138. package/dist/esm/resources/temporary/TemporaryDataResource.d.ts.map +1 -1
  139. package/dist/esm/resources/temporary/TemporaryDataResource.js +21 -11
  140. package/dist/esm/resources/temporary/TemporaryDataResource.js.map +1 -1
  141. package/dist/esm/resources/ui-apps/MapAppUIResource.d.ts.map +1 -1
  142. package/dist/esm/resources/ui-apps/MapAppUIResource.js +2 -8
  143. package/dist/esm/resources/ui-apps/MapAppUIResource.js.map +1 -1
  144. package/dist/esm/resources/ui-apps/mapAppCsp.d.ts +22 -0
  145. package/dist/esm/resources/ui-apps/mapAppCsp.d.ts.map +1 -0
  146. package/dist/esm/resources/ui-apps/mapAppCsp.js +36 -0
  147. package/dist/esm/resources/ui-apps/mapAppCsp.js.map +1 -0
  148. package/dist/esm/resources/ui-apps/mapAppHtml.d.ts +3 -3
  149. package/dist/esm/resources/ui-apps/mapAppHtml.d.ts.map +1 -1
  150. package/dist/esm/resources/ui-apps/mapAppHtml.js +89 -13
  151. package/dist/esm/resources/ui-apps/mapAppHtml.js.map +1 -1
  152. package/dist/esm/tools/BaseTool.d.ts +19 -0
  153. package/dist/esm/tools/BaseTool.d.ts.map +1 -1
  154. package/dist/esm/tools/BaseTool.js +25 -3
  155. package/dist/esm/tools/BaseTool.js.map +1 -1
  156. package/dist/esm/tools/directions-tool/DirectionsTool.d.ts +16 -0
  157. package/dist/esm/tools/directions-tool/DirectionsTool.d.ts.map +1 -1
  158. package/dist/esm/tools/directions-tool/DirectionsTool.js +108 -3
  159. package/dist/esm/tools/directions-tool/DirectionsTool.js.map +1 -1
  160. package/dist/esm/tools/ground-location-tool/GroundLocationTool.d.ts.map +1 -1
  161. package/dist/esm/tools/ground-location-tool/GroundLocationTool.js +7 -4
  162. package/dist/esm/tools/ground-location-tool/GroundLocationTool.js.map +1 -1
  163. package/dist/esm/tools/ground-location-tool/GroundLocationTool.output.schema.d.ts +4 -0
  164. package/dist/esm/tools/ground-location-tool/GroundLocationTool.output.schema.d.ts.map +1 -1
  165. package/dist/esm/tools/ground-location-tool/GroundLocationTool.output.schema.js +9 -1
  166. package/dist/esm/tools/ground-location-tool/GroundLocationTool.output.schema.js.map +1 -1
  167. package/dist/esm/tools/isochrone-tool/IsochroneTool.js +2 -2
  168. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.d.ts +11 -1
  169. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.d.ts.map +1 -1
  170. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.input.schema.js +3 -3
  171. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.input.schema.js.map +1 -1
  172. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.js +135 -140
  173. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.js.map +1 -1
  174. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.output.schema.d.ts +71 -10
  175. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.output.schema.d.ts.map +1 -1
  176. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.output.schema.js +85 -9
  177. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.output.schema.js.map +1 -1
  178. package/dist/esm/tools/render-map-tool/RenderMapTool.d.ts +2 -4
  179. package/dist/esm/tools/render-map-tool/RenderMapTool.d.ts.map +1 -1
  180. package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.d.ts +50 -0
  181. package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.d.ts.map +1 -1
  182. package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.js +51 -2
  183. package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.js.map +1 -1
  184. package/dist/esm/tools/render-map-tool/RenderMapTool.js +51 -19
  185. package/dist/esm/tools/render-map-tool/RenderMapTool.js.map +1 -1
  186. package/dist/esm/tools/render-map-tool/RenderMapTool.output.schema.d.ts +50 -0
  187. package/dist/esm/tools/render-map-tool/RenderMapTool.output.schema.d.ts.map +1 -1
  188. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.d.ts.map +1 -1
  189. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.d.ts.map +1 -1
  190. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js +2 -2
  191. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js.map +1 -1
  192. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.js +6 -3
  193. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.js.map +1 -1
  194. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -1
  195. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.input.schema.d.ts +3 -3
  196. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.input.schema.d.ts.map +1 -1
  197. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.input.schema.js +17 -3
  198. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.input.schema.js.map +1 -1
  199. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js +18 -7
  200. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -1
  201. package/dist/esm/utils/index.d.ts +2 -0
  202. package/dist/esm/utils/index.d.ts.map +1 -1
  203. package/dist/esm/utils/index.js +5 -0
  204. package/dist/esm/utils/index.js.map +1 -1
  205. package/dist/esm/utils/jsonSchema2020.d.ts +26 -0
  206. package/dist/esm/utils/jsonSchema2020.d.ts.map +1 -0
  207. package/dist/esm/utils/jsonSchema2020.js +138 -0
  208. package/dist/esm/utils/jsonSchema2020.js.map +1 -0
  209. package/dist/esm/utils/jwtUtils.d.ts +48 -0
  210. package/dist/esm/utils/jwtUtils.d.ts.map +1 -1
  211. package/dist/esm/utils/jwtUtils.js +61 -0
  212. package/dist/esm/utils/jwtUtils.js.map +1 -1
  213. package/dist/esm/utils/mapAppPayload.d.ts +109 -0
  214. package/dist/esm/utils/mapAppPayload.d.ts.map +1 -1
  215. package/dist/esm/utils/mapAppPayload.js +38 -2
  216. package/dist/esm/utils/mapAppPayload.js.map +1 -1
  217. package/dist/esm/utils/redactToken.d.ts +3 -0
  218. package/dist/esm/utils/redactToken.d.ts.map +1 -0
  219. package/dist/esm/utils/redactToken.js +52 -0
  220. package/dist/esm/utils/redactToken.js.map +1 -0
  221. package/dist/esm/utils/redactingSpanExporter.d.ts +24 -0
  222. package/dist/esm/utils/redactingSpanExporter.d.ts.map +1 -0
  223. package/dist/esm/utils/redactingSpanExporter.js +93 -0
  224. package/dist/esm/utils/redactingSpanExporter.js.map +1 -0
  225. package/dist/esm/utils/selfFetchRef.d.ts.map +1 -1
  226. package/dist/esm/utils/selfFetchRef.js +31 -0
  227. package/dist/esm/utils/selfFetchRef.js.map +1 -1
  228. package/dist/esm/utils/serverInstructions.d.ts +12 -0
  229. package/dist/esm/utils/serverInstructions.d.ts.map +1 -0
  230. package/dist/esm/utils/serverInstructions.js +25 -0
  231. package/dist/esm/utils/serverInstructions.js.map +1 -0
  232. package/dist/esm/utils/storeMapPayload.d.ts +11 -11
  233. package/dist/esm/utils/storeMapPayload.d.ts.map +1 -1
  234. package/dist/esm/utils/storeMapPayload.js +14 -13
  235. package/dist/esm/utils/storeMapPayload.js.map +1 -1
  236. package/dist/esm/utils/temporaryResourceManager.d.ts +10 -4
  237. package/dist/esm/utils/temporaryResourceManager.d.ts.map +1 -1
  238. package/dist/esm/utils/temporaryResourceManager.js.map +1 -1
  239. package/dist/esm/utils/tracing.d.ts +4 -0
  240. package/dist/esm/utils/tracing.d.ts.map +1 -1
  241. package/dist/esm/utils/tracing.js +23 -1
  242. package/dist/esm/utils/tracing.js.map +1 -1
  243. package/dist/esm/utils/urlSafety.d.ts +23 -7
  244. package/dist/esm/utils/urlSafety.d.ts.map +1 -1
  245. package/dist/esm/utils/urlSafety.js +80 -66
  246. package/dist/esm/utils/urlSafety.js.map +1 -1
  247. package/dist/esm/version.json +3 -3
  248. package/package.json +3 -2
  249. package/patches/{@modelcontextprotocol+sdk+1.29.0.patch → @modelcontextprotocol+sdk+1.30.0.patch} +6 -2
  250. package/dist/commonjs/resources/ui-apps/StaticMapUIResource.d.ts +0 -15
  251. package/dist/commonjs/resources/ui-apps/StaticMapUIResource.d.ts.map +0 -1
  252. package/dist/commonjs/resources/ui-apps/StaticMapUIResource.js +0 -262
  253. package/dist/commonjs/resources/ui-apps/StaticMapUIResource.js.map +0 -1
  254. package/dist/esm/resources/ui-apps/StaticMapUIResource.d.ts +0 -15
  255. package/dist/esm/resources/ui-apps/StaticMapUIResource.d.ts.map +0 -1
  256. package/dist/esm/resources/ui-apps/StaticMapUIResource.js +0 -258
  257. package/dist/esm/resources/ui-apps/StaticMapUIResource.js.map +0 -1
@@ -20,11 +20,11 @@ export type MapAppRef = z.infer<typeof MapAppRefSchema>;
20
20
  * payloads (e.g. polygon-op chains). Passing a ref instead keeps the LLM's
21
21
  * emission down to a few tokens.
22
22
  *
23
- * `owner` must be the same account identifier (`getUserNameFromToken`) the
24
- * caller resolves for its own token — `TemporaryDataResource.read()` fails
25
- * closed on an unowned resource, so omitting this makes the ref permanently
26
- * unreadable via the real `resources/read` path the render iframe uses (it
27
- * always 404s), even though callers that read the manager directly (like
23
+ * `owner` must be the same ownership key (`getOwnerKeyFromToken`) the caller
24
+ * resolves for its own token — `TemporaryDataResource.read()` fails closed on
25
+ * an unowned resource, so omitting this makes the ref permanently unreadable
26
+ * via the real `resources/read` path the render iframe uses (it always 404s),
27
+ * even though callers that read the manager directly (like
28
28
  * `resolveMapPayloadRef`) wouldn't notice anything wrong.
29
29
  */
30
30
  export declare function storeMapPayload(payload: MapAppPayload, owner?: string): string;
@@ -54,12 +54,12 @@ export declare function buildMapboxRenderField(ref: string, payload: MapAppPaylo
54
54
  export declare function renderHint(ref: string): string;
55
55
  /**
56
56
  * Resolve a `mapbox://temp/map-payload-...` ref back to its `MapAppPayload`.
57
- * Returns null if the ref is unknown, expired, or owned by a different
58
- * account than `owner` — this is the same account-scoping enforced by
59
- * `TemporaryDataResource.read()` (a caller passing another account's ref
60
- * would otherwise have it silently merged and re-served under their own
61
- * ref, bypassing the read-side check entirely since this goes straight to
62
- * the manager rather than through `resources/read`).
57
+ * Returns null if the ref is unknown, expired, or owned by a key other than
58
+ * `owner` — this is the same token-scoping enforced by
59
+ * `TemporaryDataResource.read()` (a caller passing someone else's ref would
60
+ * otherwise have it silently merged and re-served under their own ref,
61
+ * bypassing the read-side check entirely since this goes straight to the
62
+ * manager rather than through `resources/read`).
63
63
  */
64
64
  export declare function resolveMapPayloadRef(ref: string, owner: string | undefined): MapAppPayload | null;
65
65
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"storeMapPayload.d.ts","sourceRoot":"","sources":["../../../src/utils/storeMapPayload.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD,eAAO,MAAM,wBAAwB,QAAY,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;iBAUzB,CAAC;AAEJ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAIxD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAcR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,aAAa,GACrB;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAM1C;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK9C;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,aAAa,GAAG,IAAI,CAMtB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,CA8BzE"}
1
+ {"version":3,"file":"storeMapPayload.d.ts","sourceRoot":"","sources":["../../../src/utils/storeMapPayload.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAMxD,eAAO,MAAM,wBAAwB,QAAY,CAAC;AAElD;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;iBAUzB,CAAC;AAEJ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAIxD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,aAAa,EACtB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAcR;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,aAAa,GACrB;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAM1C;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAK9C;AAED;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,MAAM,GAAG,SAAS,GACxB,aAAa,GAAG,IAAI,CAMtB;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,CA8BzE"}
@@ -3,6 +3,7 @@
3
3
  import { randomUUID } from 'node:crypto';
4
4
  import { z } from 'zod';
5
5
  import { temporaryResourceManager } from './temporaryResourceManager.js';
6
+ import { ownerKeyMatches } from './jwtUtils.js';
6
7
  // Above this size, only the ref is included inline (the ref+resources/read
7
8
  // path still works for hosts that support it) - matches the 50KB threshold
8
9
  // already used elsewhere (e.g. the directions/isochrone large-response
@@ -31,11 +32,11 @@ const TEMP_URI_PREFIX = 'mapbox://temp/map-payload-';
31
32
  * payloads (e.g. polygon-op chains). Passing a ref instead keeps the LLM's
32
33
  * emission down to a few tokens.
33
34
  *
34
- * `owner` must be the same account identifier (`getUserNameFromToken`) the
35
- * caller resolves for its own token — `TemporaryDataResource.read()` fails
36
- * closed on an unowned resource, so omitting this makes the ref permanently
37
- * unreadable via the real `resources/read` path the render iframe uses (it
38
- * always 404s), even though callers that read the manager directly (like
35
+ * `owner` must be the same ownership key (`getOwnerKeyFromToken`) the caller
36
+ * resolves for its own token — `TemporaryDataResource.read()` fails closed on
37
+ * an unowned resource, so omitting this makes the ref permanently unreadable
38
+ * via the real `resources/read` path the render iframe uses (it always 404s),
39
+ * even though callers that read the manager directly (like
39
40
  * `resolveMapPayloadRef`) wouldn't notice anything wrong.
40
41
  */
41
42
  export function storeMapPayload(payload, owner) {
@@ -81,17 +82,17 @@ export function buildMapboxRenderField(ref, payload) {
81
82
  * URI — including the literal string in the visible text fixes that.)
82
83
  */
83
84
  export function renderHint(ref) {
84
- return (`\n\n📍 To show this on a live Mapbox GL JS map, call:\n` +
85
+ return (`\n\n📍 To show this on a map, call render_map_tool (not static_map_image_tool) with this ref unchanged:\n` +
85
86
  ` render_map_tool({ "payload_refs": ["${ref}"] })`);
86
87
  }
87
88
  /**
88
89
  * Resolve a `mapbox://temp/map-payload-...` ref back to its `MapAppPayload`.
89
- * Returns null if the ref is unknown, expired, or owned by a different
90
- * account than `owner` — this is the same account-scoping enforced by
91
- * `TemporaryDataResource.read()` (a caller passing another account's ref
92
- * would otherwise have it silently merged and re-served under their own
93
- * ref, bypassing the read-side check entirely since this goes straight to
94
- * the manager rather than through `resources/read`).
90
+ * Returns null if the ref is unknown, expired, or owned by a key other than
91
+ * `owner` — this is the same token-scoping enforced by
92
+ * `TemporaryDataResource.read()` (a caller passing someone else's ref would
93
+ * otherwise have it silently merged and re-served under their own ref,
94
+ * bypassing the read-side check entirely since this goes straight to the
95
+ * manager rather than through `resources/read`).
95
96
  */
96
97
  export function resolveMapPayloadRef(ref, owner) {
97
98
  if (!ref.startsWith(TEMP_URI_PREFIX))
@@ -99,7 +100,7 @@ export function resolveMapPayloadRef(ref, owner) {
99
100
  const entry = temporaryResourceManager.get(ref);
100
101
  if (!entry || !entry.data)
101
102
  return null;
102
- if (!entry.owner || !owner || entry.owner !== owner)
103
+ if (!ownerKeyMatches(entry.owner, owner))
103
104
  return null;
104
105
  return entry.data;
105
106
  }
@@ -1 +1 @@
1
- {"version":3,"file":"storeMapPayload.js","sourceRoot":"","sources":["../../../src/utils/storeMapPayload.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"storeMapPayload.js","sourceRoot":"","sources":["../../../src/utils/storeMapPayload.ts"],"names":[],"mappings":"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"}
@@ -13,10 +13,16 @@ export interface TemporaryResource {
13
13
  created: number;
14
14
  ttl: number;
15
15
  /**
16
- * Account (Mapbox username) that created this resource. Reads are restricted
17
- * to the same account so one account cannot read another account's temporary
18
- * data. Undefined means no owner could be determined, in which case reads
19
- * fail closed.
16
+ * Opaque ownership key for the token that created this resource — a SHA-256
17
+ * fingerprint of that token, produced by `getOwnerKeyFromToken`. Reads are
18
+ * restricted to a caller presenting the same token so one caller cannot read
19
+ * another's temporary data. Undefined means no owner could be determined, in
20
+ * which case reads fail closed.
21
+ *
22
+ * Deliberately NOT the Mapbox username: that comes from an unsigned, locally
23
+ * unverifiable `u` claim, so a username-scoped check could be defeated by
24
+ * fabricating a token asserting the victim's name. Never store or compare a
25
+ * username here.
20
26
  */
21
27
  owner?: string;
22
28
  metadata?: {
@@ -1 +1 @@
1
- {"version":3,"file":"temporaryResourceManager.d.ts","sourceRoot":"","sources":["../../../src/utils/temporaryResourceManager.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,qBAAa,wBAAwB;IAMjC,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IANlB,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,UAAU,CAAK;gBAGb,UAAU,GAAE,MAAuB,EAAE,aAAa;IAClD,QAAQ,GAAE,MAAyB;IAM7C;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACzC,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,iBAAiB;IAiCrB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAiB/C;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQ5B;;OAEG;IACH,OAAO,IAAI,MAAM;IAejB;;OAEG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,OAAO,IAAI,IAAI;CAOhB;AAGD,eAAO,MAAM,wBAAwB,0BAAiC,CAAC"}
1
+ {"version":3,"file":"temporaryResourceManager.d.ts","sourceRoot":"","sources":["../../../src/utils/temporaryResourceManager.ts"],"names":[],"mappings":"AAGA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ;;;;;;;;;;;OAWG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH;AAED,qBAAa,wBAAwB;IAMjC,OAAO,CAAC,UAAU;IAClB,OAAO,CAAC,QAAQ;IANlB,OAAO,CAAC,SAAS,CAAwC;IACzD,OAAO,CAAC,eAAe,CAAC,CAAiB;IACzC,OAAO,CAAC,UAAU,CAAK;gBAGb,UAAU,GAAE,MAAuB,EAAE,aAAa;IAClD,QAAQ,GAAE,MAAyB;IAM7C;;;OAGG;IACH,MAAM,CAAC,MAAM,EAAE;QACb,EAAE,EAAE,MAAM,CAAC;QACX,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,EAAE,OAAO,CAAC;QACd,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,iBAAiB,CAAC,UAAU,CAAC,CAAC;QACzC,GAAG,CAAC,EAAE,MAAM,CAAC;QACb,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,GAAG,iBAAiB;IAiCrB;;OAEG;IACH,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAiB/C;;OAEG;IACH,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAQ5B;;OAEG;IACH,OAAO,IAAI,MAAM;IAejB;;OAEG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,gBAAgB,IAAI,MAAM;IAI1B;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,OAAO,IAAI,IAAI;CAOhB;AAGD,eAAO,MAAM,wBAAwB,0BAAiC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"temporaryResourceManager.js","sourceRoot":"","sources":["../../../src/utils/temporaryResourceManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"temporaryResourceManager.js","sourceRoot":"","sources":["../../../src/utils/temporaryResourceManager.ts"],"names":[],"mappings":"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"}
@@ -59,6 +59,10 @@ export declare function isTracingInitialized(): boolean;
59
59
  * Get the default tracer for the MCP server
60
60
  */
61
61
  export declare function getTracer(): import("@opentelemetry/api").Tracer;
62
+ export declare function setClientInfo(info: {
63
+ name?: string;
64
+ version?: string;
65
+ } | undefined): void;
62
66
  /**
63
67
  * Create a span for tool execution with comprehensive attributes
64
68
  */
@@ -1 +1 @@
1
- {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../../src/utils/tracing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tracing.d.ts","sourceRoot":"","sources":["../../../src/utils/tracing.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,7 @@ import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION } from '@opentelemetry/semantic
7
7
  import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
8
8
  import { trace, SpanStatusCode, SpanKind, diag, DiagLogLevel } from '@opentelemetry/api';
9
9
  import { getVersionInfo } from './versionUtils.js';
10
+ import { RedactingSpanExporter } from './redactingSpanExporter.js';
10
11
  import { ATTR_SERVICE_INSTANCE_ID } from '@opentelemetry/semantic-conventions/incubating';
11
12
  // Suppress OpenTelemetry diagnostic logging IMMEDIATELY to avoid polluting stdio
12
13
  // This must happen at module load time, before any OTEL operations
@@ -128,7 +129,9 @@ export async function initializeTracing() {
128
129
  // Create SDK instance
129
130
  sdk = new NodeSDK({
130
131
  resource,
131
- traceExporter: exporters[0],
132
+ // Wrap the exporter so access tokens recorded in HTTP client span
133
+ // attributes (url.full, url.query) never reach the trace backend
134
+ traceExporter: new RedactingSpanExporter(exporters[0]),
132
135
  instrumentations: [
133
136
  getNodeAutoInstrumentations({
134
137
  // Disable instrumentations that might be too noisy
@@ -180,6 +183,19 @@ export function isTracingInitialized() {
180
183
  export function getTracer() {
181
184
  return trace.getTracer('mapbox-mcp-server');
182
185
  }
186
+ /**
187
+ * The connected client's `clientInfo` (name/version), as reported in its
188
+ * `initialize` request. There is exactly one client per stdio server
189
+ * process, so this is safe as module-level state; set once via
190
+ * `setClientInfo` after the initialize handshake completes (see
191
+ * `server.server.oninitialized` in index.ts) and read by every tool span
192
+ * created afterward, so traces can be filtered/grouped by which MCP client
193
+ * (Claude Desktop, Cursor, VS Code, etc.) made the call.
194
+ */
195
+ let currentClientInfo;
196
+ export function setClientInfo(info) {
197
+ currentClientInfo = info;
198
+ }
183
199
  /**
184
200
  * Create a span for tool execution with comprehensive attributes
185
201
  */
@@ -191,6 +207,12 @@ export function createToolSpan(toolName, inputSize, extra) {
191
207
  'tool.name': toolName,
192
208
  'tool.input.size': inputSize,
193
209
  'operation.type': 'tool_execution',
210
+ ...(currentClientInfo?.name && {
211
+ 'mcp.client.name': currentClientInfo.name
212
+ }),
213
+ ...(currentClientInfo?.version && {
214
+ 'mcp.client.version': currentClientInfo.version
215
+ }),
194
216
  ...(extra?.sessionId && { 'session.id': extra.sessionId }),
195
217
  ...(extra?.userId && { 'user.id': extra.userId }),
196
218
  ...(extra?.accountId && { 'account.id': extra.accountId }),
@@ -1 +1 @@
1
- {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/utils/tracing.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,kCAAkC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAClD,OAAO,EAAE,2BAA2B,EAAE,MAAM,2CAA2C,CAAC;AACxF,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACrB,MAAM,qCAAqC,CAAC;AAC7C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EACL,KAAK,EACL,cAAc,EACd,QAAQ,EAER,IAAI,EACJ,YAAY,EACb,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gDAAgD,CAAC;AAG1F,iFAAiF;AACjF,mEAAmE;AACnE,iEAAiE;AACjE,MAAM,wBAAwB,GAAG,GAAG,EAAE;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc;QACzC,CAAC,CAAC,YAAY,CACV,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,WAAW,EAA+B,CACtE;QACH,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC;IAEtB,IAAI,CAAC,SAAS,CACZ;QACE,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;QACjB,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;QACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;QACd,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;QACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;KAChB,EACD,QAAQ,CACT,CAAC;AACJ,CAAC,CAAC;AAEF,4CAA4C;AAC5C,wBAAwB,EAAE,CAAC;AAE3B,sBAAsB;AACtB,IAAI,GAAG,GAAmB,IAAI,CAAC;AAC/B,IAAI,gBAAgB,GAAG,KAAK,CAAC;AAmC7B;;GAEG;AACH,MAAM,UAAU,+BAA+B,CAC7C,QAAgB,EAChB,SAAiB,EACjB,KAA+B;IAE/B,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE;QAC/C,SAAS,EAAE,KAAK,EAAE,SAA+B;QACjD,MAAM,EAAE,KAAK,EAAE,MAA4B;QAC3C,SAAS,EAAE,KAAK,EAAE,SAA+B;QACjD,aAAa,EAAE,KAAK,EAAE,aAAmC;QACzD,QAAQ,EAAE,KAAK,EAAE,QAA8B;KAChD,CAAC,CAAC;IAEH,OAAO;QACL,IAAI;QACJ,cAAc,EAAE;YACd,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,KAAK,EAAE,SAA+B;YACjD,MAAM,EAAE,KAAK,EAAE,MAA4B;YAC3C,SAAS,EAAE,KAAK,EAAE,SAA+B;YACjD,aAAa,EAAE,KAAK,EAAE,aAAmC;YACzD,QAAQ,EAAE,KAAK,EAAE,QAA8B;SAChD;QACD,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,0BAA0B,CACxC,QAAgB,EAChB,SAAiB,EACjB,WAAwB,EACxB,KAA+B;IAE/B,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE;QAC/C,SAAS,EAAE,KAAK,EAAE,SAA+B;QACjD,MAAM,EAAE,KAAK,EAAE,MAA4B;QAC3C,SAAS,EAAE,KAAK,EAAE,SAA+B;QACjD,aAAa,EAAE,KAAK,EAAE,aAAmC;QACzD,QAAQ,EAAE,KAAK,EAAE,QAA8B;KAChD,CAAC,CAAC;IAEH,OAAO;QACL,IAAI;QACJ,cAAc,EAAE;YACd,UAAU,EAAE,IAAI;YAChB,SAAS,EAAE,KAAK,EAAE,SAA+B;YACjD,MAAM,EAAE,KAAK,EAAE,MAA4B;YAC3C,SAAS,EAAE,KAAK,EAAE,SAA+B;YACjD,aAAa,EAAE,KAAK,EAAE,aAAmC;YACzD,QAAQ,EAAE,KAAK,EAAE,QAA8B;SAChD;QACD,WAAW;QACX,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB;IACrC,+EAA+E;IAC/E,IAAI,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC;QACjE,OAAO;IACT,CAAC;IAED,yCAAyC;IACzC,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,KAAK,OAAO,EAAE,CAAC;QACjD,OAAO;IACT,CAAC;IAED,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IAErC,IAAI,CAAC;QACH,2CAA2C;QAC3C,MAAM,QAAQ,GAAG,sBAAsB,CAAC;YACtC,CAAC,iBAAiB,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,WAAW,CAAC,IAAI;YACtE,CAAC,oBAAoB,CAAC,EAAE,WAAW,CAAC,OAAO;YAC3C,CAAC,wBAAwB,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,SAAS;YAC7D,iBAAiB,EAAE,WAAW,CAAC,GAAG;YAClC,oBAAoB,EAAE,WAAW,CAAC,MAAM;YACxC,iBAAiB,EAAE,WAAW,CAAC,GAAG;SACnC,CAAC,CAAC;QAEH,sBAAsB;QACtB,MAAM,SAAS,GAAG,EAAE,CAAC;QAErB,8DAA8D;QAC9D,IAAI,OAAO,CAAC,GAAG,CAAC,6BAA6B,KAAK,MAAM,EAAE,CAAC;YACzD,MAAM,EAAE,mBAAmB,EAAE,GAC3B,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAC;YAChD,SAAS,CAAC,IAAI,CAAC,IAAI,mBAAmB,EAAE,CAAC,CAAC;QAC5C,CAAC;QAED,oCAAoC;QACpC,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC;QAC7D,IAAI,YAAY,EAAE,CAAC;YACjB,SAAS,CAAC,IAAI,CACZ,IAAI,iBAAiB,CAAC;gBACpB,GAAG,EAAE,GAAG,YAAY,YAAY;gBAChC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,0BAA0B;oBAC7C,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC;oBACpD,CAAC,CAAC,EAAE;aACP,CAAC,CACH,CAAC;QACJ,CAAC;QAED,0CAA0C;QAC1C,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;QACT,CAAC;QAED,sBAAsB;QACtB,GAAG,GAAG,IAAI,OAAO,CAAC;YAChB,QAAQ;YACR,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;YAC3B,gBAAgB,EAAE;gBAChB,2BAA2B,CAAC;oBAC1B,mDAAmD;oBACnD,mCAAmC,EAAE;wBACnC,OAAO,EAAE,KAAK;qBACf;oBACD,oCAAoC,EAAE;wBACpC,OAAO,EAAE,KAAK;qBACf;oBACD,2DAA2D;oBAC3D,qCAAqC,EAAE;wBACrC,OAAO,EAAE,IAAI;qBACd;oBACD,iDAAiD;oBACjD,uCAAuC,EAAE;wBACvC,OAAO,EAAE,IAAI;qBACd;iBACF,CAAC;aACH;SACF,CAAC,CAAC;QAEH,gBAAgB;QAChB,GAAG,CAAC,KAAK,EAAE,CAAC;QACZ,gBAAgB,GAAG,IAAI,CAAC;IAC1B,CAAC;IAAC,MAAM,CAAC;QACP,oEAAoE;QACpE,gBAAgB,GAAG,KAAK,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe;IACnC,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC;QACrB,GAAG,GAAG,IAAI,CAAC;QACX,gBAAgB,GAAG,KAAK,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,KAAK,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;AAC9C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAgB,EAChB,SAAiB,EACjB,KAMC;IAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,QAAQ,EAAE,EAAE;QAChD,IAAI,EAAE,QAAQ,CAAC,QAAQ;QACvB,UAAU,EAAE;YACV,WAAW,EAAE,QAAQ;YACrB,iBAAiB,EAAE,SAAS;YAC5B,gBAAgB,EAAE,gBAAgB;YAClC,GAAG,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;YAC1D,GAAG,CAAC,KAAK,EAAE,MAAM,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YACjD,GAAG,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;YAC1D,GAAG,CAAC,KAAK,EAAE,aAAa,IAAI,EAAE,iBAAiB,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC;YACvE,GAAG,CAAC,KAAK,EAAE,QAAQ,IAAI,EAAE,WAAW,EAAE,KAAK,CAAC,QAAQ,EAAE,CAAC;SACxD;KACF,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAc,EACd,GAAW,EACX,KAIC;IAED,MAAM,MAAM,GAAG,SAAS,EAAE,CAAC;IAE3B,MAAM,IAAI,GAAG,MAAM,CAAC,SAAS,CAAC,QAAQ,MAAM,CAAC,WAAW,EAAE,EAAE,EAAE;QAC5D,IAAI,EAAE,QAAQ,CAAC,MAAM;QACrB,UAAU,EAAE;YACV,aAAa,EAAE,MAAM;YACrB,UAAU,EAAE,GAAG;YACf,gBAAgB,EAAE,cAAc;YAChC,GAAG,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,iBAAiB,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;YAC/D,GAAG,CAAC,KAAK,EAAE,aAAa,IAAI;gBAC1B,6BAA6B,EAAE,KAAK,CAAC,aAAa;aACnD,CAAC;YACF,GAAG,CAAC,KAAK,EAAE,SAAS,IAAI,EAAE,YAAY,EAAE,KAAK,CAAC,SAAS,EAAE,CAAC;SAC3D;KACF,CAAC,CAAC;IAEH,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAC7B,IAAU,EACV,UAAsD;IAEtD,IAAI,UAAU,EAAE,CAAC;QACf,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAC3B,IAAU,EACV,KAAqB,EACrB,UAAsD;IAEtD,MAAM,YAAY,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC;IACvE,MAAM,SAAS,GACb,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;IAE/D,IAAI,CAAC,aAAa,CAAC;QACjB,YAAY,EAAE,SAAS;QACvB,eAAe,EAAE,YAAY;QAC7B,GAAG,CAAC,UAAU,IAAI,EAAE,CAAC;KACtB,CAAC,CAAC;IAEH,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,CAAC,SAAS,CAAC;QACb,IAAI,EAAE,cAAc,CAAC,KAAK;QAC1B,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC;IACH,IAAI,CAAC,GAAG,EAAE,CAAC;AACb,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAIlD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,+BAA+B;IAC3D,CAAC;IAED,yDAAyD;IACzD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,oBAAoB,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,CAAC;QACH,wEAAwE;QACxE,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC1D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAAC;IAC3D,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,aAAa,CAAC,GAAY;IACxC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,CAAC,CAAC;IACX,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../../src/utils/tracing.ts"],"names":[],"mappings":"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"}
@@ -6,14 +6,30 @@
6
6
  * Rejects:
7
7
  * - non-http(s) schemes (e.g. file:, gopher:, data:, javascript:)
8
8
  * - non-https URLs (markers should always be fetched over TLS)
9
- * - URLs whose host is an IP literal in a loopback, private, link-local,
10
- * unique-local, or otherwise non-routable range (CWE-918 SSRF)
11
- * - URLs whose host is a well-known local hostname
9
+ * - IPv4/IPv6 literals outside ipaddr.js's plain "unicast" range —
10
+ * deny-by-default, so loopback, private, link-local, multicast,
11
+ * broadcast, CGNAT, reserved, and every IPv4-in-IPv6 transition/
12
+ * translation mechanism (mapped, compatible, 6to4, NAT64, SIIT, Teredo,
13
+ * AMT, ORCHID, etc.) are all rejected without needing to be named
14
+ * individually (CWE-918 SSRF)
15
+ * - well-known local hostnames, reserved local/internal-use suffixes
16
+ * (.internal, .local, .arpa), and dotless single-label hostnames
12
17
  *
13
- * Note: we do not perform DNS resolution here — the upstream service will
14
- * still resolve the hostname when fetching. This validation is a defense in
15
- * depth against the most common SSRF vectors that prompt-injected agents
16
- * tend to produce (IP literals and "localhost").
18
+ * Out of scope, by design, for this pre-fetch string check — all three
19
+ * require validating the actual connection, not the URL string, so they
20
+ * belong where the fetch happens, not here:
21
+ * - DNS rebinding (an ordinary hostname resolving to an internal address
22
+ * at fetch time)
23
+ * - port restriction
24
+ * - network-specific hostname suffixes (.corp, .lan, .home, etc.) —
25
+ * unlike .internal/.local/.arpa, these aren't globally reserved, so
26
+ * they can't be enumerated in general
17
27
  */
18
28
  export declare function isSafeExternalUrl(rawUrl: string): boolean;
29
+ /**
30
+ * Same validation as isSafeExternalUrl, but returns the parsed URL on
31
+ * success (null otherwise) so callers that need the WHATWG-canonical form
32
+ * of the validated URL don't have to re-parse the raw string.
33
+ */
34
+ export declare function parseSafeExternalUrl(rawUrl: string): URL | null;
19
35
  //# sourceMappingURL=urlSafety.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"urlSafety.d.ts","sourceRoot":"","sources":["../../../src/utils/urlSafety.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CA0EzD"}
1
+ {"version":3,"file":"urlSafety.d.ts","sourceRoot":"","sources":["../../../src/utils/urlSafety.ts"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAEzD;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAoF/D"}
@@ -1,5 +1,6 @@
1
1
  // Copyright (c) Mapbox, Inc.
2
2
  // Licensed under the MIT License.
3
+ import ipaddr from 'ipaddr.js';
3
4
  /**
4
5
  * Validates that a URL is safe for server-side fetching by an upstream service
5
6
  * (in particular, the Mapbox Static Images API which fetches custom marker
@@ -8,30 +9,55 @@
8
9
  * Rejects:
9
10
  * - non-http(s) schemes (e.g. file:, gopher:, data:, javascript:)
10
11
  * - non-https URLs (markers should always be fetched over TLS)
11
- * - URLs whose host is an IP literal in a loopback, private, link-local,
12
- * unique-local, or otherwise non-routable range (CWE-918 SSRF)
13
- * - URLs whose host is a well-known local hostname
12
+ * - IPv4/IPv6 literals outside ipaddr.js's plain "unicast" range —
13
+ * deny-by-default, so loopback, private, link-local, multicast,
14
+ * broadcast, CGNAT, reserved, and every IPv4-in-IPv6 transition/
15
+ * translation mechanism (mapped, compatible, 6to4, NAT64, SIIT, Teredo,
16
+ * AMT, ORCHID, etc.) are all rejected without needing to be named
17
+ * individually (CWE-918 SSRF)
18
+ * - well-known local hostnames, reserved local/internal-use suffixes
19
+ * (.internal, .local, .arpa), and dotless single-label hostnames
14
20
  *
15
- * Note: we do not perform DNS resolution here — the upstream service will
16
- * still resolve the hostname when fetching. This validation is a defense in
17
- * depth against the most common SSRF vectors that prompt-injected agents
18
- * tend to produce (IP literals and "localhost").
21
+ * Out of scope, by design, for this pre-fetch string check — all three
22
+ * require validating the actual connection, not the URL string, so they
23
+ * belong where the fetch happens, not here:
24
+ * - DNS rebinding (an ordinary hostname resolving to an internal address
25
+ * at fetch time)
26
+ * - port restriction
27
+ * - network-specific hostname suffixes (.corp, .lan, .home, etc.) —
28
+ * unlike .internal/.local/.arpa, these aren't globally reserved, so
29
+ * they can't be enumerated in general
19
30
  */
20
31
  export function isSafeExternalUrl(rawUrl) {
32
+ return parseSafeExternalUrl(rawUrl) !== null;
33
+ }
34
+ /**
35
+ * Same validation as isSafeExternalUrl, but returns the parsed URL on
36
+ * success (null otherwise) so callers that need the WHATWG-canonical form
37
+ * of the validated URL don't have to re-parse the raw string.
38
+ */
39
+ export function parseSafeExternalUrl(rawUrl) {
21
40
  let parsed;
22
41
  try {
23
42
  parsed = new URL(rawUrl);
24
43
  }
25
44
  catch {
26
- return false;
45
+ return null;
27
46
  }
28
47
  if (parsed.protocol !== 'https:') {
29
- return false;
48
+ return null;
30
49
  }
31
- // Strip optional surrounding brackets from IPv6 literals
32
- const host = parsed.hostname.replace(/^\[|\]$/g, '').toLowerCase();
50
+ // Strip optional surrounding brackets from IPv6 literals and a trailing
51
+ // root-label dot (e.g. "localhost." is equivalent to "localhost"). The
52
+ // dotless-hostname check further below relies on this running first —
53
+ // without it, "intranet." would still contain a dot and slip past that
54
+ // check.
55
+ const host = parsed.hostname
56
+ .replace(/^\[|\]$/g, '')
57
+ .replace(/\.$/, '')
58
+ .toLowerCase();
33
59
  if (host.length === 0) {
34
- return false;
60
+ return null;
35
61
  }
36
62
  // Block well-known local hostnames
37
63
  const blockedHostnames = new Set([
@@ -40,62 +66,50 @@ export function isSafeExternalUrl(rawUrl) {
40
66
  'ip6-loopback',
41
67
  'broadcasthost'
42
68
  ]);
43
- if (blockedHostnames.has(host) || host.endsWith('.localhost')) {
44
- return false;
69
+ // Suffixes reserved for local/internal use that no public marker image
70
+ // host is ever legitimately under: cloud-internal DNS zones (.internal,
71
+ // used by GCP/AWS service discovery — covers metadata.google.internal,
72
+ // the GCP metadata endpoint's actual hostname), mDNS (.local), and
73
+ // reverse-DNS / home-network zones reserved by RFC 6761/8375 (.arpa
74
+ // covers .in-addr.arpa, .ip6.arpa, and .home.arpa as suffixes of it).
75
+ const blockedSuffixes = ['.localhost', '.internal', '.local', '.arpa'];
76
+ if (blockedHostnames.has(host) ||
77
+ blockedSuffixes.some((suffix) => host.endsWith(suffix))) {
78
+ return null;
45
79
  }
46
- // IPv4 literal check (dotted quad)
47
- const ipv4Match = /^(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})$/.exec(host);
48
- if (ipv4Match) {
49
- const octets = ipv4Match.slice(1, 5).map((o) => Number(o));
50
- if (octets.some((o) => o < 0 || o > 255)) {
51
- return false;
52
- }
53
- const [a, b] = octets;
54
- // 0.0.0.0/8, 10/8, 127/8
55
- // 0.0.0.0/8 — "this network" (unspecified + reserved); block conservatively
56
- if (a === 0 || a === 10 || a === 127)
57
- return false;
58
- // 169.254/16 (link-local, includes cloud metadata 169.254.169.254)
59
- if (a === 169 && b === 254)
60
- return false;
61
- // 172.16/12
62
- if (a === 172 && b >= 16 && b <= 31)
63
- return false;
64
- // 192.168/16
65
- if (a === 192 && b === 168)
66
- return false;
67
- // 100.64/10 (CGNAT)
68
- if (a === 100 && b >= 64 && b <= 127)
69
- return false;
70
- // 224/4 multicast and 240/4 reserved
71
- if (a >= 224)
72
- return false;
73
- return true;
80
+ // If the host isn't a parseable IP literal at all, it's an ordinary
81
+ // hostname — allowed here (subject to the checks above), except that a
82
+ // public marker image host always has at least one dot; a dotless,
83
+ // single-label hostname only resolves via the fetcher's own network
84
+ // search-domain suffixing (e.g. "intranet", "metadata"), which is never
85
+ // the case for a legitimate external image URL. DNS rebinding on a
86
+ // multi-label hostname is out of scope for this pre-fetch check, see the
87
+ // module doc comment.
88
+ if (!ipaddr.isValid(host)) {
89
+ return host.includes('.') ? parsed : null;
90
+ }
91
+ const addr = ipaddr.parse(host);
92
+ // Deny by default for both IPv4 and IPv6: only plain global unicast
93
+ // addresses are allowed. Every other named range (private, loopback,
94
+ // link-local, multicast, broadcast, CGNAT, reserved, unique-local, and
95
+ // every IPv4-in-IPv6 transition/translation mechanism) is rejected,
96
+ // regardless of what it does or doesn't embed.
97
+ if (addr.range() !== 'unicast') {
98
+ return null;
74
99
  }
75
- // IPv6 literal check (presence of ':' indicates IPv6 since IPv4 was handled)
76
- if (host.includes(':')) {
77
- // ::1 loopback, :: unspecified
78
- if (host === '::1' || host === '::')
79
- return false;
80
- // fc00::/7 unique local (fc.. or fd..)
81
- if (/^f[cd][0-9a-f]{2}:/.test(host))
82
- return false;
83
- // fe80::/10 link-local
84
- if (/^fe[89ab][0-9a-f]:/.test(host))
85
- return false;
86
- // ff00::/8 multicast
87
- if (/^ff[0-9a-f]{2}:/.test(host))
88
- return false;
89
- // IPv4-mapped / IPv4-compatible IPv6: ::ffff:a.b.c.d or ::a.b.c.d
90
- // (Node's URL parser normalises ::ffff:127.0.0.1 to ::ffff:7f00:1, so
91
- // detect the embedded IPv4 either as a dotted-quad or as the
92
- // ::ffff:xxxx:xxxx hex form.)
93
- if (/\d+\.\d+\.\d+\.\d+/.test(host))
94
- return false;
95
- if (/^::ffff:[0-9a-f]{1,4}:[0-9a-f]{1,4}$/.test(host))
96
- return false;
97
- return true;
100
+ if (addr.kind() === 'ipv6') {
101
+ // ipaddr.js does not classify the deprecated IPv4-compatible form
102
+ // (::a.b.c.d, i.e. the leading 96 bits all zero) as a special range
103
+ // when written in plain hex, which is exactly the form Node's URL
104
+ // parser normalises a dotted-quad IPv4-compatible literal to — so it
105
+ // reaches here as ordinary 'unicast' and needs an explicit check.
106
+ // (::1 and :: are already excluded above via the loopback/unspecified
107
+ // ranges, so this only affects addresses with a genuine embedded IPv4.)
108
+ const bytes = addr.toByteArray();
109
+ if (bytes.slice(0, 12).every((b) => b === 0)) {
110
+ return null;
111
+ }
98
112
  }
99
- return true;
113
+ return parsed;
100
114
  }
101
115
  //# sourceMappingURL=urlSafety.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"urlSafety.js","sourceRoot":"","sources":["../../../src/utils/urlSafety.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"urlSafety.js","sourceRoot":"","sources":["../../../src/utils/urlSafety.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,kCAAkC;AAElC,OAAO,MAAM,MAAM,WAAW,CAAC;AAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,MAAM,UAAU,iBAAiB,CAAC,MAAc;IAC9C,OAAO,oBAAoB,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;AAC/C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc;IACjD,IAAI,MAAW,CAAC;IAChB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,wEAAwE;IACxE,uEAAuE;IACvE,sEAAsE;IACtE,uEAAuE;IACvE,SAAS;IACT,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ;SACzB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;SAClB,WAAW,EAAE,CAAC;IAEjB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,mCAAmC;IACnC,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;QAC/B,WAAW;QACX,eAAe;QACf,cAAc;QACd,eAAe;KAChB,CAAC,CAAC;IACH,uEAAuE;IACvE,wEAAwE;IACxE,uEAAuE;IACvE,mEAAmE;IACnE,oEAAoE;IACpE,sEAAsE;IACtE,MAAM,eAAe,GAAG,CAAC,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IACvE,IACE,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC;QAC1B,eAAe,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EACvD,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oEAAoE;IACpE,uEAAuE;IACvE,mEAAmE;IACnE,oEAAoE;IACpE,wEAAwE;IACxE,mEAAmE;IACnE,yEAAyE;IACzE,sBAAsB;IACtB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAEhC,oEAAoE;IACpE,qEAAqE;IACrE,uEAAuE;IACvE,oEAAoE;IACpE,+CAA+C;IAC/C,IAAI,IAAI,CAAC,KAAK,EAAE,KAAK,SAAS,EAAE,CAAC;QAC/B,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QAC3B,kEAAkE;QAClE,oEAAoE;QACpE,kEAAkE;QAClE,qEAAqE;QACrE,kEAAkE;QAClE,sEAAsE;QACtE,wEAAwE;QACxE,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  {
2
- "sha": "88ba37c5e1013138c5baea75c8db90e8ae8731b1",
3
- "tag": "v0.12.7-4-g88ba37c",
2
+ "sha": "9c8813eadef3e523a7f995ca87e1ed892933a2b9",
3
+ "tag": "v0.14.0-16-g9c8813e",
4
4
  "branch": "HEAD",
5
- "version": "0.13.0"
5
+ "version": "0.15.0"
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mapbox/mcp-server",
3
- "version": "0.13.0",
3
+ "version": "0.15.0",
4
4
  "description": "Mapbox MCP server.",
5
5
  "mcpName": "io.github.mapbox/mcp-server",
6
6
  "main": "./dist/commonjs/index.js",
@@ -78,7 +78,7 @@
78
78
  ],
79
79
  "dependencies": {
80
80
  "@modelcontextprotocol/ext-apps": "^1.1.1",
81
- "@modelcontextprotocol/sdk": "^1.29.0",
81
+ "@modelcontextprotocol/sdk": "^1.30.0",
82
82
  "@opentelemetry/api": "^1.9.1",
83
83
  "@opentelemetry/auto-instrumentations-node": "^0.74.0",
84
84
  "@opentelemetry/exporter-trace-otlp-http": "^0.216.0",
@@ -88,6 +88,7 @@
88
88
  "@opentelemetry/sdk-trace-base": "^2.7.1",
89
89
  "@opentelemetry/semantic-conventions": "^1.40.0",
90
90
  "@turf/turf": "^7.3.1",
91
+ "ipaddr.js": "^2.4.0",
91
92
  "patch-package": "^8.0.1",
92
93
  "zod": "^4.3.6"
93
94
  },
@@ -1,6 +1,8 @@
1
+ diff --git a/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js b/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js
2
+ index 9e1c874..2de8d57 100644
1
3
  --- a/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js
2
4
  +++ b/node_modules/@modelcontextprotocol/sdk/dist/cjs/server/mcp.js
3
- @@ -197,15 +197,20 @@
5
+ @@ -197,15 +197,20 @@ class McpServer {
4
6
  return;
5
7
  }
6
8
  if (!result.structuredContent) {
@@ -29,9 +31,11 @@
29
31
  }
30
32
  }
31
33
  /**
34
+ diff --git a/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js b/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js
35
+ index 2314d88..94aaef1 100644
32
36
  --- a/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js
33
37
  +++ b/node_modules/@modelcontextprotocol/sdk/dist/esm/server/mcp.js
34
- @@ -194,15 +194,20 @@
38
+ @@ -194,15 +194,20 @@ export class McpServer {
35
39
  return;
36
40
  }
37
41
  if (!result.structuredContent) {
@@ -1,15 +0,0 @@
1
- import type { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
2
- import type { ReadResourceResult, ServerNotification, ServerRequest } from '@modelcontextprotocol/sdk/types.js';
3
- import { BaseResource } from '../BaseResource.js';
4
- /**
5
- * Serves UI App HTML for Static Map Preview
6
- * Implements MCP Apps pattern with ui:// scheme
7
- */
8
- export declare class StaticMapUIResource extends BaseResource {
9
- readonly name = "Static Map Preview UI";
10
- readonly uri = "ui://mapbox/static-map/index.html";
11
- readonly description = "Interactive UI for previewing static map images (MCP Apps)";
12
- readonly mimeType = "text/html;profile=mcp-app";
13
- read(_uri: string, _extra?: RequestHandlerExtra<ServerRequest, ServerNotification>): Promise<ReadResourceResult>;
14
- }
15
- //# sourceMappingURL=StaticMapUIResource.d.ts.map