@mapbox/mcp-server 0.14.0 → 0.15.1

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 (199) hide show
  1. package/README.md +11 -0
  2. package/dist/commonjs/index.js +38 -1
  3. package/dist/commonjs/index.js.map +1 -1
  4. package/dist/commonjs/resources/BaseResource.d.ts +18 -0
  5. package/dist/commonjs/resources/BaseResource.d.ts.map +1 -1
  6. package/dist/commonjs/resources/BaseResource.js +26 -4
  7. package/dist/commonjs/resources/BaseResource.js.map +1 -1
  8. package/dist/commonjs/resources/temporary/TemporaryDataResource.d.ts.map +1 -1
  9. package/dist/commonjs/resources/temporary/TemporaryDataResource.js +20 -10
  10. package/dist/commonjs/resources/temporary/TemporaryDataResource.js.map +1 -1
  11. package/dist/commonjs/resources/ui-apps/MapAppUIResource.d.ts.map +1 -1
  12. package/dist/commonjs/resources/ui-apps/MapAppUIResource.js +2 -8
  13. package/dist/commonjs/resources/ui-apps/MapAppUIResource.js.map +1 -1
  14. package/dist/commonjs/resources/ui-apps/mapAppCsp.d.ts +22 -0
  15. package/dist/commonjs/resources/ui-apps/mapAppCsp.d.ts.map +1 -0
  16. package/dist/commonjs/resources/ui-apps/mapAppCsp.js +39 -0
  17. package/dist/commonjs/resources/ui-apps/mapAppCsp.js.map +1 -0
  18. package/dist/commonjs/resources/ui-apps/mapAppHtml.d.ts.map +1 -1
  19. package/dist/commonjs/resources/ui-apps/mapAppHtml.js +71 -9
  20. package/dist/commonjs/resources/ui-apps/mapAppHtml.js.map +1 -1
  21. package/dist/commonjs/tools/BaseTool.d.ts +19 -0
  22. package/dist/commonjs/tools/BaseTool.d.ts.map +1 -1
  23. package/dist/commonjs/tools/BaseTool.js +25 -3
  24. package/dist/commonjs/tools/BaseTool.js.map +1 -1
  25. package/dist/commonjs/tools/directions-tool/DirectionsTool.d.ts.map +1 -1
  26. package/dist/commonjs/tools/directions-tool/DirectionsTool.js +4 -3
  27. package/dist/commonjs/tools/directions-tool/DirectionsTool.js.map +1 -1
  28. package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.d.ts.map +1 -1
  29. package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.js +7 -4
  30. package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.js.map +1 -1
  31. package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.output.schema.d.ts +4 -0
  32. package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.output.schema.d.ts.map +1 -1
  33. package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.output.schema.js +9 -1
  34. package/dist/commonjs/tools/ground-location-tool/GroundLocationTool.output.schema.js.map +1 -1
  35. package/dist/commonjs/tools/isochrone-tool/IsochroneTool.js +1 -1
  36. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.d.ts +11 -1
  37. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.d.ts.map +1 -1
  38. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.input.schema.js +3 -3
  39. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.input.schema.js.map +1 -1
  40. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.js +132 -141
  41. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.js.map +1 -1
  42. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.output.schema.d.ts +71 -10
  43. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.output.schema.d.ts.map +1 -1
  44. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.output.schema.js +86 -10
  45. package/dist/commonjs/tools/place-details-tool/PlaceDetailsTool.output.schema.js.map +1 -1
  46. package/dist/commonjs/tools/render-map-tool/RenderMapTool.d.ts +2 -4
  47. package/dist/commonjs/tools/render-map-tool/RenderMapTool.d.ts.map +1 -1
  48. package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.d.ts +50 -0
  49. package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.d.ts.map +1 -1
  50. package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.js +51 -2
  51. package/dist/commonjs/tools/render-map-tool/RenderMapTool.input.schema.js.map +1 -1
  52. package/dist/commonjs/tools/render-map-tool/RenderMapTool.js +50 -18
  53. package/dist/commonjs/tools/render-map-tool/RenderMapTool.js.map +1 -1
  54. package/dist/commonjs/tools/render-map-tool/RenderMapTool.output.schema.d.ts +50 -0
  55. package/dist/commonjs/tools/render-map-tool/RenderMapTool.output.schema.d.ts.map +1 -1
  56. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.d.ts.map +1 -1
  57. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.d.ts.map +1 -1
  58. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js +2 -2
  59. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js.map +1 -1
  60. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.js +4 -3
  61. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.js.map +1 -1
  62. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -1
  63. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js +2 -2
  64. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -1
  65. package/dist/commonjs/utils/index.d.ts +2 -0
  66. package/dist/commonjs/utils/index.d.ts.map +1 -1
  67. package/dist/commonjs/utils/index.js +10 -1
  68. package/dist/commonjs/utils/index.js.map +1 -1
  69. package/dist/commonjs/utils/jsonSchema2020.d.ts +26 -0
  70. package/dist/commonjs/utils/jsonSchema2020.d.ts.map +1 -0
  71. package/dist/commonjs/utils/jsonSchema2020.js +143 -0
  72. package/dist/commonjs/utils/jsonSchema2020.js.map +1 -0
  73. package/dist/commonjs/utils/jwtUtils.d.ts +48 -0
  74. package/dist/commonjs/utils/jwtUtils.d.ts.map +1 -1
  75. package/dist/commonjs/utils/jwtUtils.js +63 -0
  76. package/dist/commonjs/utils/jwtUtils.js.map +1 -1
  77. package/dist/commonjs/utils/mapAppPayload.d.ts +109 -0
  78. package/dist/commonjs/utils/mapAppPayload.d.ts.map +1 -1
  79. package/dist/commonjs/utils/mapAppPayload.js +38 -2
  80. package/dist/commonjs/utils/mapAppPayload.js.map +1 -1
  81. package/dist/commonjs/utils/selfFetchRef.d.ts.map +1 -1
  82. package/dist/commonjs/utils/selfFetchRef.js +31 -0
  83. package/dist/commonjs/utils/selfFetchRef.js.map +1 -1
  84. package/dist/commonjs/utils/serverInstructions.d.ts +12 -0
  85. package/dist/commonjs/utils/serverInstructions.d.ts.map +1 -0
  86. package/dist/commonjs/utils/serverInstructions.js +28 -0
  87. package/dist/commonjs/utils/serverInstructions.js.map +1 -0
  88. package/dist/commonjs/utils/storeMapPayload.d.ts +11 -11
  89. package/dist/commonjs/utils/storeMapPayload.d.ts.map +1 -1
  90. package/dist/commonjs/utils/storeMapPayload.js +14 -13
  91. package/dist/commonjs/utils/storeMapPayload.js.map +1 -1
  92. package/dist/commonjs/utils/temporaryResourceManager.d.ts +10 -4
  93. package/dist/commonjs/utils/temporaryResourceManager.d.ts.map +1 -1
  94. package/dist/commonjs/utils/temporaryResourceManager.js.map +1 -1
  95. package/dist/commonjs/utils/tracing.d.ts +4 -0
  96. package/dist/commonjs/utils/tracing.d.ts.map +1 -1
  97. package/dist/commonjs/utils/tracing.js +20 -0
  98. package/dist/commonjs/utils/tracing.js.map +1 -1
  99. package/dist/commonjs/version.json +3 -3
  100. package/dist/esm/index.js +39 -2
  101. package/dist/esm/index.js.map +1 -1
  102. package/dist/esm/resources/BaseResource.d.ts +18 -0
  103. package/dist/esm/resources/BaseResource.d.ts.map +1 -1
  104. package/dist/esm/resources/BaseResource.js +26 -4
  105. package/dist/esm/resources/BaseResource.js.map +1 -1
  106. package/dist/esm/resources/temporary/TemporaryDataResource.d.ts.map +1 -1
  107. package/dist/esm/resources/temporary/TemporaryDataResource.js +21 -11
  108. package/dist/esm/resources/temporary/TemporaryDataResource.js.map +1 -1
  109. package/dist/esm/resources/ui-apps/MapAppUIResource.d.ts.map +1 -1
  110. package/dist/esm/resources/ui-apps/MapAppUIResource.js +2 -8
  111. package/dist/esm/resources/ui-apps/MapAppUIResource.js.map +1 -1
  112. package/dist/esm/resources/ui-apps/mapAppCsp.d.ts +22 -0
  113. package/dist/esm/resources/ui-apps/mapAppCsp.d.ts.map +1 -0
  114. package/dist/esm/resources/ui-apps/mapAppCsp.js +36 -0
  115. package/dist/esm/resources/ui-apps/mapAppCsp.js.map +1 -0
  116. package/dist/esm/resources/ui-apps/mapAppHtml.d.ts.map +1 -1
  117. package/dist/esm/resources/ui-apps/mapAppHtml.js +71 -9
  118. package/dist/esm/resources/ui-apps/mapAppHtml.js.map +1 -1
  119. package/dist/esm/tools/BaseTool.d.ts +19 -0
  120. package/dist/esm/tools/BaseTool.d.ts.map +1 -1
  121. package/dist/esm/tools/BaseTool.js +25 -3
  122. package/dist/esm/tools/BaseTool.js.map +1 -1
  123. package/dist/esm/tools/directions-tool/DirectionsTool.d.ts.map +1 -1
  124. package/dist/esm/tools/directions-tool/DirectionsTool.js +5 -4
  125. package/dist/esm/tools/directions-tool/DirectionsTool.js.map +1 -1
  126. package/dist/esm/tools/ground-location-tool/GroundLocationTool.d.ts.map +1 -1
  127. package/dist/esm/tools/ground-location-tool/GroundLocationTool.js +7 -4
  128. package/dist/esm/tools/ground-location-tool/GroundLocationTool.js.map +1 -1
  129. package/dist/esm/tools/ground-location-tool/GroundLocationTool.output.schema.d.ts +4 -0
  130. package/dist/esm/tools/ground-location-tool/GroundLocationTool.output.schema.d.ts.map +1 -1
  131. package/dist/esm/tools/ground-location-tool/GroundLocationTool.output.schema.js +9 -1
  132. package/dist/esm/tools/ground-location-tool/GroundLocationTool.output.schema.js.map +1 -1
  133. package/dist/esm/tools/isochrone-tool/IsochroneTool.js +2 -2
  134. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.d.ts +11 -1
  135. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.d.ts.map +1 -1
  136. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.input.schema.js +3 -3
  137. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.input.schema.js.map +1 -1
  138. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.js +133 -142
  139. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.js.map +1 -1
  140. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.output.schema.d.ts +71 -10
  141. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.output.schema.d.ts.map +1 -1
  142. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.output.schema.js +85 -9
  143. package/dist/esm/tools/place-details-tool/PlaceDetailsTool.output.schema.js.map +1 -1
  144. package/dist/esm/tools/render-map-tool/RenderMapTool.d.ts +2 -4
  145. package/dist/esm/tools/render-map-tool/RenderMapTool.d.ts.map +1 -1
  146. package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.d.ts +50 -0
  147. package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.d.ts.map +1 -1
  148. package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.js +51 -2
  149. package/dist/esm/tools/render-map-tool/RenderMapTool.input.schema.js.map +1 -1
  150. package/dist/esm/tools/render-map-tool/RenderMapTool.js +51 -19
  151. package/dist/esm/tools/render-map-tool/RenderMapTool.js.map +1 -1
  152. package/dist/esm/tools/render-map-tool/RenderMapTool.output.schema.d.ts +50 -0
  153. package/dist/esm/tools/render-map-tool/RenderMapTool.output.schema.d.ts.map +1 -1
  154. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.d.ts.map +1 -1
  155. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.d.ts.map +1 -1
  156. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js +2 -2
  157. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js.map +1 -1
  158. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.js +4 -3
  159. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.js.map +1 -1
  160. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -1
  161. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js +3 -3
  162. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -1
  163. package/dist/esm/utils/index.d.ts +2 -0
  164. package/dist/esm/utils/index.d.ts.map +1 -1
  165. package/dist/esm/utils/index.js +6 -0
  166. package/dist/esm/utils/index.js.map +1 -1
  167. package/dist/esm/utils/jsonSchema2020.d.ts +26 -0
  168. package/dist/esm/utils/jsonSchema2020.d.ts.map +1 -0
  169. package/dist/esm/utils/jsonSchema2020.js +138 -0
  170. package/dist/esm/utils/jsonSchema2020.js.map +1 -0
  171. package/dist/esm/utils/jwtUtils.d.ts +48 -0
  172. package/dist/esm/utils/jwtUtils.d.ts.map +1 -1
  173. package/dist/esm/utils/jwtUtils.js +61 -0
  174. package/dist/esm/utils/jwtUtils.js.map +1 -1
  175. package/dist/esm/utils/mapAppPayload.d.ts +109 -0
  176. package/dist/esm/utils/mapAppPayload.d.ts.map +1 -1
  177. package/dist/esm/utils/mapAppPayload.js +38 -2
  178. package/dist/esm/utils/mapAppPayload.js.map +1 -1
  179. package/dist/esm/utils/selfFetchRef.d.ts.map +1 -1
  180. package/dist/esm/utils/selfFetchRef.js +31 -0
  181. package/dist/esm/utils/selfFetchRef.js.map +1 -1
  182. package/dist/esm/utils/serverInstructions.d.ts +12 -0
  183. package/dist/esm/utils/serverInstructions.d.ts.map +1 -0
  184. package/dist/esm/utils/serverInstructions.js +25 -0
  185. package/dist/esm/utils/serverInstructions.js.map +1 -0
  186. package/dist/esm/utils/storeMapPayload.d.ts +11 -11
  187. package/dist/esm/utils/storeMapPayload.d.ts.map +1 -1
  188. package/dist/esm/utils/storeMapPayload.js +14 -13
  189. package/dist/esm/utils/storeMapPayload.js.map +1 -1
  190. package/dist/esm/utils/temporaryResourceManager.d.ts +10 -4
  191. package/dist/esm/utils/temporaryResourceManager.d.ts.map +1 -1
  192. package/dist/esm/utils/temporaryResourceManager.js.map +1 -1
  193. package/dist/esm/utils/tracing.d.ts +4 -0
  194. package/dist/esm/utils/tracing.d.ts.map +1 -1
  195. package/dist/esm/utils/tracing.js +19 -0
  196. package/dist/esm/utils/tracing.js.map +1 -1
  197. package/dist/esm/version.json +3 -3
  198. package/package.json +2 -2
  199. package/patches/{@modelcontextprotocol+sdk+1.29.0.patch → @modelcontextprotocol+sdk+1.30.0.patch} +6 -2
