@mapbox/mcp-server 0.17.0-dev.1 → 0.17.0-dev.3

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 (163) hide show
  1. package/dist/commonjs/resources/BaseResource.d.ts +7 -0
  2. package/dist/commonjs/resources/BaseResource.d.ts.map +1 -1
  3. package/dist/commonjs/resources/BaseResource.js +13 -2
  4. package/dist/commonjs/resources/BaseResource.js.map +1 -1
  5. package/dist/commonjs/resources/category-list/CategoryListResource.d.ts +7 -2
  6. package/dist/commonjs/resources/category-list/CategoryListResource.d.ts.map +1 -1
  7. package/dist/commonjs/resources/category-list/CategoryListResource.js +14 -4
  8. package/dist/commonjs/resources/category-list/CategoryListResource.js.map +1 -1
  9. package/dist/commonjs/resources/place-photo/PlacePhotoResource.d.ts +1 -1
  10. package/dist/commonjs/resources/place-photo/PlacePhotoResource.js +2 -2
  11. package/dist/commonjs/resources/place-photo/PlacePhotoResource.js.map +1 -1
  12. package/dist/commonjs/resources/resourceRegistry.d.ts +2 -1
  13. package/dist/commonjs/resources/resourceRegistry.d.ts.map +1 -1
  14. package/dist/commonjs/resources/resourceRegistry.js +10 -5
  15. package/dist/commonjs/resources/resourceRegistry.js.map +1 -1
  16. package/dist/commonjs/resources/tool-response/ToolResponseResource.d.ts +6 -5
  17. package/dist/commonjs/resources/tool-response/ToolResponseResource.d.ts.map +1 -1
  18. package/dist/commonjs/resources/tool-response/ToolResponseResource.js +29 -5
  19. package/dist/commonjs/resources/tool-response/ToolResponseResource.js.map +1 -1
  20. package/dist/commonjs/resources/ui-apps/StaticMapViewerUIResource.d.ts +28 -0
  21. package/dist/commonjs/resources/ui-apps/StaticMapViewerUIResource.d.ts.map +1 -0
  22. package/dist/commonjs/resources/ui-apps/StaticMapViewerUIResource.js +64 -0
  23. package/dist/commonjs/resources/ui-apps/StaticMapViewerUIResource.js.map +1 -0
  24. package/dist/commonjs/resources/ui-apps/mapAppHtml.d.ts.map +1 -1
  25. package/dist/commonjs/resources/ui-apps/mapAppHtml.js +977 -252
  26. package/dist/commonjs/resources/ui-apps/mapAppHtml.js.map +1 -1
  27. package/dist/commonjs/resources/ui-apps/staticMapViewerHtml.d.ts +17 -0
  28. package/dist/commonjs/resources/ui-apps/staticMapViewerHtml.d.ts.map +1 -0
  29. package/dist/commonjs/resources/ui-apps/staticMapViewerHtml.js +180 -0
  30. package/dist/commonjs/resources/ui-apps/staticMapViewerHtml.js.map +1 -0
  31. package/dist/commonjs/tools/MapboxApiBasedTool.d.ts.map +1 -1
  32. package/dist/commonjs/tools/MapboxApiBasedTool.js +6 -2
  33. package/dist/commonjs/tools/MapboxApiBasedTool.js.map +1 -1
  34. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.d.ts.map +1 -1
  35. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.js +1 -1
  36. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.js.map +1 -1
  37. package/dist/commonjs/tools/list-public-tokens-tool/ListPublicTokensTool.d.ts.map +1 -1
  38. package/dist/commonjs/tools/list-public-tokens-tool/ListPublicTokensTool.js +2 -0
  39. package/dist/commonjs/tools/list-public-tokens-tool/ListPublicTokensTool.js.map +1 -1
  40. package/dist/commonjs/tools/render-map-tool/RenderMapTool.d.ts.map +1 -1
  41. package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.d.ts +1 -0
  42. package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.d.ts.map +1 -1
  43. package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.js +10 -6
  44. package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.js.map +1 -1
  45. package/dist/commonjs/tools/render-map-tool/RenderMapTool.js +26 -12
  46. package/dist/commonjs/tools/render-map-tool/RenderMapTool.js.map +1 -1
  47. package/dist/commonjs/tools/render-map-tool/RenderMapTool.output.schema.d.ts +1 -0
  48. package/dist/commonjs/tools/render-map-tool/RenderMapTool.output.schema.d.ts.map +1 -1
  49. package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.d.ts.map +1 -1
  50. package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.js +43 -9
  51. package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.js.map +1 -1
  52. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.d.ts.map +1 -1
  53. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.js +1 -1
  54. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.js.map +1 -1
  55. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.d.ts +8 -1
  56. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -1
  57. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js +113 -90
  58. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -1
  59. package/dist/commonjs/tools/static-map-image-tool/buildStaticMapRequestUrl.d.ts +23 -0
  60. package/dist/commonjs/tools/static-map-image-tool/buildStaticMapRequestUrl.d.ts.map +1 -0
  61. package/dist/commonjs/tools/static-map-image-tool/buildStaticMapRequestUrl.js +84 -0
  62. package/dist/commonjs/tools/static-map-image-tool/buildStaticMapRequestUrl.js.map +1 -0
  63. package/dist/commonjs/utils/mapAppPayload.d.ts +15 -6
  64. package/dist/commonjs/utils/mapAppPayload.d.ts.map +1 -1
  65. package/dist/commonjs/utils/mapAppPayload.js +2 -1
  66. package/dist/commonjs/utils/mapAppPayload.js.map +1 -1
  67. package/dist/commonjs/utils/mapboxPublicToken.d.ts +5 -1
  68. package/dist/commonjs/utils/mapboxPublicToken.d.ts.map +1 -1
  69. package/dist/commonjs/utils/mapboxPublicToken.js +6 -1
  70. package/dist/commonjs/utils/mapboxPublicToken.js.map +1 -1
  71. package/dist/commonjs/utils/responseRef.d.ts +1 -1
  72. package/dist/commonjs/utils/responseRef.d.ts.map +1 -1
  73. package/dist/commonjs/utils/responseRef.js +1 -1
  74. package/dist/commonjs/utils/responseRef.js.map +1 -1
  75. package/dist/commonjs/utils/selfFetchRef.d.ts +24 -0
  76. package/dist/commonjs/utils/selfFetchRef.d.ts.map +1 -1
  77. package/dist/commonjs/utils/selfFetchRef.js +68 -0
  78. package/dist/commonjs/utils/selfFetchRef.js.map +1 -1
  79. package/dist/commonjs/utils/serverInstructions.js +1 -1
  80. package/dist/commonjs/utils/serverInstructions.js.map +1 -1
  81. package/dist/commonjs/version.json +3 -3
  82. package/dist/esm/resources/BaseResource.d.ts +7 -0
  83. package/dist/esm/resources/BaseResource.d.ts.map +1 -1
  84. package/dist/esm/resources/BaseResource.js +13 -2
  85. package/dist/esm/resources/BaseResource.js.map +1 -1
  86. package/dist/esm/resources/category-list/CategoryListResource.d.ts +7 -2
  87. package/dist/esm/resources/category-list/CategoryListResource.d.ts.map +1 -1
  88. package/dist/esm/resources/category-list/CategoryListResource.js +14 -4
  89. package/dist/esm/resources/category-list/CategoryListResource.js.map +1 -1
  90. package/dist/esm/resources/place-photo/PlacePhotoResource.d.ts +1 -1
  91. package/dist/esm/resources/place-photo/PlacePhotoResource.js +2 -2
  92. package/dist/esm/resources/place-photo/PlacePhotoResource.js.map +1 -1
  93. package/dist/esm/resources/resourceRegistry.d.ts +2 -1
  94. package/dist/esm/resources/resourceRegistry.d.ts.map +1 -1
  95. package/dist/esm/resources/resourceRegistry.js +10 -5
  96. package/dist/esm/resources/resourceRegistry.js.map +1 -1
  97. package/dist/esm/resources/tool-response/ToolResponseResource.d.ts +6 -5
  98. package/dist/esm/resources/tool-response/ToolResponseResource.d.ts.map +1 -1
  99. package/dist/esm/resources/tool-response/ToolResponseResource.js +29 -5
  100. package/dist/esm/resources/tool-response/ToolResponseResource.js.map +1 -1
  101. package/dist/esm/resources/ui-apps/StaticMapViewerUIResource.d.ts +28 -0
  102. package/dist/esm/resources/ui-apps/StaticMapViewerUIResource.d.ts.map +1 -0
  103. package/dist/esm/resources/ui-apps/StaticMapViewerUIResource.js +59 -0
  104. package/dist/esm/resources/ui-apps/StaticMapViewerUIResource.js.map +1 -0
  105. package/dist/esm/resources/ui-apps/mapAppHtml.d.ts.map +1 -1
  106. package/dist/esm/resources/ui-apps/mapAppHtml.js +977 -252
  107. package/dist/esm/resources/ui-apps/mapAppHtml.js.map +1 -1
  108. package/dist/esm/resources/ui-apps/staticMapViewerHtml.d.ts +17 -0
  109. package/dist/esm/resources/ui-apps/staticMapViewerHtml.d.ts.map +1 -0
  110. package/dist/esm/resources/ui-apps/staticMapViewerHtml.js +177 -0
  111. package/dist/esm/resources/ui-apps/staticMapViewerHtml.js.map +1 -0
  112. package/dist/esm/tools/MapboxApiBasedTool.d.ts.map +1 -1
  113. package/dist/esm/tools/MapboxApiBasedTool.js +6 -2
  114. package/dist/esm/tools/MapboxApiBasedTool.js.map +1 -1
  115. package/dist/esm/tools/category-search-tool/CategorySearchTool.d.ts.map +1 -1
  116. package/dist/esm/tools/category-search-tool/CategorySearchTool.js +2 -2
  117. package/dist/esm/tools/category-search-tool/CategorySearchTool.js.map +1 -1
  118. package/dist/esm/tools/list-public-tokens-tool/ListPublicTokensTool.d.ts.map +1 -1
  119. package/dist/esm/tools/list-public-tokens-tool/ListPublicTokensTool.js +2 -0
  120. package/dist/esm/tools/list-public-tokens-tool/ListPublicTokensTool.js.map +1 -1
  121. package/dist/esm/tools/render-map-tool/RenderMapTool.d.ts.map +1 -1
  122. package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.d.ts +1 -0
  123. package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.d.ts.map +1 -1
  124. package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.js +10 -6
  125. package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.js.map +1 -1
  126. package/dist/esm/tools/render-map-tool/RenderMapTool.js +26 -12
  127. package/dist/esm/tools/render-map-tool/RenderMapTool.js.map +1 -1
  128. package/dist/esm/tools/render-map-tool/RenderMapTool.output.schema.d.ts +1 -0
  129. package/dist/esm/tools/render-map-tool/RenderMapTool.output.schema.d.ts.map +1 -1
  130. package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.d.ts.map +1 -1
  131. package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.js +43 -9
  132. package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.js.map +1 -1
  133. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.d.ts.map +1 -1
  134. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.js +2 -2
  135. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.js.map +1 -1
  136. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.d.ts +8 -1
  137. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -1
  138. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js +114 -91
  139. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -1
  140. package/dist/esm/tools/static-map-image-tool/buildStaticMapRequestUrl.d.ts +23 -0
  141. package/dist/esm/tools/static-map-image-tool/buildStaticMapRequestUrl.d.ts.map +1 -0
  142. package/dist/esm/tools/static-map-image-tool/buildStaticMapRequestUrl.js +78 -0
  143. package/dist/esm/tools/static-map-image-tool/buildStaticMapRequestUrl.js.map +1 -0
  144. package/dist/esm/utils/mapAppPayload.d.ts +15 -6
  145. package/dist/esm/utils/mapAppPayload.d.ts.map +1 -1
  146. package/dist/esm/utils/mapAppPayload.js +2 -1
  147. package/dist/esm/utils/mapAppPayload.js.map +1 -1
  148. package/dist/esm/utils/mapboxPublicToken.d.ts +5 -1
  149. package/dist/esm/utils/mapboxPublicToken.d.ts.map +1 -1
  150. package/dist/esm/utils/mapboxPublicToken.js +6 -1
  151. package/dist/esm/utils/mapboxPublicToken.js.map +1 -1
  152. package/dist/esm/utils/responseRef.d.ts +1 -1
  153. package/dist/esm/utils/responseRef.d.ts.map +1 -1
  154. package/dist/esm/utils/responseRef.js +1 -1
  155. package/dist/esm/utils/responseRef.js.map +1 -1
  156. package/dist/esm/utils/selfFetchRef.d.ts +24 -0
  157. package/dist/esm/utils/selfFetchRef.d.ts.map +1 -1
  158. package/dist/esm/utils/selfFetchRef.js +67 -0
  159. package/dist/esm/utils/selfFetchRef.js.map +1 -1
  160. package/dist/esm/utils/serverInstructions.js +1 -1
  161. package/dist/esm/utils/serverInstructions.js.map +1 -1
  162. package/dist/esm/version.json +3 -3
  163. package/package.json +1 -1
