@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.
- package/README.md +9 -9
- package/dist/commonjs/config/toolConfig.d.ts +8 -0
- package/dist/commonjs/config/toolConfig.d.ts.map +1 -0
- package/dist/commonjs/config/toolConfig.js +40 -0
- package/dist/commonjs/config/toolConfig.js.map +1 -0
- package/dist/commonjs/index.d.ts +2 -0
- package/dist/{index.d.ts.map → commonjs/index.d.ts.map} +1 -1
- package/dist/commonjs/index.js +38 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/{cjs → commonjs}/package.json +1 -1
- package/dist/{tools → commonjs/tools}/MapboxApiBasedTool.d.ts +6 -5
- package/dist/commonjs/tools/MapboxApiBasedTool.d.ts.map +1 -0
- package/dist/commonjs/tools/MapboxApiBasedTool.js +111 -0
- package/dist/commonjs/tools/MapboxApiBasedTool.js.map +1 -0
- package/dist/commonjs/tools/category-list-tool/CategoryListTool.d.ts +28 -0
- package/dist/commonjs/tools/category-list-tool/CategoryListTool.d.ts.map +1 -0
- package/dist/commonjs/tools/category-list-tool/CategoryListTool.js +68 -0
- package/dist/commonjs/tools/category-list-tool/CategoryListTool.js.map +1 -0
- package/dist/{tools → commonjs/tools}/category-search-tool/CategorySearchTool.d.ts +6 -5
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.d.ts.map +1 -0
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.js +188 -0
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.js.map +1 -0
- package/dist/{tools → commonjs/tools}/directions-tool/DirectionsTool.d.ts +3 -2
- package/dist/commonjs/tools/directions-tool/DirectionsTool.d.ts.map +1 -0
- package/dist/commonjs/tools/directions-tool/DirectionsTool.js +385 -0
- package/dist/commonjs/tools/directions-tool/DirectionsTool.js.map +1 -0
- package/dist/commonjs/tools/directions-tool/cleanResponseData.d.ts.map +1 -0
- package/dist/commonjs/tools/directions-tool/cleanResponseData.js +178 -0
- package/dist/commonjs/tools/directions-tool/cleanResponseData.js.map +1 -0
- package/dist/commonjs/tools/directions-tool/formatIsoDateTime.d.ts.map +1 -0
- package/dist/commonjs/tools/directions-tool/formatIsoDateTime.js +21 -0
- package/dist/commonjs/tools/directions-tool/formatIsoDateTime.js.map +1 -0
- package/dist/{tools → commonjs/tools}/forward-geocode-tool/ForwardGeocodeTool.d.ts +5 -4
- package/dist/commonjs/tools/forward-geocode-tool/ForwardGeocodeTool.d.ts.map +1 -0
- package/dist/commonjs/tools/forward-geocode-tool/ForwardGeocodeTool.js +212 -0
- package/dist/commonjs/tools/forward-geocode-tool/ForwardGeocodeTool.js.map +1 -0
- package/dist/{tools → commonjs/tools}/isochrone-tool/IsochroneTool.d.ts +3 -2
- package/dist/commonjs/tools/isochrone-tool/IsochroneTool.d.ts.map +1 -0
- package/dist/commonjs/tools/isochrone-tool/IsochroneTool.js +118 -0
- package/dist/commonjs/tools/isochrone-tool/IsochroneTool.js.map +1 -0
- package/dist/{tools → commonjs/tools}/matrix-tool/MatrixTool.d.ts +3 -2
- package/dist/commonjs/tools/matrix-tool/MatrixTool.d.ts.map +1 -0
- package/dist/commonjs/tools/matrix-tool/MatrixTool.js +202 -0
- package/dist/commonjs/tools/matrix-tool/MatrixTool.js.map +1 -0
- package/dist/{tools → commonjs/tools}/poi-search-tool/PoiSearchTool.d.ts +5 -4
- package/dist/commonjs/tools/poi-search-tool/PoiSearchTool.d.ts.map +1 -0
- package/dist/commonjs/tools/poi-search-tool/PoiSearchTool.js +231 -0
- package/dist/commonjs/tools/poi-search-tool/PoiSearchTool.js.map +1 -0
- package/dist/{tools → commonjs/tools}/reverse-geocode-tool/ReverseGeocodeTool.d.ts +5 -4
- package/dist/commonjs/tools/reverse-geocode-tool/ReverseGeocodeTool.d.ts.map +1 -0
- package/dist/commonjs/tools/reverse-geocode-tool/ReverseGeocodeTool.js +148 -0
- package/dist/commonjs/tools/reverse-geocode-tool/ReverseGeocodeTool.js.map +1 -0
- package/dist/{tools → commonjs/tools}/static-map-image-tool/StaticMapImageTool.d.ts +3 -2
- package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -0
- package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js +416 -0
- package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -0
- package/dist/{tools → commonjs/tools}/toolRegistry.d.ts +2 -1
- package/dist/commonjs/tools/toolRegistry.d.ts.map +1 -0
- package/dist/commonjs/tools/toolRegistry.js +37 -0
- package/dist/commonjs/tools/toolRegistry.js.map +1 -0
- package/dist/{tools → commonjs/tools}/version-tool/VersionTool.d.ts +1 -1
- package/dist/commonjs/tools/version-tool/VersionTool.d.ts.map +1 -0
- package/dist/commonjs/tools/version-tool/VersionTool.js +52 -0
- package/dist/commonjs/tools/version-tool/VersionTool.js.map +1 -0
- package/dist/commonjs/utils/fetchRequest.d.ts +38 -0
- package/dist/commonjs/utils/fetchRequest.d.ts.map +1 -0
- package/dist/commonjs/utils/fetchRequest.js +111 -0
- package/dist/commonjs/utils/fetchRequest.js.map +1 -0
- package/dist/commonjs/utils/versionUtils-cjs.cjs.map +1 -0
- package/dist/commonjs/utils/versionUtils-cjs.d.cts.map +1 -0
- package/dist/commonjs/utils/versionUtils.d.ts +9 -0
- package/dist/commonjs/utils/versionUtils.js +46 -0
- package/dist/commonjs/version.json +6 -0
- package/dist/esm/config/toolConfig.d.ts +8 -0
- package/dist/esm/config/toolConfig.d.ts.map +1 -0
- package/dist/esm/config/toolConfig.js +36 -0
- package/dist/esm/config/toolConfig.js.map +1 -0
- package/dist/esm/index.d.ts +2 -0
- package/dist/esm/index.d.ts.map +1 -0
- package/dist/esm/index.js +36 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +1 -1
- package/dist/esm/tools/MapboxApiBasedTool.d.ts +83 -0
- package/dist/esm/tools/MapboxApiBasedTool.d.ts.map +1 -0
- package/dist/{tools → esm/tools}/MapboxApiBasedTool.js +20 -13
- package/dist/esm/tools/MapboxApiBasedTool.js.map +1 -0
- package/dist/esm/tools/category-list-tool/CategoryListTool.d.ts +28 -0
- package/dist/esm/tools/category-list-tool/CategoryListTool.d.ts.map +1 -0
- package/dist/esm/tools/category-list-tool/CategoryListTool.js +64 -0
- package/dist/esm/tools/category-list-tool/CategoryListTool.js.map +1 -0
- package/dist/esm/tools/category-search-tool/CategorySearchTool.d.ts +89 -0
- package/dist/esm/tools/category-search-tool/CategorySearchTool.d.ts.map +1 -0
- package/dist/esm/tools/category-search-tool/CategorySearchTool.js +184 -0
- package/dist/esm/tools/category-search-tool/CategorySearchTool.js.map +1 -0
- package/dist/esm/tools/directions-tool/DirectionsTool.d.ts +44 -0
- package/dist/esm/tools/directions-tool/DirectionsTool.d.ts.map +1 -0
- package/dist/{tools → esm/tools}/directions-tool/DirectionsTool.js +9 -8
- package/dist/esm/tools/directions-tool/DirectionsTool.js.map +1 -0
- package/dist/esm/tools/directions-tool/cleanResponseData.d.ts +11 -0
- package/dist/esm/tools/directions-tool/cleanResponseData.d.ts.map +1 -0
- package/dist/esm/tools/directions-tool/cleanResponseData.js.map +1 -0
- package/dist/esm/tools/directions-tool/formatIsoDateTime.d.ts +8 -0
- package/dist/esm/tools/directions-tool/formatIsoDateTime.d.ts.map +1 -0
- package/dist/esm/tools/directions-tool/formatIsoDateTime.js.map +1 -0
- package/dist/esm/tools/forward-geocode-tool/ForwardGeocodeTool.d.ts +98 -0
- package/dist/esm/tools/forward-geocode-tool/ForwardGeocodeTool.d.ts.map +1 -0
- package/dist/{tools → esm/tools}/forward-geocode-tool/ForwardGeocodeTool.js +8 -5
- package/dist/esm/tools/forward-geocode-tool/ForwardGeocodeTool.js.map +1 -0
- package/dist/esm/tools/isochrone-tool/IsochroneTool.d.ts +60 -0
- package/dist/esm/tools/isochrone-tool/IsochroneTool.d.ts.map +1 -0
- package/dist/{tools → esm/tools}/isochrone-tool/IsochroneTool.js +8 -5
- package/dist/esm/tools/isochrone-tool/IsochroneTool.js.map +1 -0
- package/dist/esm/tools/matrix-tool/MatrixTool.d.ts +51 -0
- package/dist/esm/tools/matrix-tool/MatrixTool.d.ts.map +1 -0
- package/dist/{tools → esm/tools}/matrix-tool/MatrixTool.js +8 -5
- package/dist/{tools → esm/tools}/matrix-tool/MatrixTool.js.map +1 -1
- package/dist/esm/tools/poi-search-tool/PoiSearchTool.d.ts +119 -0
- package/dist/esm/tools/poi-search-tool/PoiSearchTool.d.ts.map +1 -0
- package/dist/{tools → esm/tools}/poi-search-tool/PoiSearchTool.js +9 -6
- package/dist/esm/tools/poi-search-tool/PoiSearchTool.js.map +1 -0
- package/dist/esm/tools/reverse-geocode-tool/ReverseGeocodeTool.d.ts +46 -0
- package/dist/esm/tools/reverse-geocode-tool/ReverseGeocodeTool.d.ts.map +1 -0
- package/dist/{tools → esm/tools}/reverse-geocode-tool/ReverseGeocodeTool.js +8 -5
- package/dist/esm/tools/reverse-geocode-tool/ReverseGeocodeTool.js.map +1 -0
- package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.d.ts +179 -0
- package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -0
- package/dist/{tools → esm/tools}/static-map-image-tool/StaticMapImageTool.js +7 -4
- package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -0
- package/dist/esm/tools/toolRegistry.d.ts +15 -0
- package/dist/esm/tools/toolRegistry.d.ts.map +1 -0
- package/dist/{tools → esm/tools}/toolRegistry.js +2 -0
- package/dist/esm/tools/toolRegistry.js.map +1 -0
- package/dist/esm/tools/version-tool/VersionTool.d.ts +18 -0
- package/dist/esm/tools/version-tool/VersionTool.d.ts.map +1 -0
- package/dist/{tools → esm/tools}/version-tool/VersionTool.js +2 -4
- package/dist/esm/tools/version-tool/VersionTool.js.map +1 -0
- package/dist/esm/utils/fetchRequest.d.ts +38 -0
- package/dist/esm/utils/fetchRequest.d.ts.map +1 -0
- package/dist/esm/utils/fetchRequest.js +105 -0
- package/dist/esm/utils/fetchRequest.js.map +1 -0
- package/dist/esm/utils/versionUtils.d.ts.map +1 -0
- package/dist/{utils → esm/utils}/versionUtils.js +4 -2
- package/dist/esm/utils/versionUtils.js.map +1 -0
- package/dist/esm/version.json +6 -0
- package/package.json +44 -29
- package/dist/index.d.ts +0 -2
- package/dist/index.js +0 -25
- package/dist/index.js.map +0 -1
- package/dist/tools/MapboxApiBasedTool.d.ts.map +0 -1
- package/dist/tools/MapboxApiBasedTool.js.map +0 -1
- package/dist/tools/MapboxApiBasedTool.test.d.ts +0 -2
- package/dist/tools/MapboxApiBasedTool.test.d.ts.map +0 -1
- package/dist/tools/MapboxApiBasedTool.test.js +0 -143
- package/dist/tools/MapboxApiBasedTool.test.js.map +0 -1
- package/dist/tools/category-search-tool/CategorySearchTool.d.ts.map +0 -1
- package/dist/tools/category-search-tool/CategorySearchTool.js +0 -666
- package/dist/tools/category-search-tool/CategorySearchTool.js.map +0 -1
- package/dist/tools/category-search-tool/CategorySearchTool.test.d.ts +0 -2
- package/dist/tools/category-search-tool/CategorySearchTool.test.d.ts.map +0 -1
- package/dist/tools/category-search-tool/CategorySearchTool.test.js +0 -369
- package/dist/tools/category-search-tool/CategorySearchTool.test.js.map +0 -1
- package/dist/tools/directions-tool/DirectionsTool.d.ts.map +0 -1
- package/dist/tools/directions-tool/DirectionsTool.js.map +0 -1
- package/dist/tools/directions-tool/DirectionsTool.test.d.ts +0 -2
- package/dist/tools/directions-tool/DirectionsTool.test.d.ts.map +0 -1
- package/dist/tools/directions-tool/DirectionsTool.test.js +0 -822
- package/dist/tools/directions-tool/DirectionsTool.test.js.map +0 -1
- package/dist/tools/directions-tool/cleanResponseData.d.ts.map +0 -1
- package/dist/tools/directions-tool/cleanResponseData.js.map +0 -1
- package/dist/tools/directions-tool/cleanResponseData.test.d.ts +0 -2
- package/dist/tools/directions-tool/cleanResponseData.test.d.ts.map +0 -1
- package/dist/tools/directions-tool/cleanResponseData.test.js +0 -295
- package/dist/tools/directions-tool/cleanResponseData.test.js.map +0 -1
- package/dist/tools/directions-tool/formatIsoDateTime.d.ts.map +0 -1
- package/dist/tools/directions-tool/formatIsoDateTime.js.map +0 -1
- package/dist/tools/directions-tool/formatIsoDateTime.test.d.ts +0 -2
- package/dist/tools/directions-tool/formatIsoDateTime.test.d.ts.map +0 -1
- package/dist/tools/directions-tool/formatIsoDateTime.test.js +0 -26
- package/dist/tools/directions-tool/formatIsoDateTime.test.js.map +0 -1
- package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.d.ts.map +0 -1
- package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.js.map +0 -1
- package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.d.ts +0 -2
- package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.d.ts.map +0 -1
- package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.js +0 -415
- package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.js.map +0 -1
- package/dist/tools/isochrone-tool/IsochroneTool.d.ts.map +0 -1
- package/dist/tools/isochrone-tool/IsochroneTool.js.map +0 -1
- package/dist/tools/isochrone-tool/IsochroneTool.test.d.ts +0 -2
- package/dist/tools/isochrone-tool/IsochroneTool.test.d.ts.map +0 -1
- package/dist/tools/isochrone-tool/IsochroneTool.test.js +0 -111
- package/dist/tools/isochrone-tool/IsochroneTool.test.js.map +0 -1
- package/dist/tools/matrix-tool/MatrixTool.d.ts.map +0 -1
- package/dist/tools/matrix-tool/MatrixTool.test.d.ts +0 -2
- package/dist/tools/matrix-tool/MatrixTool.test.d.ts.map +0 -1
- package/dist/tools/matrix-tool/MatrixTool.test.js +0 -816
- package/dist/tools/matrix-tool/MatrixTool.test.js.map +0 -1
- package/dist/tools/poi-search-tool/PoiSearchTool.d.ts.map +0 -1
- package/dist/tools/poi-search-tool/PoiSearchTool.js.map +0 -1
- package/dist/tools/poi-search-tool/PoiSearchTool.test.d.ts +0 -2
- package/dist/tools/poi-search-tool/PoiSearchTool.test.d.ts.map +0 -1
- package/dist/tools/poi-search-tool/PoiSearchTool.test.js +0 -418
- package/dist/tools/poi-search-tool/PoiSearchTool.test.js.map +0 -1
- package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.d.ts.map +0 -1
- package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.js.map +0 -1
- package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.d.ts +0 -2
- package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.d.ts.map +0 -1
- package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.js +0 -403
- package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.js.map +0 -1
- package/dist/tools/schema-validation.test.d.ts +0 -2
- package/dist/tools/schema-validation.test.d.ts.map +0 -1
- package/dist/tools/schema-validation.test.js +0 -75
- package/dist/tools/schema-validation.test.js.map +0 -1
- package/dist/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +0 -1
- package/dist/tools/static-map-image-tool/StaticMapImageTool.js.map +0 -1
- package/dist/tools/static-map-image-tool/StaticMapImageTool.test.d.ts +0 -2
- package/dist/tools/static-map-image-tool/StaticMapImageTool.test.d.ts.map +0 -1
- package/dist/tools/static-map-image-tool/StaticMapImageTool.test.js +0 -441
- package/dist/tools/static-map-image-tool/StaticMapImageTool.test.js.map +0 -1
- package/dist/tools/tool-naming-convention.test.d.ts +0 -2
- package/dist/tools/tool-naming-convention.test.d.ts.map +0 -1
- package/dist/tools/tool-naming-convention.test.js +0 -43
- package/dist/tools/tool-naming-convention.test.js.map +0 -1
- package/dist/tools/toolRegistry.d.ts.map +0 -1
- package/dist/tools/toolRegistry.js.map +0 -1
- package/dist/tools/version-tool/VersionTool.d.ts.map +0 -1
- package/dist/tools/version-tool/VersionTool.js.map +0 -1
- package/dist/tools/version-tool/VersionTool.test.d.ts +0 -2
- package/dist/tools/version-tool/VersionTool.test.d.ts.map +0 -1
- package/dist/tools/version-tool/VersionTool.test.js +0 -49
- package/dist/tools/version-tool/VersionTool.test.js.map +0 -1
- package/dist/utils/requestUtils.d.ts +0 -6
- package/dist/utils/requestUtils.d.ts.map +0 -1
- package/dist/utils/requestUtils.js +0 -60
- package/dist/utils/requestUtils.js.map +0 -1
- package/dist/utils/requestUtils.test-helpers.d.ts +0 -3
- package/dist/utils/requestUtils.test-helpers.d.ts.map +0 -1
- package/dist/utils/requestUtils.test-helpers.js +0 -32
- package/dist/utils/requestUtils.test-helpers.js.map +0 -1
- package/dist/utils/requestUtils.test.d.ts +0 -2
- package/dist/utils/requestUtils.test.d.ts.map +0 -1
- package/dist/utils/requestUtils.test.js +0 -115
- package/dist/utils/requestUtils.test.js.map +0 -1
- package/dist/utils/versionUtils.d.ts.map +0 -1
- package/dist/utils/versionUtils.js.map +0 -1
- package/dist/version.json +0 -6
- /package/dist/{tools → commonjs/tools}/directions-tool/cleanResponseData.d.ts +0 -0
- /package/dist/{tools → commonjs/tools}/directions-tool/formatIsoDateTime.d.ts +0 -0
- /package/dist/{tools → esm/tools}/directions-tool/cleanResponseData.js +0 -0
- /package/dist/{tools → esm/tools}/directions-tool/formatIsoDateTime.js +0 -0
- /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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["
|
|
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,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
|
|
54
|
-
static
|
|
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
|
|
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
|
|
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"}
|