@mapbox/mcp-server 0.2.3 → 0.4.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 (251) hide show
  1. package/LICENSE.md +10 -4
  2. package/README.md +10 -10
  3. package/dist/commonjs/config/toolConfig.d.ts +8 -0
  4. package/dist/commonjs/config/toolConfig.d.ts.map +1 -0
  5. package/dist/commonjs/config/toolConfig.js +40 -0
  6. package/dist/commonjs/config/toolConfig.js.map +1 -0
  7. package/dist/commonjs/index.d.ts +2 -0
  8. package/dist/{index.d.ts.map → commonjs/index.d.ts.map} +1 -1
  9. package/dist/commonjs/index.js +38 -0
  10. package/dist/commonjs/index.js.map +1 -0
  11. package/dist/{cjs → commonjs}/package.json +1 -1
  12. package/dist/{tools → commonjs/tools}/MapboxApiBasedTool.d.ts +9 -8
  13. package/dist/commonjs/tools/MapboxApiBasedTool.d.ts.map +1 -0
  14. package/dist/commonjs/tools/MapboxApiBasedTool.js +111 -0
  15. package/dist/commonjs/tools/MapboxApiBasedTool.js.map +1 -0
  16. package/dist/commonjs/tools/category-list-tool/CategoryListTool.d.ts +28 -0
  17. package/dist/commonjs/tools/category-list-tool/CategoryListTool.d.ts.map +1 -0
  18. package/dist/commonjs/tools/category-list-tool/CategoryListTool.js +68 -0
  19. package/dist/commonjs/tools/category-list-tool/CategoryListTool.js.map +1 -0
  20. package/dist/{tools → commonjs/tools}/category-search-tool/CategorySearchTool.d.ts +6 -5
  21. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.d.ts.map +1 -0
  22. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.js +188 -0
  23. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.js.map +1 -0
  24. package/dist/{tools → commonjs/tools}/directions-tool/DirectionsTool.d.ts +3 -2
  25. package/dist/commonjs/tools/directions-tool/DirectionsTool.d.ts.map +1 -0
  26. package/dist/commonjs/tools/directions-tool/DirectionsTool.js +385 -0
  27. package/dist/commonjs/tools/directions-tool/DirectionsTool.js.map +1 -0
  28. package/dist/commonjs/tools/directions-tool/cleanResponseData.d.ts.map +1 -0
  29. package/dist/commonjs/tools/directions-tool/cleanResponseData.js +178 -0
  30. package/dist/commonjs/tools/directions-tool/cleanResponseData.js.map +1 -0
  31. package/dist/commonjs/tools/directions-tool/formatIsoDateTime.d.ts.map +1 -0
  32. package/dist/commonjs/tools/directions-tool/formatIsoDateTime.js +21 -0
  33. package/dist/commonjs/tools/directions-tool/formatIsoDateTime.js.map +1 -0
  34. package/dist/{tools → commonjs/tools}/forward-geocode-tool/ForwardGeocodeTool.d.ts +5 -4
  35. package/dist/commonjs/tools/forward-geocode-tool/ForwardGeocodeTool.d.ts.map +1 -0
  36. package/dist/commonjs/tools/forward-geocode-tool/ForwardGeocodeTool.js +212 -0
  37. package/dist/commonjs/tools/forward-geocode-tool/ForwardGeocodeTool.js.map +1 -0
  38. package/dist/{tools → commonjs/tools}/isochrone-tool/IsochroneTool.d.ts +3 -2
  39. package/dist/commonjs/tools/isochrone-tool/IsochroneTool.d.ts.map +1 -0
  40. package/dist/commonjs/tools/isochrone-tool/IsochroneTool.js +118 -0
  41. package/dist/commonjs/tools/isochrone-tool/IsochroneTool.js.map +1 -0
  42. package/dist/{tools → commonjs/tools}/matrix-tool/MatrixTool.d.ts +3 -2
  43. package/dist/commonjs/tools/matrix-tool/MatrixTool.d.ts.map +1 -0
  44. package/dist/commonjs/tools/matrix-tool/MatrixTool.js +202 -0
  45. package/dist/commonjs/tools/matrix-tool/MatrixTool.js.map +1 -0
  46. package/dist/{tools → commonjs/tools}/poi-search-tool/PoiSearchTool.d.ts +5 -4
  47. package/dist/commonjs/tools/poi-search-tool/PoiSearchTool.d.ts.map +1 -0
  48. package/dist/commonjs/tools/poi-search-tool/PoiSearchTool.js +231 -0
  49. package/dist/commonjs/tools/poi-search-tool/PoiSearchTool.js.map +1 -0
  50. package/dist/{tools → commonjs/tools}/reverse-geocode-tool/ReverseGeocodeTool.d.ts +5 -4
  51. package/dist/commonjs/tools/reverse-geocode-tool/ReverseGeocodeTool.d.ts.map +1 -0
  52. package/dist/commonjs/tools/reverse-geocode-tool/ReverseGeocodeTool.js +148 -0
  53. package/dist/commonjs/tools/reverse-geocode-tool/ReverseGeocodeTool.js.map +1 -0
  54. package/dist/{tools → commonjs/tools}/static-map-image-tool/StaticMapImageTool.d.ts +3 -2
  55. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -0
  56. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js +416 -0
  57. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -0
  58. package/dist/{tools → commonjs/tools}/toolRegistry.d.ts +2 -1
  59. package/dist/commonjs/tools/toolRegistry.d.ts.map +1 -0
  60. package/dist/commonjs/tools/toolRegistry.js +37 -0
  61. package/dist/commonjs/tools/toolRegistry.js.map +1 -0
  62. package/dist/{tools → commonjs/tools}/version-tool/VersionTool.d.ts +2 -2
  63. package/dist/commonjs/tools/version-tool/VersionTool.d.ts.map +1 -0
  64. package/dist/commonjs/tools/version-tool/VersionTool.js +52 -0
  65. package/dist/commonjs/tools/version-tool/VersionTool.js.map +1 -0
  66. package/dist/commonjs/utils/fetchRequest.d.ts +38 -0
  67. package/dist/commonjs/utils/fetchRequest.d.ts.map +1 -0
  68. package/dist/commonjs/utils/fetchRequest.js +111 -0
  69. package/dist/commonjs/utils/fetchRequest.js.map +1 -0
  70. package/dist/commonjs/utils/versionUtils-cjs.cjs.map +1 -0
  71. package/dist/commonjs/utils/versionUtils-cjs.d.cts.map +1 -0
  72. package/dist/commonjs/utils/versionUtils.d.ts +9 -0
  73. package/dist/commonjs/utils/versionUtils.js +46 -0
  74. package/dist/commonjs/version.json +6 -0
  75. package/dist/esm/config/toolConfig.d.ts +8 -0
  76. package/dist/esm/config/toolConfig.d.ts.map +1 -0
  77. package/dist/esm/config/toolConfig.js +36 -0
  78. package/dist/esm/config/toolConfig.js.map +1 -0
  79. package/dist/esm/index.d.ts +2 -0
  80. package/dist/esm/index.d.ts.map +1 -0
  81. package/dist/esm/index.js +36 -0
  82. package/dist/esm/index.js.map +1 -0
  83. package/dist/esm/package.json +1 -1
  84. package/dist/esm/tools/MapboxApiBasedTool.d.ts +83 -0
  85. package/dist/esm/tools/MapboxApiBasedTool.d.ts.map +1 -0
  86. package/dist/{tools → esm/tools}/MapboxApiBasedTool.js +24 -17
  87. package/dist/esm/tools/MapboxApiBasedTool.js.map +1 -0
  88. package/dist/esm/tools/category-list-tool/CategoryListTool.d.ts +28 -0
  89. package/dist/esm/tools/category-list-tool/CategoryListTool.d.ts.map +1 -0
  90. package/dist/esm/tools/category-list-tool/CategoryListTool.js +64 -0
  91. package/dist/esm/tools/category-list-tool/CategoryListTool.js.map +1 -0
  92. package/dist/esm/tools/category-search-tool/CategorySearchTool.d.ts +89 -0
  93. package/dist/esm/tools/category-search-tool/CategorySearchTool.d.ts.map +1 -0
  94. package/dist/esm/tools/category-search-tool/CategorySearchTool.js +184 -0
  95. package/dist/esm/tools/category-search-tool/CategorySearchTool.js.map +1 -0
  96. package/dist/esm/tools/directions-tool/DirectionsTool.d.ts +44 -0
  97. package/dist/esm/tools/directions-tool/DirectionsTool.d.ts.map +1 -0
  98. package/dist/{tools → esm/tools}/directions-tool/DirectionsTool.js +9 -8
  99. package/dist/esm/tools/directions-tool/DirectionsTool.js.map +1 -0
  100. package/dist/esm/tools/directions-tool/cleanResponseData.d.ts +11 -0
  101. package/dist/esm/tools/directions-tool/cleanResponseData.d.ts.map +1 -0
  102. package/dist/esm/tools/directions-tool/cleanResponseData.js.map +1 -0
  103. package/dist/esm/tools/directions-tool/formatIsoDateTime.d.ts +8 -0
  104. package/dist/esm/tools/directions-tool/formatIsoDateTime.d.ts.map +1 -0
  105. package/dist/esm/tools/directions-tool/formatIsoDateTime.js.map +1 -0
  106. package/dist/esm/tools/forward-geocode-tool/ForwardGeocodeTool.d.ts +98 -0
  107. package/dist/esm/tools/forward-geocode-tool/ForwardGeocodeTool.d.ts.map +1 -0
  108. package/dist/{tools → esm/tools}/forward-geocode-tool/ForwardGeocodeTool.js +8 -5
  109. package/dist/esm/tools/forward-geocode-tool/ForwardGeocodeTool.js.map +1 -0
  110. package/dist/esm/tools/isochrone-tool/IsochroneTool.d.ts +60 -0
  111. package/dist/esm/tools/isochrone-tool/IsochroneTool.d.ts.map +1 -0
  112. package/dist/{tools → esm/tools}/isochrone-tool/IsochroneTool.js +8 -5
  113. package/dist/esm/tools/isochrone-tool/IsochroneTool.js.map +1 -0
  114. package/dist/esm/tools/matrix-tool/MatrixTool.d.ts +51 -0
  115. package/dist/esm/tools/matrix-tool/MatrixTool.d.ts.map +1 -0
  116. package/dist/{tools → esm/tools}/matrix-tool/MatrixTool.js +8 -5
  117. package/dist/{tools → esm/tools}/matrix-tool/MatrixTool.js.map +1 -1
  118. package/dist/esm/tools/poi-search-tool/PoiSearchTool.d.ts +119 -0
  119. package/dist/esm/tools/poi-search-tool/PoiSearchTool.d.ts.map +1 -0
  120. package/dist/{tools → esm/tools}/poi-search-tool/PoiSearchTool.js +9 -6
  121. package/dist/esm/tools/poi-search-tool/PoiSearchTool.js.map +1 -0
  122. package/dist/esm/tools/reverse-geocode-tool/ReverseGeocodeTool.d.ts +46 -0
  123. package/dist/esm/tools/reverse-geocode-tool/ReverseGeocodeTool.d.ts.map +1 -0
  124. package/dist/{tools → esm/tools}/reverse-geocode-tool/ReverseGeocodeTool.js +8 -5
  125. package/dist/esm/tools/reverse-geocode-tool/ReverseGeocodeTool.js.map +1 -0
  126. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.d.ts +179 -0
  127. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -0
  128. package/dist/{tools → esm/tools}/static-map-image-tool/StaticMapImageTool.js +7 -4
  129. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -0
  130. package/dist/esm/tools/toolRegistry.d.ts +15 -0
  131. package/dist/esm/tools/toolRegistry.d.ts.map +1 -0
  132. package/dist/{tools → esm/tools}/toolRegistry.js +2 -0
  133. package/dist/esm/tools/toolRegistry.js.map +1 -0
  134. package/dist/esm/tools/version-tool/VersionTool.d.ts +18 -0
  135. package/dist/esm/tools/version-tool/VersionTool.d.ts.map +1 -0
  136. package/dist/{tools → esm/tools}/version-tool/VersionTool.js +4 -6
  137. package/dist/esm/tools/version-tool/VersionTool.js.map +1 -0
  138. package/dist/esm/utils/fetchRequest.d.ts +38 -0
  139. package/dist/esm/utils/fetchRequest.d.ts.map +1 -0
  140. package/dist/esm/utils/fetchRequest.js +105 -0
  141. package/dist/esm/utils/fetchRequest.js.map +1 -0
  142. package/dist/esm/utils/versionUtils.d.ts.map +1 -0
  143. package/dist/{utils → esm/utils}/versionUtils.js +4 -2
  144. package/dist/esm/utils/versionUtils.js.map +1 -0
  145. package/dist/esm/version.json +6 -0
  146. package/package.json +45 -30
  147. package/dist/index.d.ts +0 -2
  148. package/dist/index.js +0 -25
  149. package/dist/index.js.map +0 -1
  150. package/dist/tools/MapboxApiBasedTool.d.ts.map +0 -1
  151. package/dist/tools/MapboxApiBasedTool.js.map +0 -1
  152. package/dist/tools/MapboxApiBasedTool.test.d.ts +0 -2
  153. package/dist/tools/MapboxApiBasedTool.test.d.ts.map +0 -1
  154. package/dist/tools/MapboxApiBasedTool.test.js +0 -143
  155. package/dist/tools/MapboxApiBasedTool.test.js.map +0 -1
  156. package/dist/tools/category-search-tool/CategorySearchTool.d.ts.map +0 -1
  157. package/dist/tools/category-search-tool/CategorySearchTool.js +0 -666
  158. package/dist/tools/category-search-tool/CategorySearchTool.js.map +0 -1
  159. package/dist/tools/category-search-tool/CategorySearchTool.test.d.ts +0 -2
  160. package/dist/tools/category-search-tool/CategorySearchTool.test.d.ts.map +0 -1
  161. package/dist/tools/category-search-tool/CategorySearchTool.test.js +0 -369
  162. package/dist/tools/category-search-tool/CategorySearchTool.test.js.map +0 -1
  163. package/dist/tools/directions-tool/DirectionsTool.d.ts.map +0 -1
  164. package/dist/tools/directions-tool/DirectionsTool.js.map +0 -1
  165. package/dist/tools/directions-tool/DirectionsTool.test.d.ts +0 -2
  166. package/dist/tools/directions-tool/DirectionsTool.test.d.ts.map +0 -1
  167. package/dist/tools/directions-tool/DirectionsTool.test.js +0 -822
  168. package/dist/tools/directions-tool/DirectionsTool.test.js.map +0 -1
  169. package/dist/tools/directions-tool/cleanResponseData.d.ts.map +0 -1
  170. package/dist/tools/directions-tool/cleanResponseData.js.map +0 -1
  171. package/dist/tools/directions-tool/cleanResponseData.test.d.ts +0 -2
  172. package/dist/tools/directions-tool/cleanResponseData.test.d.ts.map +0 -1
  173. package/dist/tools/directions-tool/cleanResponseData.test.js +0 -295
  174. package/dist/tools/directions-tool/cleanResponseData.test.js.map +0 -1
  175. package/dist/tools/directions-tool/formatIsoDateTime.d.ts.map +0 -1
  176. package/dist/tools/directions-tool/formatIsoDateTime.js.map +0 -1
  177. package/dist/tools/directions-tool/formatIsoDateTime.test.d.ts +0 -2
  178. package/dist/tools/directions-tool/formatIsoDateTime.test.d.ts.map +0 -1
  179. package/dist/tools/directions-tool/formatIsoDateTime.test.js +0 -26
  180. package/dist/tools/directions-tool/formatIsoDateTime.test.js.map +0 -1
  181. package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.d.ts.map +0 -1
  182. package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.js.map +0 -1
  183. package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.d.ts +0 -2
  184. package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.d.ts.map +0 -1
  185. package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.js +0 -415
  186. package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.js.map +0 -1
  187. package/dist/tools/isochrone-tool/IsochroneTool.d.ts.map +0 -1
  188. package/dist/tools/isochrone-tool/IsochroneTool.js.map +0 -1
  189. package/dist/tools/isochrone-tool/IsochroneTool.test.d.ts +0 -2
  190. package/dist/tools/isochrone-tool/IsochroneTool.test.d.ts.map +0 -1
  191. package/dist/tools/isochrone-tool/IsochroneTool.test.js +0 -111
  192. package/dist/tools/isochrone-tool/IsochroneTool.test.js.map +0 -1
  193. package/dist/tools/matrix-tool/MatrixTool.d.ts.map +0 -1
  194. package/dist/tools/matrix-tool/MatrixTool.test.d.ts +0 -2
  195. package/dist/tools/matrix-tool/MatrixTool.test.d.ts.map +0 -1
  196. package/dist/tools/matrix-tool/MatrixTool.test.js +0 -816
  197. package/dist/tools/matrix-tool/MatrixTool.test.js.map +0 -1
  198. package/dist/tools/poi-search-tool/PoiSearchTool.d.ts.map +0 -1
  199. package/dist/tools/poi-search-tool/PoiSearchTool.js.map +0 -1
  200. package/dist/tools/poi-search-tool/PoiSearchTool.test.d.ts +0 -2
  201. package/dist/tools/poi-search-tool/PoiSearchTool.test.d.ts.map +0 -1
  202. package/dist/tools/poi-search-tool/PoiSearchTool.test.js +0 -418
  203. package/dist/tools/poi-search-tool/PoiSearchTool.test.js.map +0 -1
  204. package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.d.ts.map +0 -1
  205. package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.js.map +0 -1
  206. package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.d.ts +0 -2
  207. package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.d.ts.map +0 -1
  208. package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.js +0 -403
  209. package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.js.map +0 -1
  210. package/dist/tools/schema-validation.test.d.ts +0 -2
  211. package/dist/tools/schema-validation.test.d.ts.map +0 -1
  212. package/dist/tools/schema-validation.test.js +0 -75
  213. package/dist/tools/schema-validation.test.js.map +0 -1
  214. package/dist/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +0 -1
  215. package/dist/tools/static-map-image-tool/StaticMapImageTool.js.map +0 -1
  216. package/dist/tools/static-map-image-tool/StaticMapImageTool.test.d.ts +0 -2
  217. package/dist/tools/static-map-image-tool/StaticMapImageTool.test.d.ts.map +0 -1
  218. package/dist/tools/static-map-image-tool/StaticMapImageTool.test.js +0 -441
  219. package/dist/tools/static-map-image-tool/StaticMapImageTool.test.js.map +0 -1
  220. package/dist/tools/tool-naming-convention.test.d.ts +0 -2
  221. package/dist/tools/tool-naming-convention.test.d.ts.map +0 -1
  222. package/dist/tools/tool-naming-convention.test.js +0 -43
  223. package/dist/tools/tool-naming-convention.test.js.map +0 -1
  224. package/dist/tools/toolRegistry.d.ts.map +0 -1
  225. package/dist/tools/toolRegistry.js.map +0 -1
  226. package/dist/tools/version-tool/VersionTool.d.ts.map +0 -1
  227. package/dist/tools/version-tool/VersionTool.js.map +0 -1
  228. package/dist/tools/version-tool/VersionTool.test.d.ts +0 -2
  229. package/dist/tools/version-tool/VersionTool.test.d.ts.map +0 -1
  230. package/dist/tools/version-tool/VersionTool.test.js +0 -49
  231. package/dist/tools/version-tool/VersionTool.test.js.map +0 -1
  232. package/dist/utils/requestUtils.d.ts +0 -6
  233. package/dist/utils/requestUtils.d.ts.map +0 -1
  234. package/dist/utils/requestUtils.js +0 -60
  235. package/dist/utils/requestUtils.js.map +0 -1
  236. package/dist/utils/requestUtils.test-helpers.d.ts +0 -3
  237. package/dist/utils/requestUtils.test-helpers.d.ts.map +0 -1
  238. package/dist/utils/requestUtils.test-helpers.js +0 -32
  239. package/dist/utils/requestUtils.test-helpers.js.map +0 -1
  240. package/dist/utils/requestUtils.test.d.ts +0 -2
  241. package/dist/utils/requestUtils.test.d.ts.map +0 -1
  242. package/dist/utils/requestUtils.test.js +0 -115
  243. package/dist/utils/requestUtils.test.js.map +0 -1
  244. package/dist/utils/versionUtils.d.ts.map +0 -1
  245. package/dist/utils/versionUtils.js.map +0 -1
  246. package/dist/version.json +0 -6
  247. /package/dist/{tools → commonjs/tools}/directions-tool/cleanResponseData.d.ts +0 -0
  248. /package/dist/{tools → commonjs/tools}/directions-tool/formatIsoDateTime.d.ts +0 -0
  249. /package/dist/{tools → esm/tools}/directions-tool/cleanResponseData.js +0 -0
  250. /package/dist/{tools → esm/tools}/directions-tool/formatIsoDateTime.js +0 -0
  251. /package/dist/{utils → esm/utils}/versionUtils.d.ts +0 -0