@@ -4,9 +4,10 @@ import { ComputeResource } from './compute/ComputeResource.js';
4
4
  import { InlinePayloadResource } from './inline-payload/InlinePayloadResource.js';
5
5
  import { ToolResponseResource } from './tool-response/ToolResponseResource.js';
6
6
  import { MapAppUIResource } from './ui-apps/MapAppUIResource.js';
7
+ import { StaticMapViewerUIResource } from './ui-apps/StaticMapViewerUIResource.js';
7
8
  import { VersionResource } from './version/VersionResource.js';
8
9
  import { PlacePhotoResource } from './place-photo/PlacePhotoResource.js';
9
- export declare const ALL_RESOURCES: readonly [CategoryListResource, TemporaryDataResource, ComputeResource, InlinePayloadResource, ToolResponseResource, MapAppUIResource, PlacePhotoResource, VersionResource];
10
+ export declare const ALL_RESOURCES: readonly [CategoryListResource, TemporaryDataResource, ComputeResource, InlinePayloadResource, ToolResponseResource, MapAppUIResource, StaticMapViewerUIResource, PlacePhotoResource, VersionResource];
10
11
  export type ResourceInstance = (typeof ALL_RESOURCES)[number];
11
12
  export declare function getAllResources(): readonly ResourceInstance[];