package/README.md CHANGED
@@ -60,6 +60,17 @@ For detailed setup instructions for different integrations, refer to the followi
60
60
 
61
61
  Try these prompts with Claude Desktop or other MCP clients after setup:
62
62
 
63
+ ### Location Grounding
64
+
65
+ For coordinate-first queries — _"what's near me"_, _"what neighborhood is this"_, _"what's reachable in N minutes"_ — use `ground_location_tool`. It composes reverse geocoding, category search, and isochrone in a single call, adaptively choosing the right strategy based on the query, and returns typed records (names, addresses, coordinates, distances, reachability polygons) with citations.
66
+
67
+ Each of the four prompts below exercises a different strategy in one tool call:
68
+
69
+ - **Neighborhood** — _"What neighborhood is 47.6097, -122.3408, and what's around me?"_
70
+ - **POI** — _"Coffee shops within a 10-minute walk of 40.7580, -73.9855"_
71
+ - **Region** — _"What can I reach in a 15-minute walk from 37.7749, -122.4194?"_
72
+ - **Routing** — _"Closest routable point to drop someone off at 34.0522, -118.2437"_
73
+
63
74
  ### Location Discovery
64
75
 
65
76
  - "Find coffee shops within walking distance of the Empire State Building"
@@ -20,6 +20,8 @@ const resourceRegistry_js_1 = require("./resources/resourceRegistry.js");
20
20
  const promptRegistry_js_1 = require("./prompts/promptRegistry.js");