package/LICENSE.md CHANGED
@@ -1,7 +1,13 @@
1
- ### License
1
+ BSD 3-Clause License
2
2
 
3
- Mapbox MCP Server
3
+ Copyright (c) 2025, Mapbox, Inc. All rights reserved.
4
4
 
5
- Copyright © 2025 Mapbox, Inc. All rights reserved.
5
+ Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
6
6
 
7
- The software and files in this repository (collectively, “Software”) are licensed under the Mapbox TOS for use only with the relevant Mapbox product(s) listed at www.mapbox.com/pricing. This license allows developers with a current active Mapbox account to use and modify the authorized portions of the Software as needed for use only with the relevant Mapbox product(s) through their Mapbox account in accordance with the Mapbox TOS. This license terminates automatically if a developer no longer has a Mapbox account in good standing or breaches the Mapbox TOS. For the license terms, please see the Mapbox TOS at https://www.mapbox.com/legal/tos/ which incorporates the Mapbox Product Terms at www.mapbox.com/legal/service-terms. If this Software is a SDK, modifications that change or interfere with marked portions of the code related to billing, accounting, or data collection are not authorized and the SDK sends limited de-identified location and usage data which is used in accordance with the Mapbox TOS. [Updated 2023-01]
7
+ Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
8
+
9
+ Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
10
+
11
+ Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
12
+
13
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
package/README.md CHANGED
@@ -23,6 +23,14 @@ Whether you're building an AI travel assistant, logistics optimizer, location-ba
23
23
 