12
13
  export declare function getResourceByUri(uri: string): ResourceInstance | undefined;
@@ -1 +1 @@
1
- {"version":3,"file":"resourceRegistry.d.ts","sourceRoot":"","sources":["../../../src/resources/resourceRegistry.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAIzE,eAAO,MAAM,aAAa,6KAYhB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,wBAAgB,eAAe,IAAI,SAAS,gBAAgB,EAAE,CAE7D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAkB1E"}
1
+ {"version":3,"file":"resourceRegistry.d.ts","sourceRoot":"","sources":["../../../src/resources/resourceRegistry.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AAIzE,eAAO,MAAM,aAAa,wMAchB,CAAC;AAEX,MAAM,MAAM,gBAAgB,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,CAAC,CAAC;AAE9D,wBAAgB,eAAe,IAAI,SAAS,gBAAgB,EAAE,CAE7D;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,gBAAgB,GAAG,SAAS,CAoB1E"}
@@ -7,6 +7,7 @@ import { ComputeResource } from './compute/ComputeResource.js';
7
7
  import { InlinePayloadResource } from './inline-payload/InlinePayloadResource.js';
8
8
  import { ToolResponseResource } from './tool-response/ToolResponseResource.js';
9
9
  import { MapAppUIResource } from './ui-apps/MapAppUIResource.js';
10
+ import { StaticMapViewerUIResource } from './ui-apps/StaticMapViewerUIResource.js';
10
11
  import { VersionResource } from './version/VersionResource.js';
11
12
  import { PlacePhotoResource } from './place-photo/PlacePhotoResource.js';
12
13
  import { httpRequest } from '../utils/httpPipeline.js';
@@ -20,7 +21,9 @@ export const ALL_RESOURCES = [
20
21
  new ToolResponseResource({ httpRequest }),
21
22
  // Single shared map renderer, targeted exclusively by render_map_tool.
22
23
  new MapAppUIResource({ httpRequest }),
23
- // Photos for the map app's results panel, which its CSP can't load directly.
24
+ // Full-width viewer for static_map_image_tool's image.
25
+ new StaticMapViewerUIResource(),
26
+ // Photos for the map app's results carousel, which its CSP can't load directly.
24
27
  new PlacePhotoResource({ httpRequest }),
25
28
  new VersionResource()
26
29
  ];
@@ -32,16 +35,18 @@ export function getResourceByUri(uri) {
32
35
  const exactMatch = ALL_RESOURCES.find((resource) => resource.uri === uri);
33
36
  if (exactMatch)
34
37
  return exactMatch;
35
- // Find pattern match (e.g., mapbox://categories/ja matches mapbox://categories)
38
+ // Find pattern match (e.g., mapbox://categories/ja matches mapbox://categories,
39
+ // mapbox://temp/abc matches the template mapbox://temp/{id}). The prefix is
40
+ // everything before the first `{` or `*`.
36
41
  // Plain string prefix check — avoids building a RegExp from data at runtime,
37
42
  // which would let an unbounded, user-supplied `uri` be tested against a
38
43
  // dynamically constructed pattern (untrusted-input-into-RegExp is a ReDoS
39
44
  // smell even though today's static resource URIs are innocuous).
40
45
  return ALL_RESOURCES.find((resource) => {
41
- const wildcardIndex = resource.uri.indexOf('*');
42
- const basePrefix = wildcardIndex === -1
46
+ const variableIndex = resource.uri.search(/[{*]/);
47
+ const basePrefix = variableIndex === -1
43
48
  ? resource.uri
44
- : resource.uri.slice(0, wildcardIndex);
49
+ : resource.uri.slice(0, variableIndex);
45
50
  return uri.startsWith(basePrefix);
46
51
  });
47
52
  }
@@ -1 +1 @@
1
- {"version":3,"file":"resourceRegistry.js","sourceRoot":"","sources":["../../../src/resources/resourceRegistry.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,kCAAkC;AAElC,kCAAkC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,oCAAoC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,oCAAoC;IACpC,IAAI,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC;IACzC,IAAI,qBAAqB,EAAE;IAC3B,IAAI,eAAe,EAAE;IACrB,IAAI,qBAAqB,EAAE;IAC3B,IAAI,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC;IACzC,uEAAuE;IACvE,IAAI,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAC;IACrC,6EAA6E;IAC7E,IAAI,kBAAkB,CAAC,EAAE,WAAW,EAAE,CAAC;IACvC,IAAI,eAAe,EAAE;CACb,CAAC;AAIX,MAAM,UAAU,eAAe;IAC7B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,yBAAyB;IACzB,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAC1E,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,gFAAgF;IAChF,6EAA6E;IAC7E,wEAAwE;IACxE,0EAA0E;IAC1E,iEAAiE;IACjE,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACrC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAChD,MAAM,UAAU,GACd,aAAa,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,QAAQ,CAAC,GAAG;YACd,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QAC3C,OAAO,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"resourceRegistry.js","sourceRoot":"","sources":["../../../src/resources/resourceRegistry.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,kCAAkC;AAElC,kCAAkC;AAClC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,2CAA2C,CAAC;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AACnF,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,qCAAqC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAEvD,oCAAoC;AACpC,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,oCAAoC;IACpC,IAAI,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC;IACzC,IAAI,qBAAqB,EAAE;IAC3B,IAAI,eAAe,EAAE;IACrB,IAAI,qBAAqB,EAAE;IAC3B,IAAI,oBAAoB,CAAC,EAAE,WAAW,EAAE,CAAC;IACzC,uEAAuE;IACvE,IAAI,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAC;IACrC,uDAAuD;IACvD,IAAI,yBAAyB,EAAE;IAC/B,gFAAgF;IAChF,IAAI,kBAAkB,CAAC,EAAE,WAAW,EAAE,CAAC;IACvC,IAAI,eAAe,EAAE;CACb,CAAC;AAIX,MAAM,UAAU,eAAe;IAC7B,OAAO,aAAa,CAAC;AACvB,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,GAAW;IAC1C,yBAAyB;IACzB,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC;IAC1E,IAAI,UAAU;QAAE,OAAO,UAAU,CAAC;IAElC,gFAAgF;IAChF,4EAA4E;IAC5E,0CAA0C;IAC1C,6EAA6E;IAC7E,wEAAwE;IACxE,0EAA0E;IAC1E,iEAAiE;IACjE,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;QACrC,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,UAAU,GACd,aAAa,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,QAAQ,CAAC,GAAG;YACd,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,aAAa,CAAC,CAAC;QAC3C,OAAO,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -2,15 +2,16 @@ import type { ReadResourceResult } from '@modelcontextprotocol/server';
2
2
  import { MapboxApiBasedResource } from '../MapboxApiBasedResource.js';
3
3
  import type { HttpRequest } from '../../utils/types.js';
4
4
  /**
5
- * Full `directions_tool` / `isochrone_tool` responses that were too large
6
- * to return inline. The `mapbox://response/{tool}?data=...` ref carries the
7
- * call's inputs (see responseRef.ts), and reading it runs the same request
8
- * again with the reader's token, so any server process can answer it.
5
+ * Full `directions_tool` / `isochrone_tool` responses and
6
+ * `static_map_image_tool` images that were too large to return inline. The
7
+ * `mapbox://response/{tool}?data=...` ref carries the call's inputs (see
8
+ * responseRef.ts), and reading it runs the same request again with the
9
+ * reader's token, so any server process can answer it.
9
10
  */
10
11
  export declare class ToolResponseResource extends MapboxApiBasedResource {
11
12
  readonly name = "Full Tool Response";
12
13
  readonly uri = "mapbox://response/{spec}";
13
- readonly description = "The full response of a directions_tool or isochrone_tool call that was too large to return inline, fetched again from its ref.";
14
+ readonly description = "The full response of a directions_tool or isochrone_tool call, or a static_map_image_tool image, that was too large to return inline, fetched again from its ref.";
14
15
  readonly mimeType = "application/json";
15
16
  constructor(params: {
16
17
  httpRequest: HttpRequest;
@@ -1 +1 @@
1
- {"version":3,"file":"ToolResponseResource.d.ts","sourceRoot":"","sources":["../../../../src/resources/tool-response/ToolResponseResource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AASxD;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,sBAAsB;IAC9D,QAAQ,CAAC,IAAI,wBAAwB;IACrC,QAAQ,CAAC,GAAG,8BAA8B;IAC1C,QAAQ,CAAC,WAAW,oIAC+G;IACnI,QAAQ,CAAC,QAAQ,sBAAsB;gBAE3B,MAAM,EAAE;QAAE,WAAW,EAAE,WAAW,CAAA;KAAE;cAIhC,OAAO,CACrB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC;CAgE/B"}
1
+ {"version":3,"file":"ToolResponseResource.d.ts","sourceRoot":"","sources":["../../../../src/resources/tool-response/ToolResponseResource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,sBAAsB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAcxD;;;;;;GAMG;AACH,qBAAa,oBAAqB,SAAQ,sBAAsB;IAC9D,QAAQ,CAAC,IAAI,wBAAwB;IACrC,QAAQ,CAAC,GAAG,8BAA8B;IAC1C,QAAQ,CAAC,WAAW,uKACkJ;IACtK,QAAQ,CAAC,QAAQ,sBAAsB;gBAE3B,MAAM,EAAE;QAAE,WAAW,EAAE,WAAW,CAAA;KAAE;cAIhC,OAAO,CACrB,GAAG,EAAE,MAAM,EACX,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,kBAAkB,CAAC;CAyF/B"}
@@ -7,16 +7,19 @@ import { buildDirectionsRequestUrl } from '../../tools/directions-tool/buildDire
7
7
  import { cleanResponseData } from '../../tools/directions-tool/cleanResponseData.js';
8
8
  import { IsochroneInputSchema } from '../../tools/isochrone-tool/IsochroneTool.input.schema.js';
9
9
  import { buildIsochroneRequestUrl } from '../../tools/isochrone-tool/buildIsochroneRequestUrl.js';
10
+ import { StaticMapImageInputSchema } from '../../tools/static-map-image-tool/StaticMapImageTool.input.schema.js';
11
+ import { buildStaticMapRequestUrl, getStaticMapMimeType } from '../../tools/static-map-image-tool/buildStaticMapRequestUrl.js';
10
12
  /**
11
- * Full `directions_tool` / `isochrone_tool` responses that were too large
12
- * to return inline. The `mapbox://response/{tool}?data=...` ref carries the
13
- * call's inputs (see responseRef.ts), and reading it runs the same request
14
- * again with the reader's token, so any server process can answer it.
13
+ * Full `directions_tool` / `isochrone_tool` responses and
14
+ * `static_map_image_tool` images that were too large to return inline. The
15
+ * `mapbox://response/{tool}?data=...` ref carries the call's inputs (see
16
+ * responseRef.ts), and reading it runs the same request again with the
17
+ * reader's token, so any server process can answer it.
15
18
  */
16
19
  export class ToolResponseResource extends MapboxApiBasedResource {
17
20
  name = 'Full Tool Response';
18
21
  uri = 'mapbox://response/{spec}';
19
- description = 'The full response of a directions_tool or isochrone_tool call that was too large to return inline, fetched again from its ref.';
22
+ description = 'The full response of a directions_tool or isochrone_tool call, or a static_map_image_tool image, that was too large to return inline, fetched again from its ref.';
20
23
  mimeType = 'application/json';
21
24
  constructor(params) {
22
25
  super(params);
@@ -24,6 +27,27 @@ export class ToolResponseResource extends MapboxApiBasedResource {
24
27
  async execute(uri, accessToken) {
25
28
  const spec = resolveResponseRef(uri);
26
29
  const apiEndpoint = MapboxApiBasedResource.mapboxApiEndpoint;
30
+ if (spec?.tool === 'static-map') {
31
+ const parsed = StaticMapImageInputSchema.safeParse(spec.input);
32
+ if (!parsed.success) {
33
+ return text(uri, 'Response ref was malformed or unsupported.');
34
+ }
35
+ const { url } = buildStaticMapRequestUrl({
36
+ input: parsed.data,
37
+ accessToken,
38
+ apiEndpoint
39
+ });
40
+ const response = await this.httpRequest(url);
41
+ if (!response.ok) {
42
+ return text(uri, `Fetching the image failed: ${response.status} ${response.statusText}`);
43
+ }
44
+ const blob = Buffer.from(await response.arrayBuffer()).toString('base64');
45
+ return {
46
+ contents: [
47
+ { uri, mimeType: getStaticMapMimeType(parsed.data.style), blob }
48
+ ]
49
+ };
50
+ }
27
51
  let url = null;
28
52
  let directionsInput = null;
29
53
  if (spec?.tool === 'directions') {
@@ -1 +1 @@
1
- {"version":3,"file":"ToolResponseResource.js","sourceRoot":"","sources":["../../../../src/resources/tool-response/ToolResponseResource.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ToolResponseResource.js","sourceRoot":"","sources":["../../../../src/resources/tool-response/ToolResponseResource.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import type { ReadResourceResult } from '@modelcontextprotocol/server';
2
+ import { BaseResource } from '../BaseResource.js';
3
+ export declare const STATIC_MAP_VIEWER_URI = "ui://mapbox/static-map/index.html";
4
+ /**
5
+ * The MCP App `static_map_image_tool` points at, which shows its image at
6
+ * full width (see staticMapViewerHtml.ts).
7
+ *
8
+ * The image comes from the tool result itself, so unlike the map app this
9
+ * page needs no token. Its CSP only allows images from the API origin, for
10
+ * the public-token URL it falls back to when the image went to a temporary
11
+ * resource.
12
+ */
13
+ export declare class StaticMapViewerUIResource extends BaseResource {
14
+ readonly name = "Mapbox Static Map Viewer";
15
+ readonly uri = "ui://mapbox/static-map/index.html";
16
+ readonly description = "Shows the static_map_image_tool image at full width (MCP Apps)";
17
+ readonly mimeType = "text/html;profile=mcp-app";
18
+ private readonly apiEndpoint;
19
+ constructor(params?: {
20
+ apiEndpoint?: () => string;
21
+ });
22
+ read(): Promise<ReadResourceResult>;
23
+ }
24
+ /** Images from the API origin only; the page fetches nothing else. */
25
+ export declare function staticMapViewerCsp(apiEndpoint: string): {
26
+ resourceDomains: string[];
27
+ };
28
+ //# sourceMappingURL=StaticMapViewerUIResource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StaticMapViewerUIResource.d.ts","sourceRoot":"","sources":["../../../../src/resources/ui-apps/StaticMapViewerUIResource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAGlD,eAAO,MAAM,qBAAqB,sCAAsC,CAAC;AAEzE;;;;;;;;GAQG;AACH,qBAAa,yBAA0B,SAAQ,YAAY;IACzD,QAAQ,CAAC,IAAI,8BAA8B;IAC3C,QAAQ,CAAC,GAAG,uCAAyB;IACrC,QAAQ,CAAC,WAAW,oEAC+C;IACnE,QAAQ,CAAC,QAAQ,+BAAsB;IAEvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;gBAE/B,MAAM,GAAE;QAAE,WAAW,CAAC,EAAE,MAAM,MAAM,CAAA;KAAO;IAOjD,IAAI,IAAI,OAAO,CAAC,kBAAkB,CAAC;CAiB1C;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,GAAG;IACvD,eAAe,EAAE,MAAM,EAAE,CAAC;CAC3B,CASA"}
@@ -0,0 +1,59 @@
1
+ // Copyright (c) Mapbox, Inc.
2
+ // Licensed under the MIT License.
3
+ import { RESOURCE_MIME_TYPE } from '@modelcontextprotocol/ext-apps/server';
4
+ import { BaseResource } from '../BaseResource.js';
5
+ import { renderStaticMapViewerHtml } from './staticMapViewerHtml.js';
6
+ export const STATIC_MAP_VIEWER_URI = 'ui://mapbox/static-map/index.html';
7
+ /**
8
+ * The MCP App `static_map_image_tool` points at, which shows its image at
9
+ * full width (see staticMapViewerHtml.ts).
10
+ *
11
+ * The image comes from the tool result itself, so unlike the map app this
12
+ * page needs no token. Its CSP only allows images from the API origin, for
13
+ * the public-token URL it falls back to when the image went to a temporary
14
+ * resource.
15
+ */
16
+ export class StaticMapViewerUIResource extends BaseResource {
17
+ name = 'Mapbox Static Map Viewer';
18
+ uri = STATIC_MAP_VIEWER_URI;
19
+ description = 'Shows the static_map_image_tool image at full width (MCP Apps)';
20
+ mimeType = RESOURCE_MIME_TYPE;
21
+ apiEndpoint;
22
+ constructor(params = {}) {
23
+ super();
24
+ this.apiEndpoint =
25
+ params.apiEndpoint ??
26
+ (() => process.env.MAPBOX_API_ENDPOINT || 'https://api.mapbox.com/');
27
+ }
28
+ async read() {
29
+ return {
30
+ contents: [
31
+ {
32
+ uri: this.uri,
33
+ mimeType: RESOURCE_MIME_TYPE,
34
+ text: renderStaticMapViewerHtml({ apiEndpoint: this.apiEndpoint() }),
35
+ _meta: {
36
+ ui: {
37
+ csp: staticMapViewerCsp(this.apiEndpoint()),
38
+ prefersBorder: false
39
+ }
40
+ }
41
+ }
42
+ ]
43
+ };
44
+ }
45
+ }
46
+ /** Images from the API origin only; the page fetches nothing else. */
47
+ export function staticMapViewerCsp(apiEndpoint) {
48
+ const resourceDomains = ['https://api.mapbox.com'];
49
+ try {
50
+ const origin = new URL(apiEndpoint).origin;
51
+ if (!resourceDomains.includes(origin))
52
+ resourceDomains.push(origin);
53
+ }
54
+ catch {
55
+ // An endpoint that isn't a valid URL can't serve images anyway.
56
+ }
57
+ return { resourceDomains };
58
+ }
59
+ //# sourceMappingURL=StaticMapViewerUIResource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"StaticMapViewerUIResource.js","sourceRoot":"","sources":["../../../../src/resources/ui-apps/StaticMapViewerUIResource.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,kCAAkC;AAGlC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAC3E,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,CAAC,MAAM,qBAAqB,GAAG,mCAAmC,CAAC;AAEzE;;;;;;;;GAQG;AACH,MAAM,OAAO,yBAA0B,SAAQ,YAAY;IAChD,IAAI,GAAG,0BAA0B,CAAC;IAClC,GAAG,GAAG,qBAAqB,CAAC;IAC5B,WAAW,GAClB,gEAAgE,CAAC;IAC1D,QAAQ,GAAG,kBAAkB,CAAC;IAEtB,WAAW,CAAe;IAE3C,YAAY,SAAyC,EAAE;QACrD,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW;YACd,MAAM,CAAC,WAAW;gBAClB,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,yBAAyB,CAAC,CAAC;IACzE,CAAC;IAED,KAAK,CAAC,IAAI;QACR,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,QAAQ,EAAE,kBAAkB;oBAC5B,IAAI,EAAE,yBAAyB,CAAC,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;oBACpE,KAAK,EAAE;wBACL,EAAE,EAAE;4BACF,GAAG,EAAE,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;4BAC3C,aAAa,EAAE,KAAK;yBACrB;qBACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;CACF;AAED,sEAAsE;AACtE,MAAM,UAAU,kBAAkB,CAAC,WAAmB;IAGpD,MAAM,eAAe,GAAG,CAAC,wBAAwB,CAAC,CAAC;IACnD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;QAC3C,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,gEAAgE;IAClE,CAAC;IACD,OAAO,EAAE,eAAe,EAAE,CAAC;AAC7B,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"mapAppHtml.d.ts","sourceRoot":"","sources":["../../../../src/resources/ui-apps/mapAppHtml.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE;;;;;;;;;GASG;AAMH,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B,GAAG,MAAM,CAomET"}
1
+ {"version":3,"file":"mapAppHtml.d.ts","sourceRoot":"","sources":["../../../../src/resources/ui-apps/mapAppHtml.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAElE;;;;;;;;;GASG;AAMH,eAAO,MAAM,iBAAiB,WAAW,CAAC;AAE1C,wBAAgB,gBAAgB,CAAC,MAAM,EAAE;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,aAAa,CAAC;CAC7B,GAAG,MAAM,CAyzFT"}