@mapbox/mcp-server 0.2.4 → 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 (250) hide show
  1. package/README.md +9 -9
  2. package/dist/commonjs/config/toolConfig.d.ts +8 -0
  3. package/dist/commonjs/config/toolConfig.d.ts.map +1 -0
  4. package/dist/commonjs/config/toolConfig.js +40 -0
  5. package/dist/commonjs/config/toolConfig.js.map +1 -0
  6. package/dist/commonjs/index.d.ts +2 -0
  7. package/dist/{index.d.ts.map → commonjs/index.d.ts.map} +1 -1
  8. package/dist/commonjs/index.js +38 -0
  9. package/dist/commonjs/index.js.map +1 -0
  10. package/dist/{cjs → commonjs}/package.json +1 -1
  11. package/dist/{tools → commonjs/tools}/MapboxApiBasedTool.d.ts +6 -5
  12. package/dist/commonjs/tools/MapboxApiBasedTool.d.ts.map +1 -0
  13. package/dist/commonjs/tools/MapboxApiBasedTool.js +111 -0
  14. package/dist/commonjs/tools/MapboxApiBasedTool.js.map +1 -0
  15. package/dist/commonjs/tools/category-list-tool/CategoryListTool.d.ts +28 -0
  16. package/dist/commonjs/tools/category-list-tool/CategoryListTool.d.ts.map +1 -0
  17. package/dist/commonjs/tools/category-list-tool/CategoryListTool.js +68 -0
  18. package/dist/commonjs/tools/category-list-tool/CategoryListTool.js.map +1 -0
  19. package/dist/{tools → commonjs/tools}/category-search-tool/CategorySearchTool.d.ts +6 -5
  20. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.d.ts.map +1 -0
  21. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.js +188 -0
  22. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.js.map +1 -0
  23. package/dist/{tools → commonjs/tools}/directions-tool/DirectionsTool.d.ts +3 -2
  24. package/dist/commonjs/tools/directions-tool/DirectionsTool.d.ts.map +1 -0
  25. package/dist/commonjs/tools/directions-tool/DirectionsTool.js +385 -0
  26. package/dist/commonjs/tools/directions-tool/DirectionsTool.js.map +1 -0
  27. package/dist/commonjs/tools/directions-tool/cleanResponseData.d.ts.map +1 -0
  28. package/dist/commonjs/tools/directions-tool/cleanResponseData.js +178 -0
  29. package/dist/commonjs/tools/directions-tool/cleanResponseData.js.map +1 -0
  30. package/dist/commonjs/tools/directions-tool/formatIsoDateTime.d.ts.map +1 -0
  31. package/dist/commonjs/tools/directions-tool/formatIsoDateTime.js +21 -0
  32. package/dist/commonjs/tools/directions-tool/formatIsoDateTime.js.map +1 -0
  33. package/dist/{tools → commonjs/tools}/forward-geocode-tool/ForwardGeocodeTool.d.ts +5 -4
  34. package/dist/commonjs/tools/forward-geocode-tool/ForwardGeocodeTool.d.ts.map +1 -0
  35. package/dist/commonjs/tools/forward-geocode-tool/ForwardGeocodeTool.js +212 -0
  36. package/dist/commonjs/tools/forward-geocode-tool/ForwardGeocodeTool.js.map +1 -0
  37. package/dist/{tools → commonjs/tools}/isochrone-tool/IsochroneTool.d.ts +3 -2
  38. package/dist/commonjs/tools/isochrone-tool/IsochroneTool.d.ts.map +1 -0
  39. package/dist/commonjs/tools/isochrone-tool/IsochroneTool.js +118 -0
  40. package/dist/commonjs/tools/isochrone-tool/IsochroneTool.js.map +1 -0
  41. package/dist/{tools → commonjs/tools}/matrix-tool/MatrixTool.d.ts +3 -2
  42. package/dist/commonjs/tools/matrix-tool/MatrixTool.d.ts.map +1 -0
  43. package/dist/commonjs/tools/matrix-tool/MatrixTool.js +202 -0
  44. package/dist/commonjs/tools/matrix-tool/MatrixTool.js.map +1 -0
  45. package/dist/{tools → commonjs/tools}/poi-search-tool/PoiSearchTool.d.ts +5 -4
  46. package/dist/commonjs/tools/poi-search-tool/PoiSearchTool.d.ts.map +1 -0
  47. package/dist/commonjs/tools/poi-search-tool/PoiSearchTool.js +231 -0
  48. package/dist/commonjs/tools/poi-search-tool/PoiSearchTool.js.map +1 -0
  49. package/dist/{tools → commonjs/tools}/reverse-geocode-tool/ReverseGeocodeTool.d.ts +5 -4
  50. package/dist/commonjs/tools/reverse-geocode-tool/ReverseGeocodeTool.d.ts.map +1 -0
  51. package/dist/commonjs/tools/reverse-geocode-tool/ReverseGeocodeTool.js +148 -0
  52. package/dist/commonjs/tools/reverse-geocode-tool/ReverseGeocodeTool.js.map +1 -0
  53. package/dist/{tools → commonjs/tools}/static-map-image-tool/StaticMapImageTool.d.ts +3 -2
  54. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -0
  55. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js +416 -0
  56. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -0
  57. package/dist/{tools → commonjs/tools}/toolRegistry.d.ts +2 -1
  58. package/dist/commonjs/tools/toolRegistry.d.ts.map +1 -0
  59. package/dist/commonjs/tools/toolRegistry.js +37 -0
  60. package/dist/commonjs/tools/toolRegistry.js.map +1 -0
  61. package/dist/{tools → commonjs/tools}/version-tool/VersionTool.d.ts +1 -1
  62. package/dist/commonjs/tools/version-tool/VersionTool.d.ts.map +1 -0
  63. package/dist/commonjs/tools/version-tool/VersionTool.js +52 -0
  64. package/dist/commonjs/tools/version-tool/VersionTool.js.map +1 -0
  65. package/dist/commonjs/utils/fetchRequest.d.ts +38 -0
  66. package/dist/commonjs/utils/fetchRequest.d.ts.map +1 -0
  67. package/dist/commonjs/utils/fetchRequest.js +111 -0
  68. package/dist/commonjs/utils/fetchRequest.js.map +1 -0
  69. package/dist/commonjs/utils/versionUtils-cjs.cjs.map +1 -0
  70. package/dist/commonjs/utils/versionUtils-cjs.d.cts.map +1 -0
  71. package/dist/commonjs/utils/versionUtils.d.ts +9 -0
  72. package/dist/commonjs/utils/versionUtils.js +46 -0
  73. package/dist/commonjs/version.json +6 -0
  74. package/dist/esm/config/toolConfig.d.ts +8 -0
  75. package/dist/esm/config/toolConfig.d.ts.map +1 -0
  76. package/dist/esm/config/toolConfig.js +36 -0
  77. package/dist/esm/config/toolConfig.js.map +1 -0
  78. package/dist/esm/index.d.ts +2 -0
  79. package/dist/esm/index.d.ts.map +1 -0
  80. package/dist/esm/index.js +36 -0
  81. package/dist/esm/index.js.map +1 -0
  82. package/dist/esm/package.json +1 -1
  83. package/dist/esm/tools/MapboxApiBasedTool.d.ts +83 -0
  84. package/dist/esm/tools/MapboxApiBasedTool.d.ts.map +1 -0
  85. package/dist/{tools → esm/tools}/MapboxApiBasedTool.js +20 -13
  86. package/dist/esm/tools/MapboxApiBasedTool.js.map +1 -0
  87. package/dist/esm/tools/category-list-tool/CategoryListTool.d.ts +28 -0
  88. package/dist/esm/tools/category-list-tool/CategoryListTool.d.ts.map +1 -0
  89. package/dist/esm/tools/category-list-tool/CategoryListTool.js +64 -0
  90. package/dist/esm/tools/category-list-tool/CategoryListTool.js.map +1 -0
  91. package/dist/esm/tools/category-search-tool/CategorySearchTool.d.ts +89 -0
  92. package/dist/esm/tools/category-search-tool/CategorySearchTool.d.ts.map +1 -0
  93. package/dist/esm/tools/category-search-tool/CategorySearchTool.js +184 -0
  94. package/dist/esm/tools/category-search-tool/CategorySearchTool.js.map +1 -0
  95. package/dist/esm/tools/directions-tool/DirectionsTool.d.ts +44 -0
  96. package/dist/esm/tools/directions-tool/DirectionsTool.d.ts.map +1 -0
  97. package/dist/{tools → esm/tools}/directions-tool/DirectionsTool.js +9 -8
  98. package/dist/esm/tools/directions-tool/DirectionsTool.js.map +1 -0
  99. package/dist/esm/tools/directions-tool/cleanResponseData.d.ts +11 -0
  100. package/dist/esm/tools/directions-tool/cleanResponseData.d.ts.map +1 -0
  101. package/dist/esm/tools/directions-tool/cleanResponseData.js.map +1 -0
  102. package/dist/esm/tools/directions-tool/formatIsoDateTime.d.ts +8 -0
  103. package/dist/esm/tools/directions-tool/formatIsoDateTime.d.ts.map +1 -0
  104. package/dist/esm/tools/directions-tool/formatIsoDateTime.js.map +1 -0
  105. package/dist/esm/tools/forward-geocode-tool/ForwardGeocodeTool.d.ts +98 -0
  106. package/dist/esm/tools/forward-geocode-tool/ForwardGeocodeTool.d.ts.map +1 -0
  107. package/dist/{tools → esm/tools}/forward-geocode-tool/ForwardGeocodeTool.js +8 -5
  108. package/dist/esm/tools/forward-geocode-tool/ForwardGeocodeTool.js.map +1 -0
  109. package/dist/esm/tools/isochrone-tool/IsochroneTool.d.ts +60 -0
  110. package/dist/esm/tools/isochrone-tool/IsochroneTool.d.ts.map +1 -0
  111. package/dist/{tools → esm/tools}/isochrone-tool/IsochroneTool.js +8 -5
  112. package/dist/esm/tools/isochrone-tool/IsochroneTool.js.map +1 -0
  113. package/dist/esm/tools/matrix-tool/MatrixTool.d.ts +51 -0
  114. package/dist/esm/tools/matrix-tool/MatrixTool.d.ts.map +1 -0
  115. package/dist/{tools → esm/tools}/matrix-tool/MatrixTool.js +8 -5
  116. package/dist/{tools → esm/tools}/matrix-tool/MatrixTool.js.map +1 -1
  117. package/dist/esm/tools/poi-search-tool/PoiSearchTool.d.ts +119 -0
  118. package/dist/esm/tools/poi-search-tool/PoiSearchTool.d.ts.map +1 -0
  119. package/dist/{tools → esm/tools}/poi-search-tool/PoiSearchTool.js +9 -6
  120. package/dist/esm/tools/poi-search-tool/PoiSearchTool.js.map +1 -0
  121. package/dist/esm/tools/reverse-geocode-tool/ReverseGeocodeTool.d.ts +46 -0
  122. package/dist/esm/tools/reverse-geocode-tool/ReverseGeocodeTool.d.ts.map +1 -0
  123. package/dist/{tools → esm/tools}/reverse-geocode-tool/ReverseGeocodeTool.js +8 -5
  124. package/dist/esm/tools/reverse-geocode-tool/ReverseGeocodeTool.js.map +1 -0
  125. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.d.ts +179 -0
  126. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -0
  127. package/dist/{tools → esm/tools}/static-map-image-tool/StaticMapImageTool.js +7 -4
  128. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -0
  129. package/dist/esm/tools/toolRegistry.d.ts +15 -0
  130. package/dist/esm/tools/toolRegistry.d.ts.map +1 -0
  131. package/dist/{tools → esm/tools}/toolRegistry.js +2 -0
  132. package/dist/esm/tools/toolRegistry.js.map +1 -0
  133. package/dist/esm/tools/version-tool/VersionTool.d.ts +18 -0
  134. package/dist/esm/tools/version-tool/VersionTool.d.ts.map +1 -0
  135. package/dist/{tools → esm/tools}/version-tool/VersionTool.js +2 -4
  136. package/dist/esm/tools/version-tool/VersionTool.js.map +1 -0
  137. package/dist/esm/utils/fetchRequest.d.ts +38 -0
  138. package/dist/esm/utils/fetchRequest.d.ts.map +1 -0
  139. package/dist/esm/utils/fetchRequest.js +105 -0
  140. package/dist/esm/utils/fetchRequest.js.map +1 -0
  141. package/dist/esm/utils/versionUtils.d.ts.map +1 -0
  142. package/dist/{utils → esm/utils}/versionUtils.js +4 -2
  143. package/dist/esm/utils/versionUtils.js.map +1 -0
  144. package/dist/esm/version.json +6 -0
  145. package/package.json +44 -29
  146. package/dist/index.d.ts +0 -2
  147. package/dist/index.js +0 -25
  148. package/dist/index.js.map +0 -1
  149. package/dist/tools/MapboxApiBasedTool.d.ts.map +0 -1
  150. package/dist/tools/MapboxApiBasedTool.js.map +0 -1
  151. package/dist/tools/MapboxApiBasedTool.test.d.ts +0 -2
  152. package/dist/tools/MapboxApiBasedTool.test.d.ts.map +0 -1
  153. package/dist/tools/MapboxApiBasedTool.test.js +0 -143
  154. package/dist/tools/MapboxApiBasedTool.test.js.map +0 -1
  155. package/dist/tools/category-search-tool/CategorySearchTool.d.ts.map +0 -1
  156. package/dist/tools/category-search-tool/CategorySearchTool.js +0 -666
  157. package/dist/tools/category-search-tool/CategorySearchTool.js.map +0 -1
  158. package/dist/tools/category-search-tool/CategorySearchTool.test.d.ts +0 -2
  159. package/dist/tools/category-search-tool/CategorySearchTool.test.d.ts.map +0 -1
  160. package/dist/tools/category-search-tool/CategorySearchTool.test.js +0 -369
  161. package/dist/tools/category-search-tool/CategorySearchTool.test.js.map +0 -1
  162. package/dist/tools/directions-tool/DirectionsTool.d.ts.map +0 -1
  163. package/dist/tools/directions-tool/DirectionsTool.js.map +0 -1
  164. package/dist/tools/directions-tool/DirectionsTool.test.d.ts +0 -2
  165. package/dist/tools/directions-tool/DirectionsTool.test.d.ts.map +0 -1
  166. package/dist/tools/directions-tool/DirectionsTool.test.js +0 -822
  167. package/dist/tools/directions-tool/DirectionsTool.test.js.map +0 -1
  168. package/dist/tools/directions-tool/cleanResponseData.d.ts.map +0 -1
  169. package/dist/tools/directions-tool/cleanResponseData.js.map +0 -1
  170. package/dist/tools/directions-tool/cleanResponseData.test.d.ts +0 -2
  171. package/dist/tools/directions-tool/cleanResponseData.test.d.ts.map +0 -1
  172. package/dist/tools/directions-tool/cleanResponseData.test.js +0 -295
  173. package/dist/tools/directions-tool/cleanResponseData.test.js.map +0 -1
  174. package/dist/tools/directions-tool/formatIsoDateTime.d.ts.map +0 -1
  175. package/dist/tools/directions-tool/formatIsoDateTime.js.map +0 -1
  176. package/dist/tools/directions-tool/formatIsoDateTime.test.d.ts +0 -2
  177. package/dist/tools/directions-tool/formatIsoDateTime.test.d.ts.map +0 -1
  178. package/dist/tools/directions-tool/formatIsoDateTime.test.js +0 -26
  179. package/dist/tools/directions-tool/formatIsoDateTime.test.js.map +0 -1
  180. package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.d.ts.map +0 -1
  181. package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.js.map +0 -1
  182. package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.d.ts +0 -2
  183. package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.d.ts.map +0 -1
  184. package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.js +0 -415
  185. package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.js.map +0 -1
  186. package/dist/tools/isochrone-tool/IsochroneTool.d.ts.map +0 -1
  187. package/dist/tools/isochrone-tool/IsochroneTool.js.map +0 -1
  188. package/dist/tools/isochrone-tool/IsochroneTool.test.d.ts +0 -2
  189. package/dist/tools/isochrone-tool/IsochroneTool.test.d.ts.map +0 -1
  190. package/dist/tools/isochrone-tool/IsochroneTool.test.js +0 -111
  191. package/dist/tools/isochrone-tool/IsochroneTool.test.js.map +0 -1
  192. package/dist/tools/matrix-tool/MatrixTool.d.ts.map +0 -1
  193. package/dist/tools/matrix-tool/MatrixTool.test.d.ts +0 -2
  194. package/dist/tools/matrix-tool/MatrixTool.test.d.ts.map +0 -1
  195. package/dist/tools/matrix-tool/MatrixTool.test.js +0 -816
  196. package/dist/tools/matrix-tool/MatrixTool.test.js.map +0 -1
  197. package/dist/tools/poi-search-tool/PoiSearchTool.d.ts.map +0 -1
  198. package/dist/tools/poi-search-tool/PoiSearchTool.js.map +0 -1
  199. package/dist/tools/poi-search-tool/PoiSearchTool.test.d.ts +0 -2
  200. package/dist/tools/poi-search-tool/PoiSearchTool.test.d.ts.map +0 -1
  201. package/dist/tools/poi-search-tool/PoiSearchTool.test.js +0 -418
  202. package/dist/tools/poi-search-tool/PoiSearchTool.test.js.map +0 -1
  203. package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.d.ts.map +0 -1
  204. package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.js.map +0 -1
  205. package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.d.ts +0 -2
  206. package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.d.ts.map +0 -1
  207. package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.js +0 -403
  208. package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.js.map +0 -1
  209. package/dist/tools/schema-validation.test.d.ts +0 -2
  210. package/dist/tools/schema-validation.test.d.ts.map +0 -1
  211. package/dist/tools/schema-validation.test.js +0 -75
  212. package/dist/tools/schema-validation.test.js.map +0 -1
  213. package/dist/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +0 -1
  214. package/dist/tools/static-map-image-tool/StaticMapImageTool.js.map +0 -1
  215. package/dist/tools/static-map-image-tool/StaticMapImageTool.test.d.ts +0 -2
  216. package/dist/tools/static-map-image-tool/StaticMapImageTool.test.d.ts.map +0 -1
  217. package/dist/tools/static-map-image-tool/StaticMapImageTool.test.js +0 -441
  218. package/dist/tools/static-map-image-tool/StaticMapImageTool.test.js.map +0 -1
  219. package/dist/tools/tool-naming-convention.test.d.ts +0 -2
  220. package/dist/tools/tool-naming-convention.test.d.ts.map +0 -1
  221. package/dist/tools/tool-naming-convention.test.js +0 -43
  222. package/dist/tools/tool-naming-convention.test.js.map +0 -1
  223. package/dist/tools/toolRegistry.d.ts.map +0 -1
  224. package/dist/tools/toolRegistry.js.map +0 -1
  225. package/dist/tools/version-tool/VersionTool.d.ts.map +0 -1
  226. package/dist/tools/version-tool/VersionTool.js.map +0 -1
  227. package/dist/tools/version-tool/VersionTool.test.d.ts +0 -2
  228. package/dist/tools/version-tool/VersionTool.test.d.ts.map +0 -1
  229. package/dist/tools/version-tool/VersionTool.test.js +0 -49
  230. package/dist/tools/version-tool/VersionTool.test.js.map +0 -1
  231. package/dist/utils/requestUtils.d.ts +0 -6
  232. package/dist/utils/requestUtils.d.ts.map +0 -1
  233. package/dist/utils/requestUtils.js +0 -60
  234. package/dist/utils/requestUtils.js.map +0 -1
  235. package/dist/utils/requestUtils.test-helpers.d.ts +0 -3
  236. package/dist/utils/requestUtils.test-helpers.d.ts.map +0 -1
  237. package/dist/utils/requestUtils.test-helpers.js +0 -32
  238. package/dist/utils/requestUtils.test-helpers.js.map +0 -1
  239. package/dist/utils/requestUtils.test.d.ts +0 -2
  240. package/dist/utils/requestUtils.test.d.ts.map +0 -1
  241. package/dist/utils/requestUtils.test.js +0 -115
  242. package/dist/utils/requestUtils.test.js.map +0 -1
  243. package/dist/utils/versionUtils.d.ts.map +0 -1
  244. package/dist/utils/versionUtils.js.map +0 -1
  245. package/dist/version.json +0 -6
  246. /package/dist/{tools → commonjs/tools}/directions-tool/cleanResponseData.d.ts +0 -0
  247. /package/dist/{tools → commonjs/tools}/directions-tool/formatIsoDateTime.d.ts +0 -0
  248. /package/dist/{tools → esm/tools}/directions-tool/cleanResponseData.js +0 -0
  249. /package/dist/{tools → esm/tools}/directions-tool/formatIsoDateTime.js +0 -0
  250. /package/dist/{utils → esm/utils}/versionUtils.d.ts +0 -0
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
@@ -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<{
@@ -50,8 +51,8 @@ export declare abstract class MapboxApiBasedTool<InputSchema extends ZodTypeAny>
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"}