21
21
  const index_js_1 = require("./completions/index.js");
22
22
  const versionUtils_js_1 = require("./utils/versionUtils.js");
23
+ const jsonSchema2020_js_1 = require("./utils/jsonSchema2020.js");
24
+ const serverInstructions_js_1 = require("./utils/serverInstructions.js");
23
25
  const cli_js_1 = require("./cli.js");
24
26
  const tracing_js_1 = require("./utils/tracing.js");
25
27
  // Load .env from current working directory (where npm run is executed)
@@ -85,6 +87,11 @@ const server = new mcp_js_1.McpServer({
85
87
  }
86
88
  ]
87
89
  }, {
90
+ instructions: (0, serverInstructions_js_1.buildServerInstructions)([
91
+ ...enabledCoreTools,
92
+ ...enabledElicitationTools,
93
+ ...enabledResourceFallbackTools
94
+ ].map((tool) => tool.name)),
88
95
  capabilities: {
89
96
  tools: {
90
97
  listChanged: true // Advertise support for dynamic tool registration (ready for future capability-dependent tools)
@@ -95,6 +102,8 @@ const server = new mcp_js_1.McpServer({
95
102
  logging: {}
96
103
  }
97
104
  });
105
+ // Must run before the first tool is registered — see jsonSchema2020.ts.
106
+ (0, jsonSchema2020_js_1.publishJsonSchema2020)(server);
98
107
  // Register only core tools before connection
99
108
  // Capability-dependent tools will be registered dynamically after connection
100
109
  enabledCoreTools.forEach((tool) => {
@@ -206,6 +215,21 @@ async function main() {
206
215
  tracingError = error instanceof Error ? error : new Error(String(error));
207
216
  }
208
217
  }
218
+ // Registered before connect() so it's already in place the moment the
219
+ // client's initialize handshake completes. getClientCapabilities() and
220
+ // getClientVersion() are only populated once the server has processed the
221
+ // client's `initialize` request -- reading them synchronously right after
222
+ // `server.connect()` races that request and reliably sees them as unset,
223
+ // since connect() only waits for the transport to start, not for the
224
+ // handshake to finish.
225
+ server.server.oninitialized = () => {
226
+ onClientInitialized().catch((error) => {
227
+ server.server.sendLoggingMessage({
228
+ level: 'warning',
229
+ data: `Error handling client initialization: ${error instanceof Error ? error.message : String(error)}`
230
+ });
231
+ });
232
+ };
209
233
  // Start receiving messages on stdin and sending messages on stdout
210
234
  const transport = new stdio_js_1.StdioServerTransport();
211
235
  await server.connect(transport);
@@ -259,7 +283,20 @@ async function main() {
259
283
  level: 'debug',
260
284
  data: JSON.stringify(relevantEnvVars, null, 2)
261
285
  });
262
- // After connection, dynamically register capability-dependent tools
286
+ }
287
+ // Runs once per session, after the client's initialize handshake completes
288
+ // (see the `oninitialized` registration in main() for why that timing
289
+ // matters). Reports which client connected and registers any tools gated on
290
+ // capabilities the client declared during that handshake.
291
+ async function onClientInitialized() {
292
+ const clientInfo = server.server.getClientVersion();
293
+ server.server.sendLoggingMessage({
294
+ level: 'info',
295
+ data: `Client identified as: ${clientInfo?.name ?? 'unknown'} v${clientInfo?.version ?? 'unknown'}`
296
+ });
297
+ // Recorded so every subsequent tool-execution span carries it too --
298
+ // see setClientInfo's doc comment in tracing.ts.
299
+ (0, tracing_js_1.setClientInfo)(clientInfo);
263
300
  const clientCapabilities = server.server.getClientCapabilities();
264
301
  // Debug: Log what capabilities we detected
265
302
  server.server.sendLoggingMessage({
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,25 @@ export declare abstract class BaseResource {
9
9
  abstract readonly name: string;
10
10
  abstract readonly description?: string;
11
11
  abstract readonly mimeType?: string;
12
+ /**
13
+ * The most recently installed server. Used as a fallback when `read()` is
14
+ * called directly rather than through a handler registered by `installTo()`.
15
+ * A single instance installed into several servers only retains the last one,
16
+ * so code handling a read should use `activeServer` instead.
17
+ */
12
18
  protected server: McpServer | null;
19
+ /**
20
+ * The server whose registered handler is serving the current read. Scoped per
21
+ * invocation, so concurrent reads arriving through different servers each
22
+ * observe their own.
23
+ */
24
+ private readonly invocationServer;
25
+ /**
26
+ * The server a read should communicate with — the one that registered the
27
+ * handler serving it, falling back to the last installed server when `read()`
28
+ * is invoked outside a registered handler.
29
+ */
30
+ protected get activeServer(): McpServer | null;
13
31
  /**
14
32
  * Installs the resource to the given MCP server.
15
33
  */
@@ -1 +1 @@
1
- {"version":3,"file":"BaseResource.d.ts","sourceRoot":"","sources":["../../../src/resources/BaseResource.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,SAAS,EAEf,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,oCAAoC,CAAC;AAE5C;;GAEG;AACH,8BAAsB,YAAY;IAChC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAEpC,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAQ;IAE1C;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAoClC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CACX,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAC7D,OAAO,CAAC,kBAAkB,CAAC;IAE9B;;OAEG;IACH,SAAS,CAAC,GAAG,CACX,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,EAC7C,IAAI,EAAE,OAAO,GACZ,IAAI;CAKR"}
1
+ {"version":3,"file":"BaseResource.d.ts","sourceRoot":"","sources":["../../../src/resources/BaseResource.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,KAAK,SAAS,EAEf,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,kBAAkB,EACnB,MAAM,oCAAoC,CAAC;AAE5C;;GAEG;AACH,8BAAsB,YAAY;IAChC,QAAQ,CAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAEpC;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAQ;IAE1C;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsC;IAEvE;;;;OAIG;IACH,SAAS,KAAK,YAAY,IAAI,SAAS,GAAG,IAAI,CAE7C;IAED;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IA0ClC;;;;OAIG;IACH,QAAQ,CAAC,IAAI,CACX,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAC7D,OAAO,CAAC,kBAAkB,CAAC;IAE9B;;OAEG;IACH,SAAS,CAAC,GAAG,CACX,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,EAC7C,IAAI,EAAE,OAAO,GACZ,IAAI;CAMR"}
@@ -3,12 +3,33 @@
3
3
  // Licensed under the MIT License.
4
4
  Object.defineProperty(exports, "__esModule", { value: true });
5
5
  exports.BaseResource = void 0;
6
+ const node_async_hooks_1 = require("node:async_hooks");
6
7
  const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
7
8
  /**
8
9
  * Base class for all MCP resources
9
10
  */
10
11
  class BaseResource {
12
+ /**
13
+ * The most recently installed server. Used as a fallback when `read()` is
14
+ * called directly rather than through a handler registered by `installTo()`.
15
+ * A single instance installed into several servers only retains the last one,
16
+ * so code handling a read should use `activeServer` instead.
17
+ */
11
18
  server = null;
19
+ /**
20
+ * The server whose registered handler is serving the current read. Scoped per
21
+ * invocation, so concurrent reads arriving through different servers each
22
+ * observe their own.
23
+ */
24
+ invocationServer = new node_async_hooks_1.AsyncLocalStorage();
25
+ /**
26
+ * The server a read should communicate with — the one that registered the
27
+ * handler serving it, falling back to the last installed server when `read()`
28
+ * is invoked outside a registered handler.
29
+ */
30
+ get activeServer() {
31
+ return this.invocationServer.getStore() ?? this.server;
32
+ }
12
33
  /**
13
34
  * Installs the resource to the given MCP server.
14
35
  */
@@ -23,18 +44,19 @@ class BaseResource {
23
44
  // URI contains template variables — register as a ResourceTemplate so the
24
45
  // SDK performs proper URI template matching (e.g. mapbox://temp/{id}).
25
46
  const template = new mcp_js_1.ResourceTemplate(this.uri, { list: undefined });
26
- server.registerResource(this.name, template, metadata, (uri, _variables, extra) => this.read(uri.toString(), extra));
47
+ server.registerResource(this.name, template, metadata, (uri, _variables, extra) => this.invocationServer.run(server, () => this.read(uri.toString(), extra)));
27
48
  }
28
49
  else {
29
- server.registerResource(this.name, this.uri, metadata, (uri, extra) => this.read(uri.toString(), extra));
50
+ server.registerResource(this.name, this.uri, metadata, (uri, extra) => this.invocationServer.run(server, () => this.read(uri.toString(), extra)));
30
51
  }
31
52
  }
32
53
  /**
33
54
  * Helper method to send logging messages
34
55
  */
35
56
  log(level, data) {
36
- if (this.server?.server) {
37
- void this.server.server.sendLoggingMessage({ level, data });
57
+ const server = this.activeServer;
58
+ if (server?.server) {
59
+ void server.server.sendLoggingMessage({ level, data });
38
60
  }
39
61
  }
40
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"BaseResource.js","sourceRoot":"","sources":["../../../src/resources/BaseResource.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAElC,oEAGiD;AAQjD;;GAEG;AACH,MAAsB,YAAY;IAMtB,MAAM,GAAqB,IAAI,CAAC;IAE1C;;OAEG;IACH,SAAS,CAAC,MAAiB;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,QAAQ,GAAG;YACf,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;QAEF,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,0EAA0E;YAC1E,uEAAuE;YACvE,MAAM,QAAQ,GAAG,IAAI,yBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACrE,MAAM,CAAC,gBAAgB,CACrB,IAAI,CAAC,IAAI,EACT,QAAQ,EACR,QAAQ,EACR,CACE,GAAQ,EACR,UAA6C,EAC7C,KAA6D,EAC7D,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CACtC,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,gBAAgB,CACrB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,GAAG,EACR,QAAQ,EACR,CACE,GAAQ,EACR,KAA6D,EAC7D,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CACtC,CAAC;QACJ,CAAC;IACH,CAAC;IAYD;;OAEG;IACO,GAAG,CACX,KAA6C,EAC7C,IAAa;QAEb,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACxB,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;CACF;AApED,oCAoEC"}
1
+ {"version":3,"file":"BaseResource.js","sourceRoot":"","sources":["../../../src/resources/BaseResource.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAElC,uDAAqD;AACrD,oEAGiD;AAQjD;;GAEG;AACH,MAAsB,YAAY;IAMhC;;;;;OAKG;IACO,MAAM,GAAqB,IAAI,CAAC;IAE1C;;;;OAIG;IACc,gBAAgB,GAAG,IAAI,oCAAiB,EAAa,CAAC;IAEvE;;;;OAIG;IACH,IAAc,YAAY;QACxB,OAAO,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC;IACzD,CAAC;IAED;;OAEG;IACH,SAAS,CAAC,MAAiB;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,QAAQ,GAAG;YACf,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;QAEF,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,0EAA0E;YAC1E,uEAAuE;YACvE,MAAM,QAAQ,GAAG,IAAI,yBAAgB,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC;YACrE,MAAM,CAAC,gBAAgB,CACrB,IAAI,CAAC,IAAI,EACT,QAAQ,EACR,QAAQ,EACR,CACE,GAAQ,EACR,UAA6C,EAC7C,KAA6D,EAC7D,EAAE,CACF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CACjC,CACJ,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,gBAAgB,CACrB,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,GAAG,EACR,QAAQ,EACR,CACE,GAAQ,EACR,KAA6D,EAC7D,EAAE,CACF,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,CACrC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,CAAC,CACjC,CACJ,CAAC;QACJ,CAAC;IACH,CAAC;IAYD;;OAEG;IACO,GAAG,CACX,KAA6C,EAC7C,IAAa;QAEb,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC;QACjC,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF;AAjGD,oCAiGC"}
@@ -1 +1 @@
1
- {"version":3,"file":"TemporaryDataResource.d.ts","sourceRoot":"","sources":["../../../../src/resources/temporary/TemporaryDataResource.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACd,MAAM,oCAAoC,CAAC;AAI5C;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,QAAQ,CAAC,IAAI,oBAAoB;IACjC,QAAQ,CAAC,GAAG,wBAAwB;IACpC,QAAQ,CAAC,WAAW,yEACoD;IACxE,QAAQ,CAAC,QAAQ,sBAAsB;IAEjC,IAAI,CACR,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAC7D,OAAO,CAAC,kBAAkB,CAAC;CA8D/B"}
1
+ {"version":3,"file":"TemporaryDataResource.d.ts","sourceRoot":"","sources":["../../../../src/resources/temporary/TemporaryDataResource.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACd,MAAM,oCAAoC,CAAC;AAI5C;;;GAGG;AACH,qBAAa,qBAAsB,SAAQ,YAAY;IACrD,QAAQ,CAAC,IAAI,oBAAoB;IACjC,QAAQ,CAAC,GAAG,wBAAwB;IACpC,QAAQ,CAAC,WAAW,yEACoD;IACxE,QAAQ,CAAC,QAAQ,sBAAsB;IAEjC,IAAI,CACR,GAAG,EAAE,MAAM,EACX,KAAK,CAAC,EAAE,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAC7D,OAAO,CAAC,kBAAkB,CAAC;CA0E/B"}
@@ -29,24 +29,34 @@ class TemporaryDataResource extends BaseResource_js_1.BaseResource {
29
29
  if (!resource) {
30
30
  return notFound;
31
31
  }
32
- // Enforce per-account ownership: only the account that created the resource
33
- // may read it. Resolve the requester the same way tools resolve their token
34
- // (request auth first, then the env token). A mismatch returns the SAME
35
- // "not found" response as a missing resource, so a caller cannot probe
36
- // whether someone else's resource exists.
32
+ // Enforce ownership: only the token that created the resource may read it.
33
+ // Resolve the requester the same way tools resolve their token (request auth
34
+ // first, then the env token). A mismatch returns the SAME "not found"
35
+ // response as a missing resource, so a caller cannot probe whether someone
36
+ // else's resource exists.
37
+ //
38
+ // The owner key is a fingerprint of the token itself, never the `u`
39
+ // (username) claim. The claim is unsigned and unverifiable here, so scoping
40
+ // by username let anyone who knew a resource URI and a Mapbox username mint
41
+ // a garbage token asserting that name and read the resource. See
42
+ // getOwnerKeyFromToken for the full rationale and the per-token-vs-
43
+ // per-account tradeoff this accepts.
44
+ //
45
+ // This check stands on its own and does not assume the transport verified
46
+ // anything. A deployer wiring a caller-supplied bearer token into
47
+ // extra.authInfo.token — the pattern the MCP TypeScript SDK documents, where
48
+ // signature verification is the deployer's opt-in responsibility — is
49
+ // protected here either way.
37
50
  //
38
51
  // The env-token fallback is for stdio/single-user mode only. In hosted
39
52
  // multi-tenant deployments MAPBOX_ACCESS_TOKEN is NOT set and every request
40
53
  // carries its own bearer token via authInfo; the request token therefore
41
54
  // always wins and the env fallback never applies cross-tenant. Do not set a
42
55
  // shared MAPBOX_ACCESS_TOKEN in a multi-tenant deployment or all env-less
43
- // reads would resolve to that one account.
56
+ // reads would resolve to that one token.
44
57
  const requesterToken = extra?.authInfo?.token ??
45
58
  process.env.MAPBOX_ACCESS_TOKEN;
46
- const requester = requesterToken
47
- ? (0, jwtUtils_js_1.getUserNameFromToken)(requesterToken)
48
- : undefined;
49
- if (!resource.owner || !requester || resource.owner !== requester) {
59
+ if (!(0, jwtUtils_js_1.ownerKeyMatches)(resource.owner, (0, jwtUtils_js_1.getOwnerKeyFromToken)(requesterToken))) {
50
60
  return notFound;
51
61
  }
52
62
  // For image data, return as blob
@@ -1 +1 @@
1
- {"version":3,"file":"TemporaryDataResource.js","sourceRoot":"","sources":["../../../../src/resources/temporary/TemporaryDataResource.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAElC,wDAAkD;AAOlD,yFAAmF;AACnF,yDAA+D;AAE/D;;;GAGG;AACH,MAAa,qBAAsB,SAAQ,8BAAY;IAC5C,IAAI,GAAG,gBAAgB,CAAC;IACxB,GAAG,GAAG,oBAAoB,CAAC;IAC3B,WAAW,GAClB,qEAAqE,CAAC;IAC/D,QAAQ,GAAG,kBAAkB,CAAC;IAEvC,KAAK,CAAC,IAAI,CACR,GAAW,EACX,KAA8D;QAE9D,MAAM,QAAQ,GAAuB;YACnC,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,GAAG;oBACR,QAAQ,EAAE,YAAY;oBACtB,IAAI,EAAE,0EAA0E;iBACjF;aACF;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG,sDAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEnD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,4EAA4E;QAC5E,4EAA4E;QAC5E,wEAAwE;QACxE,uEAAuE;QACvE,0CAA0C;QAC1C,EAAE;QACF,uEAAuE;QACvE,4EAA4E;QAC5E,yEAAyE;QACzE,4EAA4E;QAC5E,0EAA0E;QAC1E,2CAA2C;QAC3C,MAAM,cAAc,GACjB,KAAK,EAAE,QAAQ,EAAE,KAA4B;YAC9C,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAClC,MAAM,SAAS,GAAG,cAAc;YAC9B,CAAC,CAAC,IAAA,kCAAoB,EAAC,cAAc,CAAC;YACtC,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,SAAS,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAClE,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,iCAAiC;QACjC,IAAI,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG;wBACH,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,IAAI,EAAE,QAAQ,CAAC,IAAc;qBAC9B;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,GAAG;oBACR,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC7C;aACF;SACF,CAAC;IACJ,CAAC;CACF;AAxED,sDAwEC"}
1
+ {"version":3,"file":"TemporaryDataResource.js","sourceRoot":"","sources":["../../../../src/resources/temporary/TemporaryDataResource.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAElC,wDAAkD;AAOlD,yFAAmF;AACnF,yDAAgF;AAEhF;;;GAGG;AACH,MAAa,qBAAsB,SAAQ,8BAAY;IAC5C,IAAI,GAAG,gBAAgB,CAAC;IACxB,GAAG,GAAG,oBAAoB,CAAC;IAC3B,WAAW,GAClB,qEAAqE,CAAC;IAC/D,QAAQ,GAAG,kBAAkB,CAAC;IAEvC,KAAK,CAAC,IAAI,CACR,GAAW,EACX,KAA8D;QAE9D,MAAM,QAAQ,GAAuB;YACnC,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,GAAG;oBACR,QAAQ,EAAE,YAAY;oBACtB,IAAI,EAAE,0EAA0E;iBACjF;aACF;SACF,CAAC;QAEF,MAAM,QAAQ,GAAG,sDAAwB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAEnD,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,2EAA2E;QAC3E,6EAA6E;QAC7E,sEAAsE;QACtE,2EAA2E;QAC3E,0BAA0B;QAC1B,EAAE;QACF,oEAAoE;QACpE,4EAA4E;QAC5E,4EAA4E;QAC5E,iEAAiE;QACjE,oEAAoE;QACpE,qCAAqC;QACrC,EAAE;QACF,0EAA0E;QAC1E,kEAAkE;QAClE,6EAA6E;QAC7E,sEAAsE;QACtE,6BAA6B;QAC7B,EAAE;QACF,uEAAuE;QACvE,4EAA4E;QAC5E,yEAAyE;QACzE,4EAA4E;QAC5E,0EAA0E;QAC1E,yCAAyC;QACzC,MAAM,cAAc,GACjB,KAAK,EAAE,QAAQ,EAAE,KAA4B;YAC9C,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;QAClC,IACE,CAAC,IAAA,6BAAe,EAAC,QAAQ,CAAC,KAAK,EAAE,IAAA,kCAAoB,EAAC,cAAc,CAAC,CAAC,EACtE,CAAC;YACD,OAAO,QAAQ,CAAC;QAClB,CAAC;QAED,iCAAiC;QACjC,IAAI,QAAQ,CAAC,QAAQ,EAAE,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5C,OAAO;gBACL,QAAQ,EAAE;oBACR;wBACE,GAAG;wBACH,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,IAAI,EAAE,QAAQ,CAAC,IAAc;qBAC9B;iBACF;aACF,CAAC;QACJ,CAAC;QAED,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,GAAG;oBACR,QAAQ,EAAE,IAAI,CAAC,QAAQ;oBACvB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;iBAC7C;aACF;SACF,CAAC;IACJ,CAAC;CACF;AApFD,sDAoFC"}
@@ -1 +1 @@
1
- {"version":3,"file":"MapAppUIResource.d.ts","sourceRoot":"","sources":["../../../../src/resources/ui-apps/MapAppUIResource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACd,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAIxD;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,QAAQ,CAAC,IAAI,uBAAuB;IACpC,QAAQ,CAAC,GAAG,oCAAoC;IAChD,QAAQ,CAAC,WAAW,iFAC4D;IAChF,QAAQ,CAAC,QAAQ,+BAAsB;IAEvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;gBAE/B,MAAM,EAAE;QAClB,WAAW,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;KAC5B;IAQK,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAC7D,OAAO,CAAC,kBAAkB,CAAC;CAwC/B"}
1
+ {"version":3,"file":"MapAppUIResource.d.ts","sourceRoot":"","sources":["../../../../src/resources/ui-apps/MapAppUIResource.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EACV,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACd,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAKxD;;;;;;;;GAQG;AACH,qBAAa,gBAAiB,SAAQ,YAAY;IAChD,QAAQ,CAAC,IAAI,uBAAuB;IACpC,QAAQ,CAAC,GAAG,oCAAoC;IAChD,QAAQ,CAAC,WAAW,iFAC4D;IAChF,QAAQ,CAAC,QAAQ,+BAAsB;IAEvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAe;gBAE/B,MAAM,EAAE;QAClB,WAAW,EAAE,WAAW,CAAC;QACzB,WAAW,CAAC,EAAE,MAAM,MAAM,CAAC;KAC5B;IAQK,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,mBAAmB,CAAC,aAAa,EAAE,kBAAkB,CAAC,GAC7D,OAAO,CAAC,kBAAkB,CAAC;CAiC/B"}
@@ -7,6 +7,7 @@ const server_1 = require("@modelcontextprotocol/ext-apps/server");
7
7
  const BaseResource_js_1 = require("../BaseResource.js");
8
8
  const mapboxPublicToken_js_1 = require("../../utils/mapboxPublicToken.js");
9
9
  const mapAppHtml_js_1 = require("./mapAppHtml.js");
10
+ const mapAppCsp_js_1 = require("./mapAppCsp.js");
10
11
  /**
11
12
  * Single Mapbox MCP App resource targeted by `render_map_tool`.
12
13
  *
@@ -51,14 +52,7 @@ class MapAppUIResource extends BaseResource_js_1.BaseResource {
51
52
  text: html,
52
53
  _meta: {
53
54
  ui: {
54
- csp: {
55
- connectDomains: [
56
- 'https://*.mapbox.com',
57
- 'https://events.mapbox.com'
58
- ],
59
- resourceDomains: ['https://api.mapbox.com'],
60
- workerDomains: ['blob:']
61
- },
55
+ csp: (0, mapAppCsp_js_1.mapAppCsp)(this.apiEndpoint()),
62
56
  preferredSize: { width: 1000, height: 600 }
63
57
  }
64
58
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MapAppUIResource.js","sourceRoot":"","sources":["../../../../src/resources/ui-apps/MapAppUIResource.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAQlC,kEAA2E;AAC3E,wDAAkD;AAElD,2EAA4E;AAC5E,mDAAmD;AAEnD;;;;;;;;GAQG;AACH,MAAa,gBAAiB,SAAQ,8BAAY;IACvC,IAAI,GAAG,mBAAmB,CAAC;IAC3B,GAAG,GAAG,gCAAgC,CAAC;IACvC,WAAW,GAClB,6EAA6E,CAAC;IACvE,QAAQ,GAAG,2BAAkB,CAAC;IAEtB,WAAW,CAAc;IACzB,WAAW,CAAe;IAE3C,YAAY,MAGX;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,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,CACR,IAAY,EACZ,KAA8D;QAE9D,MAAM,WAAW,GACd,KAAK,EAAE,QAAQ,EAAE,KAA4B;YAC9C,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAC/B,EAAE,CAAC;QAEL,MAAM,WAAW,GAAG,MAAM,IAAA,+CAAwB,EAAC;YACjD,WAAW;YACX,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAA,gCAAgB,EAAC;YAC5B,WAAW,EAAE,WAAW,IAAI,EAAE;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;SAChC,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,QAAQ,EAAE,2BAAkB;oBAC5B,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE;wBACL,EAAE,EAAE;4BACF,GAAG,EAAE;gCACH,cAAc,EAAE;oCACd,sBAAsB;oCACtB,2BAA2B;iCAC5B;gCACD,eAAe,EAAE,CAAC,wBAAwB,CAAC;gCAC3C,aAAa,EAAE,CAAC,OAAO,CAAC;6BACzB;4BACD,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;yBAC5C;qBACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;CACF;AAhED,4CAgEC"}
1
+ {"version":3,"file":"MapAppUIResource.js","sourceRoot":"","sources":["../../../../src/resources/ui-apps/MapAppUIResource.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;;AAQlC,kEAA2E;AAC3E,wDAAkD;AAElD,2EAA4E;AAC5E,mDAAmD;AACnD,iDAA2C;AAE3C;;;;;;;;GAQG;AACH,MAAa,gBAAiB,SAAQ,8BAAY;IACvC,IAAI,GAAG,mBAAmB,CAAC;IAC3B,GAAG,GAAG,gCAAgC,CAAC;IACvC,WAAW,GAClB,6EAA6E,CAAC;IACvE,QAAQ,GAAG,2BAAkB,CAAC;IAEtB,WAAW,CAAc;IACzB,WAAW,CAAe;IAE3C,YAAY,MAGX;QACC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,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,CACR,IAAY,EACZ,KAA8D;QAE9D,MAAM,WAAW,GACd,KAAK,EAAE,QAAQ,EAAE,KAA4B;YAC9C,OAAO,CAAC,GAAG,CAAC,mBAAmB;YAC/B,EAAE,CAAC;QAEL,MAAM,WAAW,GAAG,MAAM,IAAA,+CAAwB,EAAC;YACjD,WAAW;YACX,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;YAC/B,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAA,gCAAgB,EAAC;YAC5B,WAAW,EAAE,WAAW,IAAI,EAAE;YAC9B,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;SAChC,CAAC,CAAC;QAEH,OAAO;YACL,QAAQ,EAAE;gBACR;oBACE,GAAG,EAAE,IAAI,CAAC,GAAG;oBACb,QAAQ,EAAE,2BAAkB;oBAC5B,IAAI,EAAE,IAAI;oBACV,KAAK,EAAE;wBACL,EAAE,EAAE;4BACF,GAAG,EAAE,IAAA,wBAAS,EAAC,IAAI,CAAC,WAAW,EAAE,CAAC;4BAClC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;yBAC5C;qBACF;iBACF;aACF;SACF,CAAC;IACJ,CAAC;CACF;AAzDD,4CAyDC"}
@@ -0,0 +1,22 @@
1
+ export interface MapAppCsp {
2
+ connectDomains: string[];
3
+ resourceDomains: string[];
4
+ workerDomains: string[];
5
+ }
6
+ /**
7
+ * The exact origins the map app uses, for its MCP Apps CSP.
8
+ *
9
+ * Hosts compare the declared CSP against what the UI actually loads, and
10
+ * reviewers expect the narrowest list that works, so this names hosts instead
11
+ * of allowing all of `*.mapbox.com`:
12
+ *
13
+ * - GL JS loads its script and stylesheet, and fetches styles, tiles, sprites,
14
+ * glyphs and 3D models, from api.mapbox.com, and sends telemetry to
15
+ * events.mapbox.com (see Mapbox GL JS's CSP guide).
16
+ * - The page's own API calls (Directions, Isochrone, Search Box and so on) go to
17
+ * `apiEndpoint`, which `MAPBOX_API_ENDPOINT` can point somewhere else, so its
18
+ * origin is added when it differs.
19
+ * - GL JS runs its workers from `blob:` URLs.
20
+ */
21
+ export declare function mapAppCsp(apiEndpoint: string): MapAppCsp;
22
+ //# sourceMappingURL=mapAppCsp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapAppCsp.d.ts","sourceRoot":"","sources":["../../../../src/resources/ui-apps/mapAppCsp.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,SAAS;IACxB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAKD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAaxD"}
@@ -0,0 +1,39 @@
1
+ "use strict";
2
+ // Copyright (c) Mapbox, Inc.
3
+ // Licensed under the MIT License.
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.mapAppCsp = mapAppCsp;
6
+ const MAPBOX_API_ORIGIN = 'https://api.mapbox.com';
7
+ const MAPBOX_EVENTS_ORIGIN = 'https://events.mapbox.com';
8
+ /**
9
+ * The exact origins the map app uses, for its MCP Apps CSP.
10
+ *
11
+ * Hosts compare the declared CSP against what the UI actually loads, and
12
+ * reviewers expect the narrowest list that works, so this names hosts instead
13
+ * of allowing all of `*.mapbox.com`:
14
+ *
15
+ * - GL JS loads its script and stylesheet, and fetches styles, tiles, sprites,
16
+ * glyphs and 3D models, from api.mapbox.com, and sends telemetry to
17
+ * events.mapbox.com (see Mapbox GL JS's CSP guide).
18
+ * - The page's own API calls (Directions, Isochrone, Search Box and so on) go to
19
+ * `apiEndpoint`, which `MAPBOX_API_ENDPOINT` can point somewhere else, so its
20
+ * origin is added when it differs.
21
+ * - GL JS runs its workers from `blob:` URLs.
22
+ */
23
+ function mapAppCsp(apiEndpoint) {
24
+ const connectDomains = [MAPBOX_API_ORIGIN, MAPBOX_EVENTS_ORIGIN];
25
+ try {
26
+ const apiOrigin = new URL(apiEndpoint).origin;
27
+ if (!connectDomains.includes(apiOrigin))
28
+ connectDomains.push(apiOrigin);
29
+ }
30
+ catch {
31
+ // An endpoint that isn't a valid URL can't be reached by the page anyway.
32
+ }
33
+ return {
34
+ connectDomains,
35
+ resourceDomains: [MAPBOX_API_ORIGIN],
36
+ workerDomains: ['blob:']
37
+ };
38
+ }
39
+ //# sourceMappingURL=mapAppCsp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mapAppCsp.js","sourceRoot":"","sources":["../../../../src/resources/ui-apps/mapAppCsp.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;AA0BlC,8BAaC;AA/BD,MAAM,iBAAiB,GAAG,wBAAwB,CAAC;AACnD,MAAM,oBAAoB,GAAG,2BAA2B,CAAC;AAEzD;;;;;;;;;;;;;;GAcG;AACH,SAAgB,SAAS,CAAC,WAAmB;IAC3C,MAAM,cAAc,GAAG,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;QAC9C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,SAAS,CAAC;YAAE,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,0EAA0E;IAC5E,CAAC;IACD,OAAO;QACL,cAAc;QACd,eAAe,EAAE,CAAC,iBAAiB,CAAC;QACpC,aAAa,EAAE,CAAC,OAAO,CAAC;KACzB,CAAC;AACJ,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,CA6kDT"}
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,CA2oDT"}
@@ -98,6 +98,10 @@ ${initialDataScript}
98
98
  var map = null;
99
99
  var mapLoaded = false;
100
100
  var pendingPayload = null;
101
+ // Tracks which base style the map is currently constructed with, so a
102
+ // later render() can detect a baseStyle change and switch via setStyle()
103
+ // -- the style is otherwise only ever set once, at construction time.
104
+ var currentBaseStyleId = 'standard';
101
105
  var currentDisplayMode = 'inline';
102
106
 
103
107
  // Tracks what we've added so re-renders can tear down cleanly.
@@ -162,6 +166,23 @@ ${initialDataScript}
162
166
  );
163
167
 
164
168
  // --- Map setup ------------------------------------------------------------
169
+ var initialDataRead = false;
170
+ var initialData = null;
171
+
172
+ // Parses the #initial-data script tag once and caches the result — read
173
+ // before map construction (to seed the constructor's config option, so
174
+ // a baseMapConfig takes effect before first paint instead of flashing
175
+ // default colors) and again by consumeInitialData() after load.
176
+ function readInitialData() {
177
+ if (initialDataRead) return initialData;
178
+ initialDataRead = true;
179
+ var el = document.getElementById('initial-data');
180
+ if (el && el.textContent) {
181
+ try { initialData = JSON.parse(el.textContent); } catch (_) { /* ignore */ }
182
+ }
183
+ return initialData;
184
+ }
185
+
165
186
  function initMap() {
166
187
  if (!TOKEN) {
167
188
  showError('No Mapbox public token available. Set MAPBOX_PUBLIC_TOKEN or grant tokens:read to the OAuth client.');
@@ -172,12 +193,23 @@ ${initialDataScript}
172
193
  return;
173
194
  }
174
195
  mapboxgl.accessToken = TOKEN;
175
- map = new mapboxgl.Map({
196
+ var data = readInitialData();
197
+ // Allowlisted rather than interpolated directly, so an unrecognized
198
+ // value can never reach the style URL -- falls back to 'standard'.
199
+ var baseStyleId = (data && data.baseStyle === 'standard-satellite')
200
+ ? 'standard-satellite'
201
+ : 'standard';
202
+ currentBaseStyleId = baseStyleId;
203
+ var mapOptions = {
176
204
  container: 'map',
177
- style: 'mapbox://styles/mapbox/streets-v12',
205
+ style: 'mapbox://styles/mapbox/' + baseStyleId,
178
206
  center: [0, 20],
179
207
  zoom: 1.5
180
- });
208
+ };
209
+ if (data && data.baseMapConfig) {
210
+ mapOptions.config = { basemap: data.baseMapConfig };
211
+ }
212
+ map = new mapboxgl.Map(mapOptions);
181
213
  map.addControl(new mapboxgl.NavigationControl(), 'top-left');
182
214
  map.on('load', function() {
183
215
  mapLoaded = true;
@@ -192,12 +224,8 @@ ${initialDataScript}
192
224
  initMap();
193
225
 
194
226
  function consumeInitialData() {
195
- var el = document.getElementById('initial-data');
196
- if (!el || !el.textContent) return;
197
- try {
198
- var data = JSON.parse(el.textContent);
199
- if (data && Array.isArray(data.layers)) render(data);
200
- } catch (_) { /* ignore */ }
227
+ var data = readInitialData();
228
+ if (data && Array.isArray(data.layers)) render(data);
201
229
  }
202
230
 
203
231
  // --- Tool result extraction ----------------------------------------------
@@ -391,6 +419,7 @@ ${initialDataScript}
391
419
  };
392
420
  if (layer.paint) def.paint = layer.paint;
393
421
  if (layer.layout) def.layout = layer.layout;
422
+ if (layer.slot) def.slot = layer.slot;
394
423
  map.addLayer(def);
395
424
  trackedLayerIds.push(layer.id);
396
425
 
@@ -456,9 +485,37 @@ ${initialDataScript}
456
485
  if (bounds) fitToBounds(bounds);
457
486
  }
458
487
 
488
+ function applyBaseMapConfig(baseMapConfig) {
489
+ if (!baseMapConfig || typeof baseMapConfig !== 'object') return;
490
+ if (typeof map.setConfigProperty !== 'function') return;
491
+ Object.keys(baseMapConfig).forEach(function(key) {
492
+ try { map.setConfigProperty('basemap', key, baseMapConfig[key]); } catch (_) { /* not a Standard-based style */ }
493
+ });
494
+ }
495
+
459
496
  function render(payload) {
460
497
  if (!map) return;
498
+ // baseStyle is only otherwise applied at map-construction time (see
499
+ // initMap()) -- MapAppUIResource never seeds initial-data server-side,
500
+ // so every real render_map_tool call arrives here instead. Without this
501
+ // check, a later call passing baseStyle: "standard-satellite" would be
502
+ // silently ignored and the map would stay on whatever style it was
503
+ // constructed with (always "standard" in practice).
504
+ var desiredBaseStyleId = payload.baseStyle === 'standard-satellite'
505
+ ? 'standard-satellite'
506
+ : (payload.baseStyle === 'standard' ? 'standard' : null);
507
+ if (desiredBaseStyleId && desiredBaseStyleId !== currentBaseStyleId) {
508
+ currentBaseStyleId = desiredBaseStyleId;
509
+ map.setStyle('mapbox://styles/mapbox/' + desiredBaseStyleId);
510
+ map.once('style.load', function() { renderBody(payload); });
511
+ return;
512
+ }
513
+ renderBody(payload);
514
+ }
515
+
516
+ function renderBody(payload) {
461
517
  teardown();
518
+ applyBaseMapConfig(payload.baseMapConfig);
462
519
 
463
520
  var bbox = bboxAccumulator();
464
521
  var layers = Array.isArray(payload.layers) ? payload.layers : [];
@@ -829,6 +886,11 @@ ${initialDataScript}
829
886
  if (typeof params.profile !== 'string') return false;
830
887
  if (!/^mapbox\\/[a-z-]+$/.test(params.profile)) return false;
831
888
  }
889
+ // The Isochrone API requires one of these; a scalar (e.g. 15 instead
890
+ // of [15]) would be silently dropped by buildIsochroneApiUrl.
891
+ var hasMinutes = Array.isArray(params.contours_minutes) && params.contours_minutes.length > 0;
892
+ var hasMeters = Array.isArray(params.contours_meters) && params.contours_meters.length > 0;
893
+ if (!hasMinutes && !hasMeters) return false;
832
894
  return true;
833
895
  }
834
896
 
@@ -1 +1 @@
1
- {"version":3,"file":"mapAppHtml.js","sourceRoot":"","sources":["../../../../src/resources/ui-apps/mapAppHtml.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mapAppHtml.js","sourceRoot":"","sources":["../../../../src/resources/ui-apps/mapAppHtml.ts"],"names":[],"mappings":"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"}
@@ -15,10 +15,29 @@ export declare abstract class BaseTool<InputSchema extends ZodTypeAny, OutputSch
15
15
  connectDomains?: string[];
16
16
  resourceDomains?: string[];
17
17
  frameDomains?: string[];
18
+ workerDomains?: string[];
18
19
  };
19
20
  };
20
21
  };
22
+ /**
23
+ * The most recently installed server. Used as a fallback when `run()` is
24
+ * called directly rather than through a callback registered by `installTo()`.
25
+ * A single instance installed into several servers only retains the last one,
26
+ * so code handling a tool call should read `activeServer` instead.
27
+ */
21
28
  protected server: McpServer | null;
29
+ /**
30
+ * The server whose registered callback is handling the current tool call.
31
+ * Scoped per invocation, so concurrent calls arriving through different
32
+ * servers each observe their own.
33
+ */
34
+ private readonly invocationServer;
35
+ /**
36
+ * The server a tool call should communicate with — the one that registered
37
+ * the callback handling it, falling back to the last installed server when
38
+ * `run()` is invoked outside a registered callback.
39
+ */
40
+ protected get activeServer(): McpServer | null;
22
41
  constructor(params: {
23
42
  inputSchema: InputSchema;
24
43
  outputSchema?: OutputSchema;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseTool.d.ts","sourceRoot":"","sources":["../../../src/tools/BaseTool.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACf,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACf,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACxF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAGtC,8BAAsB,QAAQ,CAC5B,WAAW,SAAS,UAAU,EAC9B,YAAY,SAAS,UAAU,GAAG,UAAU;IAE5C,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IAE/C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,EAAE,CAAC,EAAE;YACH,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,GAAG,CAAC,EAAE;gBACJ,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;gBAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;gBAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;aACzB,CAAC;SACH,CAAC;KACH,CAAC;IACF,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAQ;gBAE9B,MAAM,EAAE;QAClB,WAAW,EAAE,WAAW,CAAC;QACzB,YAAY,CAAC,EAAE,YAAY,CAAC;KAC7B;IAKD;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc;IAiD5C;;OAEG;IACH,QAAQ,CAAC,GAAG,CACV,QAAQ,EAAE,OAAO,EAEjB,KAAK,CAAC,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,GACpC,OAAO,CAAC,cAAc,CAAC;IAE1B;;OAEG;IACH,SAAS,CAAC,GAAG,CACX,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,EAC7C,IAAI,EAAE,OAAO,GACZ,IAAI;IAMP;;;;;OAKG;IACH,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC;CAgBjD"}
1
+ {"version":3,"file":"BaseTool.d.ts","sourceRoot":"","sources":["../../../src/tools/BaseTool.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,SAAS,EACT,cAAc,EACf,MAAM,yCAAyC,CAAC;AACjD,OAAO,KAAK,EACV,eAAe,EACf,cAAc,EACf,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AAExF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAGtC,8BAAsB,QAAQ,CAC5B,WAAW,SAAS,UAAU,EAC9B,YAAY,SAAS,UAAU,GAAG,UAAU;IAE5C,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IAE/C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE;QACd,EAAE,CAAC,EAAE;YACH,WAAW,CAAC,EAAE,MAAM,CAAC;YACrB,GAAG,CAAC,EAAE;gBACJ,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;gBAC1B,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;gBAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;gBACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;aAC1B,CAAC;SACH,CAAC;KACH,CAAC;IACF;;;;;OAKG;IACH,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAQ;IAE1C;;;;OAIG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAsC;IAEvE;;;;OAIG;IACH,SAAS,KAAK,YAAY,IAAI,SAAS,GAAG,IAAI,CAE7C;gBAEW,MAAM,EAAE;QAClB,WAAW,EAAE,WAAW,CAAC;QACzB,YAAY,CAAC,EAAE,YAAY,CAAC;KAC7B;IAKD;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc;IAmD5C;;OAEG;IACH,QAAQ,CAAC,GAAG,CACV,QAAQ,EAAE,OAAO,EAEjB,KAAK,CAAC,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,GACpC,OAAO,CAAC,cAAc,CAAC;IAE1B;;OAEG;IACH,SAAS,CAAC,GAAG,CACX,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,EAC7C,IAAI,EAAE,OAAO,GACZ,IAAI;IAOP;;;;;OAKG;IACH,SAAS,CAAC,cAAc,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,GAAG,CAAC;CAgBjD"}