24
24
  **A Mapbox access token is required to use this MCP server.**
25
25
 
26
+ ## Hosted MCP Endpoint
27
+
28
+ For quick access, you can use our hosted MCP endpoint:
29
+
30
+ **Endpoint**: https://mcp.mapbox.com/mcp
31
+
32
+ For detailed setup instructions for different clients and API usage, see the [Hosted MCP Server Guide](./docs/hosted-mcp-guide.md).
33
+
26
34
  To get a Mapbox access token:
27
35
 
28
36
  1. Sign up for a free Mapbox account at [mapbox.com/signup](https://www.mapbox.com/signup/)
@@ -178,7 +186,7 @@ Computes areas that are reachable within a specified amount of times from a loca
178
186
  npm run build
179
187
 
180
188
  # Inspect
181
- npx @modelcontextprotocol/inspector node dist/index.js
189
+ npx @modelcontextprotocol/inspector node dist/esm/index.js
182
190
  ```
183
191
 
184
192
  ### Using Docker
@@ -198,14 +206,6 @@ npx plop create-tool
198
206
  # provide tool name without suffix (e.g. Search)
199
207
  ```
200
208
 
201
- ## Environment Variables
202
-
203
- ### VERBOSE_ERRORS
204
-
205
- Set `VERBOSE_ERRORS=true` to get detailed error messages from the MCP server. This is useful for debugging issues when integrating with MCP clients.
206
-
207
- By default, the server returns generic error messages. With verbose errors enabled, you'll receive the actual error details, which can help diagnose API connection issues, invalid parameters, or other problems.
208
-
209
209
  ## Data Usage & Privacy
210
210
 
211
211
  ### What data is sent to Mapbox APIs
@@ -256,4 +256,4 @@ This MCP server is officially maintained by Mapbox, Inc. We provide:
256
256
 
257
257
  ---
258
258
 
259
- [License](LICENSE.md)
259
+ [BSD 3-Clause License](LICENSE.md)
@@ -0,0 +1,8 @@
1
+ import { ToolInstance } from '../tools/toolRegistry.js';
2
+ export interface ToolConfig {
3
+ enabledTools?: string[];
4
+ disabledTools?: string[];
5
+ }
6
+ export declare function parseToolConfigFromArgs(): ToolConfig;
7
+ export declare function filterTools(tools: readonly ToolInstance[], config: ToolConfig): ToolInstance[];
8
+ //# sourceMappingURL=toolConfig.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolConfig.d.ts","sourceRoot":"","sources":["../../../src/config/toolConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAExD,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,IAAI,UAAU,CAqBpD;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,MAAM,EAAE,UAAU,GACjB,YAAY,EAAE,CAqBhB"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseToolConfigFromArgs = parseToolConfigFromArgs;
4
+ exports.filterTools = filterTools;
5
+ function parseToolConfigFromArgs() {
6
+ const args = process.argv.slice(2);
7
+ const config = {};
8
+ for (let i = 0; i < args.length; i++) {
9
+ const arg = args[i];
10
+ if (arg === '--enable-tools') {
11
+ const value = args[++i];
12
+ if (value) {
13
+ config.enabledTools = value.split(',').map((t) => t.trim());
14
+ }
15
+ }
16
+ else if (arg === '--disable-tools') {
17
+ const value = args[++i];
18
+ if (value) {
19
+ config.disabledTools = value.split(',').map((t) => t.trim());
20
+ }
21
+ }
22
+ }
23
+ return config;
24
+ }
25
+ function filterTools(tools, config) {
26
+ let filteredTools = [...tools];
27
+ // If enabledTools is specified, only those tools should be enabled
28
+ // This takes precedence over disabledTools
29
+ if (config.enabledTools !== undefined) {
30
+ filteredTools = filteredTools.filter((tool) => config.enabledTools.includes(tool.name));
31
+ // Return early since enabledTools takes precedence
32
+ return filteredTools;
33
+ }
34
+ // Apply disabledTools filter only if enabledTools is not specified
35
+ if (config.disabledTools && config.disabledTools.length > 0) {
36
+ filteredTools = filteredTools.filter((tool) => !config.disabledTools.includes(tool.name));
37
+ }
38
+ return filteredTools;
39
+ }
40
+ //# sourceMappingURL=toolConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolConfig.js","sourceRoot":"","sources":["../../../src/config/toolConfig.ts"],"names":[],"mappings":";;AAOA,0DAqBC;AAED,kCAwBC;AA/CD,SAAgB,uBAAuB;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,MAAM,GAAe,EAAE,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,WAAW,CACzB,KAA8B,EAC9B,MAAkB;IAElB,IAAI,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAE/B,mEAAmE;IACnE,2CAA2C;IAC3C,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACtC,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5C,MAAM,CAAC,YAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACzC,CAAC;QACF,mDAAmD;QACnD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,mEAAmE;IACnE,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,aAAa,GAAG,aAAa,CAAC,MAAM,CAClC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,aAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACrD,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -0,0 +1,2 @@
1
+ import 'dotenv/config';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAKA,OAAO,eAAe,CAAC"}
@@ -0,0 +1,38 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
5
+ const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
6
+ const toolConfig_js_1 = require("./config/toolConfig.js");
7
+ const toolRegistry_js_1 = require("./tools/toolRegistry.js");
8
+ const versionUtils_js_1 = require("./utils/versionUtils.js");
9
+ require("dotenv/config");
10
+ const versionInfo = (0, versionUtils_js_1.getVersionInfo)();
11
+ // Parse configuration from command-line arguments
12
+ const config = (0, toolConfig_js_1.parseToolConfigFromArgs)();
13
+ // Get and filter tools based on configuration
14
+ const allTools = (0, toolRegistry_js_1.getAllTools)();
15
+ const enabledTools = (0, toolConfig_js_1.filterTools)(allTools, config);
16
+ // Create an MCP server
17
+ const server = new mcp_js_1.McpServer({
18
+ name: versionInfo.name,
19
+ version: versionInfo.version
20
+ }, {
21
+ capabilities: {
22
+ tools: {}
23
+ }
24
+ });
25
+ // Register enabled tools to the server
26
+ enabledTools.forEach((tool) => {
27
+ tool.installTo(server);
28
+ });
29
+ async function main() {
30
+ // Start receiving messages on stdin and sending messages on stdout
31
+ const transport = new stdio_js_1.StdioServerTransport();
32
+ await server.connect(transport);
33
+ }
34
+ main().catch((error) => {
35
+ console.error('Fatal error starting MCP server:', error);
36
+ process.exit(1);
37
+ });
38
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";;AAAA,oEAAoE;AACpE,wEAAiF;AACjF,0DAA8E;AAC9E,6DAAsD;AACtD,6DAAyD;AACzD,yBAAuB;AAEvB,MAAM,WAAW,GAAG,IAAA,gCAAc,GAAE,CAAC;AAErC,kDAAkD;AAClD,MAAM,MAAM,GAAG,IAAA,uCAAuB,GAAE,CAAC;AAEzC,8CAA8C;AAC9C,MAAM,QAAQ,GAAG,IAAA,6BAAW,GAAE,CAAC;AAC/B,MAAM,YAAY,GAAG,IAAA,2BAAW,EAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAEnD,uBAAuB;AACvB,MAAM,MAAM,GAAG,IAAI,kBAAS,CAC1B;IACE,IAAI,EAAE,WAAW,CAAC,IAAI;IACtB,OAAO,EAAE,WAAW,CAAC,OAAO;CAC7B,EACD;IACE,YAAY,EAAE;QACZ,KAAK,EAAE,EAAE;KACV;CACF,CACF,CAAC;AAEF,uCAAuC;AACvC,YAAY,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;IAC5B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,IAAI;IACjB,mEAAmE;IACnE,MAAM,SAAS,GAAG,IAAI,+BAAoB,EAAE,CAAC;IAC7C,MAAM,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAClC,CAAC;AAED,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;IACrB,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;IACzD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  {
2
2
  "type": "commonjs"
3
- }
3
+ }
@@ -1,4 +1,5 @@
1
- import { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp';
1
+ import { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
2
3
  import { z, ZodTypeAny } from 'zod';
3
4
  export declare const OutputSchema: z.ZodObject<{
4
5
  content: z.ZodArray<z.ZodUnion<[z.ZodObject<{
@@ -23,7 +24,7 @@ export declare const OutputSchema: z.ZodObject<{
23
24
  data: string;
24
25
  mimeType: string;
25
26
  }>]>, "many">;
26
- is_error: z.ZodDefault<z.ZodBoolean>;
27
+ isError: z.ZodDefault<z.ZodBoolean>;
27
28
  }, "strip", z.ZodTypeAny, {
28
29
  content: ({
29
30
  type: "text";
@@ -33,7 +34,7 @@ export declare const OutputSchema: z.ZodObject<{
33
34
  data: string;
34
35
  mimeType: string;
35
36
  })[];
36
- is_error: boolean;
37
+ isError: boolean;
37
38
  }, {
38
39
  content: ({
39
40
  type: "text";
@@ -43,15 +44,15 @@ export declare const OutputSchema: z.ZodObject<{
43
44
  data: string;
44
45
  mimeType: string;
45
46
  })[];
46
- is_error?: boolean | undefined;
47
+ isError?: boolean | undefined;
47
48
  }>;
48
49
  export declare abstract class MapboxApiBasedTool<InputSchema extends ZodTypeAny> {
49
50
  abstract readonly name: string;
50
51
  abstract readonly description: string;
51
52
  readonly inputSchema: InputSchema;
52
53
  protected server: McpServer | null;
53
- static readonly MAPBOX_ACCESS_TOKEN: string | undefined;
54
- static readonly MAPBOX_API_ENDPOINT: string;
54
+ static get mapboxAccessToken(): string | undefined;
55
+ static get mapboxApiEndpoint(): string;
55
56
  constructor(params: {
56
57
  inputSchema: InputSchema;
57
58
  });
@@ -65,11 +66,11 @@ export declare abstract class MapboxApiBasedTool<InputSchema extends ZodTypeAny>
65
66
  /**
66
67
  * Validates and runs the tool logic.
67
68
  */
68
- run(rawInput: unknown): Promise<z.infer<typeof OutputSchema>>;
69
+ run(rawInput: unknown, extra?: RequestHandlerExtra<any, any>): Promise<z.infer<typeof OutputSchema>>;
69
70
  /**
70
71
  * Tool logic to be implemented by subclasses.
71
72
  */
72
- protected abstract execute(_input: z.infer<InputSchema>): Promise<any>;
73
+ protected abstract execute(_input: z.infer<InputSchema>, accessToken: string): Promise<any>;
73
74
  /**
74
75
  * Installs the tool to the given MCP server.
75
76
  */
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapboxApiBasedTool.d.ts","sourceRoot":"","sources":["../../../src/tools/MapboxApiBasedTool.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,cAAc,EACf,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEpC,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAevB,CAAC;AAEH,8BAAsB,kBAAkB,CAAC,WAAW,SAAS,UAAU;IACrE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAEtC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAQ;IAE1C,MAAM,KAAK,iBAAiB,uBAE3B;IAED,MAAM,KAAK,iBAAiB,WAE3B;gBAEW,MAAM,EAAE;QAAE,WAAW,EAAE,WAAW,CAAA;KAAE;IAIhD;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACG,GAAG,CACP,QAAQ,EAAE,OAAO,EACjB,KAAK,CAAC,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,GACpC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;IA4DxC;;OAEG;IACH,SAAS,CAAC,QAAQ,CAAC,OAAO,CACxB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,EAC5B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,CAAC;IAEf;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc;IAU5C;;OAEG;IACH,SAAS,CAAC,GAAG,CACX,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,EAC7C,IAAI,EAAE,GAAG,GACR,IAAI;CAKR"}
@@ -0,0 +1,111 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MapboxApiBasedTool = exports.OutputSchema = void 0;
4
+ const zod_1 = require("zod");
5
+ exports.OutputSchema = zod_1.z.object({
6
+ content: zod_1.z.array(zod_1.z.union([
7
+ zod_1.z.object({
8
+ type: zod_1.z.literal('text'),
9
+ text: zod_1.z.string()
10
+ }),
11
+ zod_1.z.object({
12
+ type: zod_1.z.literal('image'),
13
+ data: zod_1.z.string(),
14
+ mimeType: zod_1.z.string()
15
+ })
16
+ ])),
17
+ isError: zod_1.z.boolean().default(false)
18
+ });
19
+ class MapboxApiBasedTool {
20
+ inputSchema;
21
+ server = null;
22
+ static get mapboxAccessToken() {
23
+ return process.env.MAPBOX_ACCESS_TOKEN;
24
+ }
25
+ static get mapboxApiEndpoint() {
26
+ return process.env.MAPBOX_API_ENDPOINT || 'https://api.mapbox.com/';
27
+ }
28
+ constructor(params) {
29
+ this.inputSchema = params.inputSchema;
30
+ }
31
+ /**
32
+ * Validates if a string has the format of a JWT token (header.payload.signature)
33
+ * Docs: https://docs.mapbox.com/api/accounts/tokens/#token-format
34
+ * @param token The token string to validate
35
+ * @returns boolean indicating if the token has valid JWT format
36
+ */
37
+ isValidJwtFormat(token) {
38
+ // JWT consists of three parts separated by dots: header.payload.signature
39
+ const parts = token.split('.');
40
+ if (parts.length !== 3)
41
+ return false;
42
+ // Check that all parts are non-empty
43
+ return parts.every((part) => part.length > 0);
44
+ }
45
+ /**
46
+ * Validates and runs the tool logic.
47
+ */
48
+ async run(rawInput, extra) {
49
+ try {
50
+ // First check if token is provided via authentication context
51
+ // Check both standard token field and accessToken in extra for compatibility
52
+ // In the streamableHttp, the authInfo is injected into extra from `req.auth`
53
+ // https://github.com/modelcontextprotocol/typescript-sdk/blob/main/src/server/streamableHttp.ts#L405
54
+ const authToken = extra?.authInfo?.token;
55
+ const accessToken = authToken || MapboxApiBasedTool.mapboxAccessToken;
56
+ if (!accessToken) {
57
+ throw new Error('No access token available. Please provide via Bearer auth or MAPBOX_ACCESS_TOKEN env var');
58
+ }
59
+ // Validate that the token has the correct JWT format
60
+ if (!this.isValidJwtFormat(accessToken)) {
61
+ throw new Error('Access token is not in valid JWT format');
62
+ }
63
+ const input = this.inputSchema.parse(rawInput);
64
+ const result = await this.execute(input, accessToken);
65
+ // Check if result is already a content object (image or text)
66
+ if (result &&
67
+ typeof result === 'object' &&
68
+ (result.type === 'image' || result.type === 'text')) {
69
+ return {
70
+ content: [result],
71
+ isError: false
72
+ };
73
+ }
74
+ // Otherwise return as text
75
+ return {
76
+ content: [{ type: 'text', text: JSON.stringify(result) }],
77
+ isError: false
78
+ };
79
+ }
80
+ catch (error) {
81
+ const errorMessage = error instanceof Error ? error.message : String(error);
82
+ this.log('error', `${this.name}: Error during execution: ${errorMessage}`);
83
+ return {
84
+ content: [
85
+ {
86
+ type: 'text',
87
+ text: errorMessage
88
+ }
89
+ ],
90
+ isError: true
91
+ };
92
+ }
93
+ }
94
+ /**
95
+ * Installs the tool to the given MCP server.
96
+ */
97
+ installTo(server) {
98
+ this.server = server;
99
+ return server.tool(this.name, this.description, this.inputSchema.shape, (args, extra) => this.run(args, extra));
100
+ }
101
+ /**
102
+ * Helper method to send logging messages
103
+ */
104
+ log(level, data) {
105
+ if (this.server) {
106
+ this.server.server.sendLoggingMessage({ level, data });
107
+ }
108
+ }
109
+ }
110
+ exports.MapboxApiBasedTool = MapboxApiBasedTool;
111
+ //# sourceMappingURL=MapboxApiBasedTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MapboxApiBasedTool.js","sourceRoot":"","sources":["../../../src/tools/MapboxApiBasedTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ import { z } from 'zod';
2
+ import { MapboxApiBasedTool } from '../MapboxApiBasedTool.js';
3
+ declare const CategoryListInputSchema: z.ZodObject<{
4
+ language: z.ZodOptional<z.ZodString>;
5
+ limit: z.ZodOptional<z.ZodNumber>;
6
+ offset: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
7
+ }, "strip", z.ZodTypeAny, {
8
+ offset: number;
9
+ language?: string | undefined;
10
+ limit?: number | undefined;
11
+ }, {
12
+ language?: string | undefined;
13
+ limit?: number | undefined;
14
+ offset?: number | undefined;
15
+ }>;
16
+ type CategoryListInput = z.infer<typeof CategoryListInputSchema>;
17
+ /**
18
+ * Tool for retrieving the list of supported categories from Mapbox Search API
19
+ */
20
+ export declare class CategoryListTool extends MapboxApiBasedTool<typeof CategoryListInputSchema> {
21
+ private fetchImpl;
22
+ name: string;
23
+ description: string;
24
+ constructor(fetchImpl?: typeof fetch);
25
+ protected execute(input: CategoryListInput, accessToken: string): Promise<any>;
26
+ }
27
+ export {};
28
+ //# sourceMappingURL=CategoryListTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CategoryListTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/category-list-tool/CategoryListTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,QAAA,MAAM,uBAAuB;;;;;;;;;;;;EAqB3B,CAAC;AAEH,KAAK,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAajE;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,kBAAkB,CACtD,OAAO,uBAAuB,CAC/B;IAKa,OAAO,CAAC,SAAS;IAJ7B,IAAI,SAAwB;IAC5B,WAAW,SACiU;gBAExT,SAAS,GAAE,OAAO,KAAmB;cAIzC,OAAO,CACrB,KAAK,EAAE,iBAAiB,EACxB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,GAAG,CAAC;CA2ChB"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CategoryListTool = void 0;
4
+ const zod_1 = require("zod");
5
+ const MapboxApiBasedTool_js_1 = require("../MapboxApiBasedTool.js");
6
+ const fetchRequest_js_1 = require("../../utils/fetchRequest.js");
7
+ const CategoryListInputSchema = zod_1.z.object({
8
+ language: zod_1.z
9
+ .string()
10
+ .optional()
11
+ .describe('ISO language code for the response (e.g., "en", "es", "fr", "de", "ja"). If not provided, English (en) will be used as the default.'),
12
+ limit: zod_1.z
13
+ .number()
14
+ .min(1)
15
+ .max(100)
16
+ .optional()
17
+ .describe('Number of categories to return (1-100). WARNING: Only use this parameter if you need to optimize token usage. If using pagination, please make multiple calls to retrieve all categories before proceeding with other tasks. If not specified, returns all categories.'),
18
+ offset: zod_1.z
19
+ .number()
20
+ .min(0)
21
+ .optional()
22
+ .default(0)
23
+ .describe('Number of categories to skip for pagination. Default is 0.')
24
+ });
25
+ /**
26
+ * Tool for retrieving the list of supported categories from Mapbox Search API
27
+ */
28
+ class CategoryListTool extends MapboxApiBasedTool_js_1.MapboxApiBasedTool {
29
+ fetchImpl;
30
+ name = 'category_list_tool';
31
+ description = 'Get the complete list of supported search categories from Mapbox Search API. Returns all available category IDs by default. Only use pagination (limit/offset) if token usage optimization is required. If using pagination, make multiple calls to retrieve ALL categories before proceeding with other tasks to ensure complete data.';
32
+ constructor(fetchImpl = fetchRequest_js_1.fetchClient) {
33
+ super({ inputSchema: CategoryListInputSchema });
34
+ this.fetchImpl = fetchImpl;
35
+ }
36
+ async execute(input, accessToken) {
37
+ const url = new URL('https://api.mapbox.com/search/searchbox/v1/list/category');
38
+ url.searchParams.set('access_token', accessToken);
39
+ if (input.language) {
40
+ url.searchParams.set('language', input.language);
41
+ }
42
+ const response = await this.fetchImpl(url.toString(), {
43
+ method: 'GET',
44
+ headers: {
45
+ 'User-Agent': `@mapbox/mcp-server/${process.env.npm_package_version || 'dev'}`
46
+ }
47
+ });
48
+ if (!response.ok) {
49
+ throw new Error(`Mapbox API request failed: ${response.status} ${response.statusText}`);
50
+ }
51
+ const data = (await response.json());
52
+ // Apply pagination - if no limit specified, return all
53
+ const startIndex = input.offset || 0;
54
+ let endIndex = data.listItems.length;
55
+ if (input.limit) {
56
+ endIndex = Math.min(startIndex + input.limit, data.listItems.length);
57
+ }
58
+ // Return simple object with listItems array
59
+ const categoryIds = data.listItems
60
+ .slice(startIndex, endIndex)
61
+ .map((item) => item.canonical_id);
62
+ return {
63
+ listItems: categoryIds
64
+ };
65
+ }
66
+ }
67
+ exports.CategoryListTool = CategoryListTool;
68
+ //# sourceMappingURL=CategoryListTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CategoryListTool.js","sourceRoot":"","sources":["../../../../src/tools/category-list-tool/CategoryListTool.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,oEAA8D;AAC9D,iEAA0D;AAE1D,MAAM,uBAAuB,GAAG,OAAC,CAAC,MAAM,CAAC;IACvC,QAAQ,EAAE,OAAC;SACR,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,qIAAqI,CACtI;IACH,KAAK,EAAE,OAAC;SACL,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,GAAG,CAAC;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,wQAAwQ,CACzQ;IACH,MAAM,EAAE,OAAC;SACN,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,EAAE;SACV,OAAO,CAAC,CAAC,CAAC;SACV,QAAQ,CAAC,4DAA4D,CAAC;CAC1E,CAAC,CAAC;AAeH;;GAEG;AACH,MAAa,gBAAiB,SAAQ,0CAErC;IAKqB;IAJpB,IAAI,GAAG,oBAAoB,CAAC;IAC5B,WAAW,GACT,yUAAyU,CAAC;IAE5U,YAAoB,YAA0B,6BAAW;QACvD,KAAK,CAAC,EAAE,WAAW,EAAE,uBAAuB,EAAE,CAAC,CAAC;QAD9B,cAAS,GAAT,SAAS,CAA4B;IAEzD,CAAC;IAES,KAAK,CAAC,OAAO,CACrB,KAAwB,EACxB,WAAmB;QAEnB,MAAM,GAAG,GAAG,IAAI,GAAG,CACjB,0DAA0D,CAC3D,CAAC;QAEF,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAElD,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;YACnB,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QACnD,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE;YACpD,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,YAAY,EAAE,sBAAsB,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,KAAK,EAAE;aAC/E;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,8BAA8B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CACvE,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAyB,CAAC;QAE7D,uDAAuD;QACvD,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACrC,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;QAErC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;QACvE,CAAC;QAED,4CAA4C;QAC5C,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS;aAC/B,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC;aAC3B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEpC,OAAO;YACL,SAAS,EAAE,WAAW;SACvB,CAAC;IACJ,CAAC;CACF;AAzDD,4CAyDC"}
@@ -37,10 +37,9 @@ declare const CategorySearchInputSchema: z.ZodObject<{
37
37
  poi_category_exclusions: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
38
38
  format: z.ZodDefault<z.ZodOptional<z.ZodEnum<["json_string", "formatted_text"]>>>;
39
39
  }, "strip", z.ZodTypeAny, {
40
- category: string;
41
40
  limit: number;
41
+ category: string;
42
42
  format: "json_string" | "formatted_text";
43
- country?: string[] | undefined;
44
43
  language?: string | undefined;
45
44
  proximity?: {
46
45
  longitude: number;
@@ -55,10 +54,10 @@ declare const CategorySearchInputSchema: z.ZodObject<{
55
54
  maxLongitude: number;
56
55
  maxLatitude: number;
57
56
  } | undefined;
57
+ country?: string[] | undefined;
58
58
  poi_category_exclusions?: string[] | undefined;
59
59
  }, {
60
60
  category: string;
61
- country?: string[] | undefined;
62
61
  language?: string | undefined;
63
62
  limit?: number | undefined;
64
63
  proximity?: string | {
@@ -71,15 +70,17 @@ declare const CategorySearchInputSchema: z.ZodObject<{
71
70
  maxLongitude: number;
72
71
  maxLatitude: number;
73
72
  } | undefined;
73
+ country?: string[] | undefined;
74
74
  poi_category_exclusions?: string[] | undefined;
75
75
  format?: "json_string" | "formatted_text" | undefined;
76
76
  }>;
77
77
  export declare class CategorySearchTool extends MapboxApiBasedTool<typeof CategorySearchInputSchema> {
78
+ private fetch;
78
79
  name: string;
79
80
  description: string;
80
- constructor();
81
+ constructor(fetch?: typeof globalThis.fetch);
81
82
  private formatGeoJsonToText;
82
- protected execute(input: z.infer<typeof CategorySearchInputSchema>): Promise<{
83
+ protected execute(input: z.infer<typeof CategorySearchInputSchema>, accessToken: string): Promise<{
83
84
  type: 'text';
84
85
  text: string;
85
86
  }>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CategorySearchTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/category-search-tool/CategorySearchTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAG9D,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8F7B,CAAC;AAEH,qBAAa,kBAAmB,SAAQ,kBAAkB,CACxD,OAAO,yBAAyB,CACjC;IAKa,OAAO,CAAC,KAAK;IAJzB,IAAI,SAA0B;IAC9B,WAAW,SACoX;gBAE3W,KAAK,GAAE,OAAO,UAAU,CAAC,KAAmB;IAIhE,OAAO,CAAC,mBAAmB;cAsDX,OAAO,CACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,EAChD,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CAmE3C"}