@mapbox/mcp-docs-server 0.1.0-dev
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/LICENSE +21 -0
- package/README.md +196 -0
- 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 +41 -0
- package/dist/commonjs/config/toolConfig.js.map +1 -0
- package/dist/commonjs/constants/mapboxStreetsV8Fields.trimmed.d.ts +306 -0
- package/dist/commonjs/constants/mapboxStreetsV8Fields.trimmed.d.ts.map +1 -0
- package/dist/commonjs/constants/mapboxStreetsV8Fields.trimmed.js +2069 -0
- package/dist/commonjs/constants/mapboxStreetsV8Fields.trimmed.js.map +1 -0
- package/dist/commonjs/index.d.ts +2 -0
- package/dist/commonjs/index.d.ts.map +1 -0
- package/dist/commonjs/index.js +82 -0
- package/dist/commonjs/index.js.map +1 -0
- package/dist/commonjs/package.json +3 -0
- package/dist/commonjs/resources/BaseResource.d.ts +21 -0
- package/dist/commonjs/resources/BaseResource.d.ts.map +1 -0
- package/dist/commonjs/resources/BaseResource.js +21 -0
- package/dist/commonjs/resources/BaseResource.js.map +1 -0
- package/dist/commonjs/resources/index.d.ts +3 -0
- package/dist/commonjs/resources/index.d.ts.map +1 -0
- package/dist/commonjs/resources/index.js +9 -0
- package/dist/commonjs/resources/index.js.map +1 -0
- package/dist/commonjs/resources/mapbox-api-reference-resource/MapboxApiReferenceResource.d.ts +19 -0
- package/dist/commonjs/resources/mapbox-api-reference-resource/MapboxApiReferenceResource.d.ts.map +1 -0
- package/dist/commonjs/resources/mapbox-api-reference-resource/MapboxApiReferenceResource.js +61 -0
- package/dist/commonjs/resources/mapbox-api-reference-resource/MapboxApiReferenceResource.js.map +1 -0
- package/dist/commonjs/resources/mapbox-documentation-resource/MapboxDocumentationResource.d.ts +29 -0
- package/dist/commonjs/resources/mapbox-documentation-resource/MapboxDocumentationResource.d.ts.map +1 -0
- package/dist/commonjs/resources/mapbox-documentation-resource/MapboxDocumentationResource.js +66 -0
- package/dist/commonjs/resources/mapbox-documentation-resource/MapboxDocumentationResource.js.map +1 -0
- package/dist/commonjs/resources/mapbox-examples-resource/MapboxExamplesResource.d.ts +19 -0
- package/dist/commonjs/resources/mapbox-examples-resource/MapboxExamplesResource.d.ts.map +1 -0
- package/dist/commonjs/resources/mapbox-examples-resource/MapboxExamplesResource.js +61 -0
- package/dist/commonjs/resources/mapbox-examples-resource/MapboxExamplesResource.js.map +1 -0
- package/dist/commonjs/resources/mapbox-guides-resource/MapboxGuidesResource.d.ts +19 -0
- package/dist/commonjs/resources/mapbox-guides-resource/MapboxGuidesResource.d.ts.map +1 -0
- package/dist/commonjs/resources/mapbox-guides-resource/MapboxGuidesResource.js +61 -0
- package/dist/commonjs/resources/mapbox-guides-resource/MapboxGuidesResource.js.map +1 -0
- package/dist/commonjs/resources/mapbox-layer-type-mapping-resource/MapboxLayerTypeMappingResource.d.ts +19 -0
- package/dist/commonjs/resources/mapbox-layer-type-mapping-resource/MapboxLayerTypeMappingResource.d.ts.map +1 -0
- package/dist/commonjs/resources/mapbox-layer-type-mapping-resource/MapboxLayerTypeMappingResource.js +170 -0
- package/dist/commonjs/resources/mapbox-layer-type-mapping-resource/MapboxLayerTypeMappingResource.js.map +1 -0
- package/dist/commonjs/resources/mapbox-reference-resource/MapboxReferenceResource.d.ts +19 -0
- package/dist/commonjs/resources/mapbox-reference-resource/MapboxReferenceResource.d.ts.map +1 -0
- package/dist/commonjs/resources/mapbox-reference-resource/MapboxReferenceResource.js +61 -0
- package/dist/commonjs/resources/mapbox-reference-resource/MapboxReferenceResource.js.map +1 -0
- package/dist/commonjs/resources/mapbox-sdk-docs-resource/MapboxSdkDocsResource.d.ts +19 -0
- package/dist/commonjs/resources/mapbox-sdk-docs-resource/MapboxSdkDocsResource.d.ts.map +1 -0
- package/dist/commonjs/resources/mapbox-sdk-docs-resource/MapboxSdkDocsResource.js +61 -0
- package/dist/commonjs/resources/mapbox-sdk-docs-resource/MapboxSdkDocsResource.js.map +1 -0
- package/dist/commonjs/resources/mapbox-streets-v8-fields-resource/MapboxStreetsV8FieldsResource.d.ts +19 -0
- package/dist/commonjs/resources/mapbox-streets-v8-fields-resource/MapboxStreetsV8FieldsResource.d.ts.map +1 -0
- package/dist/commonjs/resources/mapbox-streets-v8-fields-resource/MapboxStreetsV8FieldsResource.js +30 -0
- package/dist/commonjs/resources/mapbox-streets-v8-fields-resource/MapboxStreetsV8FieldsResource.js.map +1 -0
- package/dist/commonjs/resources/mapbox-style-layers-resource/MapboxStyleLayersResource.d.ts +20 -0
- package/dist/commonjs/resources/mapbox-style-layers-resource/MapboxStyleLayersResource.d.ts.map +1 -0
- package/dist/commonjs/resources/mapbox-style-layers-resource/MapboxStyleLayersResource.js +323 -0
- package/dist/commonjs/resources/mapbox-style-layers-resource/MapboxStyleLayersResource.js.map +1 -0
- package/dist/commonjs/resources/mapbox-token-scopes-resource/MapboxTokenScopesResource.d.ts +20 -0
- package/dist/commonjs/resources/mapbox-token-scopes-resource/MapboxTokenScopesResource.d.ts.map +1 -0
- package/dist/commonjs/resources/mapbox-token-scopes-resource/MapboxTokenScopesResource.js +108 -0
- package/dist/commonjs/resources/mapbox-token-scopes-resource/MapboxTokenScopesResource.js.map +1 -0
- package/dist/commonjs/resources/resourceRegistry.d.ts +15 -0
- package/dist/commonjs/resources/resourceRegistry.d.ts.map +1 -0
- package/dist/commonjs/resources/resourceRegistry.js +39 -0
- package/dist/commonjs/resources/resourceRegistry.js.map +1 -0
- package/dist/commonjs/resources/utils/docParser.d.ts +28 -0
- package/dist/commonjs/resources/utils/docParser.d.ts.map +1 -0
- package/dist/commonjs/resources/utils/docParser.js +94 -0
- package/dist/commonjs/resources/utils/docParser.js.map +1 -0
- package/dist/commonjs/tools/BaseTool.d.ts +30 -0
- package/dist/commonjs/tools/BaseTool.d.ts.map +1 -0
- package/dist/commonjs/tools/BaseTool.js +63 -0
- package/dist/commonjs/tools/BaseTool.js.map +1 -0
- package/dist/commonjs/tools/batch-get-documents-tool/BatchGetDocumentsTool.d.ts +21 -0
- package/dist/commonjs/tools/batch-get-documents-tool/BatchGetDocumentsTool.d.ts.map +1 -0
- package/dist/commonjs/tools/batch-get-documents-tool/BatchGetDocumentsTool.input.schema.d.ts +6 -0
- package/dist/commonjs/tools/batch-get-documents-tool/BatchGetDocumentsTool.input.schema.d.ts.map +1 -0
- package/dist/commonjs/tools/batch-get-documents-tool/BatchGetDocumentsTool.input.schema.js +14 -0
- package/dist/commonjs/tools/batch-get-documents-tool/BatchGetDocumentsTool.input.schema.js.map +1 -0
- package/dist/commonjs/tools/batch-get-documents-tool/BatchGetDocumentsTool.js +94 -0
- package/dist/commonjs/tools/batch-get-documents-tool/BatchGetDocumentsTool.js.map +1 -0
- package/dist/commonjs/tools/get-document-tool/GetDocumentTool.d.ts +21 -0
- package/dist/commonjs/tools/get-document-tool/GetDocumentTool.d.ts.map +1 -0
- package/dist/commonjs/tools/get-document-tool/GetDocumentTool.input.schema.d.ts +6 -0
- package/dist/commonjs/tools/get-document-tool/GetDocumentTool.input.schema.d.ts.map +1 -0
- package/dist/commonjs/tools/get-document-tool/GetDocumentTool.input.schema.js +13 -0
- package/dist/commonjs/tools/get-document-tool/GetDocumentTool.input.schema.js.map +1 -0
- package/dist/commonjs/tools/get-document-tool/GetDocumentTool.js +80 -0
- package/dist/commonjs/tools/get-document-tool/GetDocumentTool.js.map +1 -0
- package/dist/commonjs/tools/index.d.ts +3 -0
- package/dist/commonjs/tools/index.d.ts.map +1 -0
- package/dist/commonjs/tools/index.js +10 -0
- package/dist/commonjs/tools/index.js.map +1 -0
- package/dist/commonjs/tools/toolRegistry.d.ts +12 -0
- package/dist/commonjs/tools/toolRegistry.d.ts.map +1 -0
- package/dist/commonjs/tools/toolRegistry.js +29 -0
- package/dist/commonjs/tools/toolRegistry.js.map +1 -0
- package/dist/commonjs/utils/docCache.d.ts +28 -0
- package/dist/commonjs/utils/docCache.d.ts.map +1 -0
- package/dist/commonjs/utils/docCache.js +129 -0
- package/dist/commonjs/utils/docCache.js.map +1 -0
- package/dist/commonjs/utils/httpPipeline.d.ts +39 -0
- package/dist/commonjs/utils/httpPipeline.d.ts.map +1 -0
- package/dist/commonjs/utils/httpPipeline.js +112 -0
- package/dist/commonjs/utils/httpPipeline.js.map +1 -0
- package/dist/commonjs/utils/index.d.ts +4 -0
- package/dist/commonjs/utils/index.d.ts.map +1 -0
- package/dist/commonjs/utils/index.js +12 -0
- package/dist/commonjs/utils/index.js.map +1 -0
- package/dist/commonjs/utils/types.d.ts +7 -0
- package/dist/commonjs/utils/types.d.ts.map +1 -0
- package/dist/commonjs/utils/types.js +5 -0
- package/dist/commonjs/utils/types.js.map +1 -0
- package/dist/commonjs/utils/versionUtils.d.ts +9 -0
- package/dist/commonjs/utils/versionUtils.d.ts.map +1 -0
- package/dist/commonjs/utils/versionUtils.js +34 -0
- package/dist/commonjs/utils/versionUtils.js.map +1 -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 +37 -0
- package/dist/esm/config/toolConfig.js.map +1 -0
- package/dist/esm/constants/mapboxStreetsV8Fields.trimmed.d.ts +306 -0
- package/dist/esm/constants/mapboxStreetsV8Fields.trimmed.d.ts.map +1 -0
- package/dist/esm/constants/mapboxStreetsV8Fields.trimmed.js +2066 -0
- package/dist/esm/constants/mapboxStreetsV8Fields.trimmed.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 +80 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/resources/BaseResource.d.ts +21 -0
- package/dist/esm/resources/BaseResource.d.ts.map +1 -0
- package/dist/esm/resources/BaseResource.js +17 -0
- package/dist/esm/resources/BaseResource.js.map +1 -0
- package/dist/esm/resources/index.d.ts +3 -0
- package/dist/esm/resources/index.d.ts.map +1 -0
- package/dist/esm/resources/index.js +4 -0
- package/dist/esm/resources/index.js.map +1 -0
- package/dist/esm/resources/mapbox-api-reference-resource/MapboxApiReferenceResource.d.ts +19 -0
- package/dist/esm/resources/mapbox-api-reference-resource/MapboxApiReferenceResource.d.ts.map +1 -0
- package/dist/esm/resources/mapbox-api-reference-resource/MapboxApiReferenceResource.js +57 -0
- package/dist/esm/resources/mapbox-api-reference-resource/MapboxApiReferenceResource.js.map +1 -0
- package/dist/esm/resources/mapbox-documentation-resource/MapboxDocumentationResource.d.ts +29 -0
- package/dist/esm/resources/mapbox-documentation-resource/MapboxDocumentationResource.d.ts.map +1 -0
- package/dist/esm/resources/mapbox-documentation-resource/MapboxDocumentationResource.js +62 -0
- package/dist/esm/resources/mapbox-documentation-resource/MapboxDocumentationResource.js.map +1 -0
- package/dist/esm/resources/mapbox-examples-resource/MapboxExamplesResource.d.ts +19 -0
- package/dist/esm/resources/mapbox-examples-resource/MapboxExamplesResource.d.ts.map +1 -0
- package/dist/esm/resources/mapbox-examples-resource/MapboxExamplesResource.js +57 -0
- package/dist/esm/resources/mapbox-examples-resource/MapboxExamplesResource.js.map +1 -0
- package/dist/esm/resources/mapbox-guides-resource/MapboxGuidesResource.d.ts +19 -0
- package/dist/esm/resources/mapbox-guides-resource/MapboxGuidesResource.d.ts.map +1 -0
- package/dist/esm/resources/mapbox-guides-resource/MapboxGuidesResource.js +57 -0
- package/dist/esm/resources/mapbox-guides-resource/MapboxGuidesResource.js.map +1 -0
- package/dist/esm/resources/mapbox-layer-type-mapping-resource/MapboxLayerTypeMappingResource.d.ts +19 -0
- package/dist/esm/resources/mapbox-layer-type-mapping-resource/MapboxLayerTypeMappingResource.d.ts.map +1 -0
- package/dist/esm/resources/mapbox-layer-type-mapping-resource/MapboxLayerTypeMappingResource.js +166 -0
- package/dist/esm/resources/mapbox-layer-type-mapping-resource/MapboxLayerTypeMappingResource.js.map +1 -0
- package/dist/esm/resources/mapbox-reference-resource/MapboxReferenceResource.d.ts +19 -0
- package/dist/esm/resources/mapbox-reference-resource/MapboxReferenceResource.d.ts.map +1 -0
- package/dist/esm/resources/mapbox-reference-resource/MapboxReferenceResource.js +57 -0
- package/dist/esm/resources/mapbox-reference-resource/MapboxReferenceResource.js.map +1 -0
- package/dist/esm/resources/mapbox-sdk-docs-resource/MapboxSdkDocsResource.d.ts +19 -0
- package/dist/esm/resources/mapbox-sdk-docs-resource/MapboxSdkDocsResource.d.ts.map +1 -0
- package/dist/esm/resources/mapbox-sdk-docs-resource/MapboxSdkDocsResource.js +57 -0
- package/dist/esm/resources/mapbox-sdk-docs-resource/MapboxSdkDocsResource.js.map +1 -0
- package/dist/esm/resources/mapbox-streets-v8-fields-resource/MapboxStreetsV8FieldsResource.d.ts +19 -0
- package/dist/esm/resources/mapbox-streets-v8-fields-resource/MapboxStreetsV8FieldsResource.d.ts.map +1 -0
- package/dist/esm/resources/mapbox-streets-v8-fields-resource/MapboxStreetsV8FieldsResource.js +26 -0
- package/dist/esm/resources/mapbox-streets-v8-fields-resource/MapboxStreetsV8FieldsResource.js.map +1 -0
- package/dist/esm/resources/mapbox-style-layers-resource/MapboxStyleLayersResource.d.ts +20 -0
- package/dist/esm/resources/mapbox-style-layers-resource/MapboxStyleLayersResource.d.ts.map +1 -0
- package/dist/esm/resources/mapbox-style-layers-resource/MapboxStyleLayersResource.js +319 -0
- package/dist/esm/resources/mapbox-style-layers-resource/MapboxStyleLayersResource.js.map +1 -0
- package/dist/esm/resources/mapbox-token-scopes-resource/MapboxTokenScopesResource.d.ts +20 -0
- package/dist/esm/resources/mapbox-token-scopes-resource/MapboxTokenScopesResource.d.ts.map +1 -0
- package/dist/esm/resources/mapbox-token-scopes-resource/MapboxTokenScopesResource.js +104 -0
- package/dist/esm/resources/mapbox-token-scopes-resource/MapboxTokenScopesResource.js.map +1 -0
- package/dist/esm/resources/resourceRegistry.d.ts +15 -0
- package/dist/esm/resources/resourceRegistry.d.ts.map +1 -0
- package/dist/esm/resources/resourceRegistry.js +34 -0
- package/dist/esm/resources/resourceRegistry.js.map +1 -0
- package/dist/esm/resources/utils/docParser.d.ts +28 -0
- package/dist/esm/resources/utils/docParser.d.ts.map +1 -0
- package/dist/esm/resources/utils/docParser.js +88 -0
- package/dist/esm/resources/utils/docParser.js.map +1 -0
- package/dist/esm/tools/BaseTool.d.ts +30 -0
- package/dist/esm/tools/BaseTool.d.ts.map +1 -0
- package/dist/esm/tools/BaseTool.js +59 -0
- package/dist/esm/tools/BaseTool.js.map +1 -0
- package/dist/esm/tools/batch-get-documents-tool/BatchGetDocumentsTool.d.ts +21 -0
- package/dist/esm/tools/batch-get-documents-tool/BatchGetDocumentsTool.d.ts.map +1 -0
- package/dist/esm/tools/batch-get-documents-tool/BatchGetDocumentsTool.input.schema.d.ts +6 -0
- package/dist/esm/tools/batch-get-documents-tool/BatchGetDocumentsTool.input.schema.d.ts.map +1 -0
- package/dist/esm/tools/batch-get-documents-tool/BatchGetDocumentsTool.input.schema.js +11 -0
- package/dist/esm/tools/batch-get-documents-tool/BatchGetDocumentsTool.input.schema.js.map +1 -0
- package/dist/esm/tools/batch-get-documents-tool/BatchGetDocumentsTool.js +90 -0
- package/dist/esm/tools/batch-get-documents-tool/BatchGetDocumentsTool.js.map +1 -0
- package/dist/esm/tools/get-document-tool/GetDocumentTool.d.ts +21 -0
- package/dist/esm/tools/get-document-tool/GetDocumentTool.d.ts.map +1 -0
- package/dist/esm/tools/get-document-tool/GetDocumentTool.input.schema.d.ts +6 -0
- package/dist/esm/tools/get-document-tool/GetDocumentTool.input.schema.d.ts.map +1 -0
- package/dist/esm/tools/get-document-tool/GetDocumentTool.input.schema.js +10 -0
- package/dist/esm/tools/get-document-tool/GetDocumentTool.input.schema.js.map +1 -0
- package/dist/esm/tools/get-document-tool/GetDocumentTool.js +76 -0
- package/dist/esm/tools/get-document-tool/GetDocumentTool.js.map +1 -0
- package/dist/esm/tools/index.d.ts +3 -0
- package/dist/esm/tools/index.d.ts.map +1 -0
- package/dist/esm/tools/index.js +4 -0
- package/dist/esm/tools/index.js.map +1 -0
- package/dist/esm/tools/toolRegistry.d.ts +12 -0
- package/dist/esm/tools/toolRegistry.d.ts.map +1 -0
- package/dist/esm/tools/toolRegistry.js +23 -0
- package/dist/esm/tools/toolRegistry.js.map +1 -0
- package/dist/esm/utils/docCache.d.ts +28 -0
- package/dist/esm/utils/docCache.d.ts.map +1 -0
- package/dist/esm/utils/docCache.js +124 -0
- package/dist/esm/utils/docCache.js.map +1 -0
- package/dist/esm/utils/httpPipeline.d.ts +39 -0
- package/dist/esm/utils/httpPipeline.d.ts.map +1 -0
- package/dist/esm/utils/httpPipeline.js +106 -0
- package/dist/esm/utils/httpPipeline.js.map +1 -0
- package/dist/esm/utils/index.d.ts +4 -0
- package/dist/esm/utils/index.d.ts.map +1 -0
- package/dist/esm/utils/index.js +5 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/types.d.ts +7 -0
- package/dist/esm/utils/types.d.ts.map +1 -0
- package/dist/esm/utils/types.js +4 -0
- package/dist/esm/utils/types.js.map +1 -0
- package/dist/esm/utils/versionUtils.d.ts +9 -0
- package/dist/esm/utils/versionUtils.d.ts.map +1 -0
- package/dist/esm/utils/versionUtils.js +28 -0
- package/dist/esm/utils/versionUtils.js.map +1 -0
- package/dist/esm/version.json +6 -0
- package/package.json +132 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docParser.js","sourceRoot":"","sources":["../../../../src/resources/utils/docParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { McpServer, RegisteredTool } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { RequestHandlerExtra } from '@modelcontextprotocol/sdk/shared/protocol.js';
|
|
3
|
+
import { CallToolResult, ToolAnnotations } from '@modelcontextprotocol/sdk/types.js';
|
|
4
|
+
import { z, ZodTypeAny } from 'zod';
|
|
5
|
+
export declare abstract class BaseTool<InputSchema extends ZodTypeAny, OutputSchema extends ZodTypeAny = ZodTypeAny> {
|
|
6
|
+
abstract readonly name: string;
|
|
7
|
+
abstract readonly description: string;
|
|
8
|
+
abstract readonly annotations: ToolAnnotations;
|
|
9
|
+
readonly inputSchema: InputSchema;
|
|
10
|
+
readonly outputSchema?: OutputSchema;
|
|
11
|
+
protected server: McpServer | null;
|
|
12
|
+
constructor(params: {
|
|
13
|
+
inputSchema: InputSchema;
|
|
14
|
+
outputSchema?: OutputSchema;
|
|
15
|
+
});
|
|
16
|
+
/**
|
|
17
|
+
* Tool logic to be implemented by subclasses.
|
|
18
|
+
*/
|
|
19
|
+
run(rawInput: unknown, _extra?: RequestHandlerExtra<any, any>): Promise<CallToolResult>;
|
|
20
|
+
protected abstract execute(inputSchema: z.infer<InputSchema>): Promise<CallToolResult>;
|
|
21
|
+
/**
|
|
22
|
+
* Installs the tool to the given MCP server.
|
|
23
|
+
*/
|
|
24
|
+
installTo(server: McpServer): RegisteredTool;
|
|
25
|
+
/**
|
|
26
|
+
* Helper method to send logging messages
|
|
27
|
+
*/
|
|
28
|
+
protected log(level: 'debug' | 'info' | 'warning' | 'error', data: string | Record<string, unknown>): void;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=BaseTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseTool.d.ts","sourceRoot":"","sources":["../../../src/tools/BaseTool.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,SAAS,EACT,cAAc,EACf,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8CAA8C,CAAC;AACnF,OAAO,EACL,cAAc,EACd,eAAe,EAChB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AAEpC,8BAAsB,QAAQ,CAC5B,WAAW,SAAS,UAAU,EAC9B,YAAY,SAAS,UAAU,GAAG,UAAU;IAE5C,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC;IAE/C,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC,QAAQ,CAAC,YAAY,CAAC,EAAE,YAAY,CAAC;IACrC,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAAQ;gBAE9B,MAAM,EAAE;QAClB,WAAW,EAAE,WAAW,CAAC;QACzB,YAAY,CAAC,EAAE,YAAY,CAAC;KAC7B;IAKD;;OAEG;IACG,GAAG,CACP,QAAQ,EAAE,OAAO,EAEjB,MAAM,CAAC,EAAE,mBAAmB,CAAC,GAAG,EAAE,GAAG,CAAC,GACrC,OAAO,CAAC,cAAc,CAAC;IAY1B,SAAS,CAAC,QAAQ,CAAC,OAAO,CACxB,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,GAChC,OAAO,CAAC,cAAc,CAAC;IAE1B;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,SAAS,GAAG,cAAc;IAkC5C;;OAEG;IACH,SAAS,CAAC,GAAG,CACX,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,GAAG,OAAO,EAC7C,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACrC,IAAI;CAKR"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
// Copyright (c) Mapbox, Inc.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
export class BaseTool {
|
|
4
|
+
inputSchema;
|
|
5
|
+
outputSchema;
|
|
6
|
+
server = null;
|
|
7
|
+
constructor(params) {
|
|
8
|
+
this.inputSchema = params.inputSchema;
|
|
9
|
+
this.outputSchema = params.outputSchema;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Tool logic to be implemented by subclasses.
|
|
13
|
+
*/
|
|
14
|
+
async run(rawInput,
|
|
15
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
16
|
+
_extra) {
|
|
17
|
+
try {
|
|
18
|
+
const input = this.inputSchema.parse(rawInput);
|
|
19
|
+
return this.execute(input);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
return {
|
|
23
|
+
isError: true,
|
|
24
|
+
content: [{ type: 'text', text: error.message }]
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Installs the tool to the given MCP server.
|
|
30
|
+
*/
|
|
31
|
+
installTo(server) {
|
|
32
|
+
this.server = server;
|
|
33
|
+
const config = {
|
|
34
|
+
title: this.annotations.title,
|
|
35
|
+
description: this.description,
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
37
|
+
inputSchema: this.inputSchema.shape,
|
|
38
|
+
annotations: this.annotations
|
|
39
|
+
};
|
|
40
|
+
// Add outputSchema if provided
|
|
41
|
+
if (this.outputSchema) {
|
|
42
|
+
config.outputSchema =
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
44
|
+
this.outputSchema.shape;
|
|
45
|
+
}
|
|
46
|
+
return server.registerTool(this.name, config,
|
|
47
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
48
|
+
(args, extra) => this.run(args, extra));
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Helper method to send logging messages
|
|
52
|
+
*/
|
|
53
|
+
log(level, data) {
|
|
54
|
+
if (this.server?.server) {
|
|
55
|
+
this.server.server.sendLoggingMessage({ level, data });
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=BaseTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseTool.js","sourceRoot":"","sources":["../../../src/tools/BaseTool.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,kCAAkC;AAalC,MAAM,OAAgB,QAAQ;IAQnB,WAAW,CAAc;IACzB,YAAY,CAAgB;IAC3B,MAAM,GAAqB,IAAI,CAAC;IAE1C,YAAY,MAGX;QACC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,YAAY,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG,CACP,QAAiB;IACjB,8DAA8D;IAC9D,MAAsC;QAEtC,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC/C,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAG,KAAe,CAAC,OAAO,EAAE,CAAC;aAC5D,CAAC;QACJ,CAAC;IACH,CAAC;IAMD;;OAEG;IACH,SAAS,CAAC,MAAiB;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,MAAM,GAQR;YACF,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,KAAK;YAC7B,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,8DAA8D;YAC9D,WAAW,EAAG,IAAI,CAAC,WAA2C,CAAC,KAAK;YACpE,WAAW,EAAE,IAAI,CAAC,WAAW;SAC9B,CAAC;QAEF,+BAA+B;QAC/B,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,MAAM,CAAC,YAAY;gBACjB,8DAA8D;gBAC7D,IAAI,CAAC,YAA4C,CAAC,KAAK,CAAC;QAC7D,CAAC;QAED,OAAO,MAAM,CAAC,YAAY,CACxB,IAAI,CAAC,IAAI,EACT,MAAM;QACN,8DAA8D;QAC9D,CAAC,IAAS,EAAE,KAAU,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CACjD,CAAC;IACJ,CAAC;IAED;;OAEG;IACO,GAAG,CACX,KAA6C,EAC7C,IAAsC;QAEtC,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;YACxB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,kBAAkB,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import type { HttpRequest } from '../../utils/types.js';
|
|
3
|
+
import { BaseTool } from '../BaseTool.js';
|
|
4
|
+
import { BatchGetDocumentsSchema, BatchGetDocumentsInput } from './BatchGetDocumentsTool.input.schema.js';
|
|
5
|
+
export declare class BatchGetDocumentsTool extends BaseTool<typeof BatchGetDocumentsSchema> {
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
readonly annotations: {
|
|
9
|
+
readOnlyHint: boolean;
|
|
10
|
+
destructiveHint: boolean;
|
|
11
|
+
idempotentHint: boolean;
|
|
12
|
+
openWorldHint: boolean;
|
|
13
|
+
title: string;
|
|
14
|
+
};
|
|
15
|
+
private httpRequest;
|
|
16
|
+
constructor(params: {
|
|
17
|
+
httpRequest: HttpRequest;
|
|
18
|
+
});
|
|
19
|
+
protected execute(input: BatchGetDocumentsInput): Promise<CallToolResult>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=BatchGetDocumentsTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchGetDocumentsTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/batch-get-documents-tool/BatchGetDocumentsTool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAOpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,uBAAuB,EACvB,sBAAsB,EACvB,MAAM,yCAAyC,CAAC;AAejD,qBAAa,qBAAsB,SAAQ,QAAQ,CACjD,OAAO,uBAAuB,CAC/B;IACC,IAAI,SAA8B;IAClC,WAAW,SACyP;IACpQ,QAAQ,CAAC,WAAW;;;;;;MAMlB;IAEF,OAAO,CAAC,WAAW,CAAc;gBAErB,MAAM,EAAE;QAAE,WAAW,EAAE,WAAW,CAAA;KAAE;cAKhC,OAAO,CACrB,KAAK,EAAE,sBAAsB,GAC5B,OAAO,CAAC,cAAc,CAAC;CAsE3B"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const BatchGetDocumentsSchema: z.ZodObject<{
|
|
3
|
+
urls: z.ZodArray<z.ZodString>;
|
|
4
|
+
}, z.core.$strip>;
|
|
5
|
+
export type BatchGetDocumentsInput = z.infer<typeof BatchGetDocumentsSchema>;
|
|
6
|
+
//# sourceMappingURL=BatchGetDocumentsTool.input.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchGetDocumentsTool.input.schema.d.ts","sourceRoot":"","sources":["../../../../src/tools/batch-get-documents-tool/BatchGetDocumentsTool.input.schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,uBAAuB;;iBAQlC,CAAC;AAEH,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
// Copyright (c) Mapbox, Inc.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
export const BatchGetDocumentsSchema = z.object({
|
|
5
|
+
urls: z
|
|
6
|
+
.array(z.string().url())
|
|
7
|
+
.min(1)
|
|
8
|
+
.max(20)
|
|
9
|
+
.describe('Array of Mapbox documentation page URLs to fetch (max 20). All must be mapbox.com URLs.')
|
|
10
|
+
});
|
|
11
|
+
//# sourceMappingURL=BatchGetDocumentsTool.input.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchGetDocumentsTool.input.schema.js","sourceRoot":"","sources":["../../../../src/tools/batch-get-documents-tool/BatchGetDocumentsTool.input.schema.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,kCAAkC;AAElC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9C,IAAI,EAAE,CAAC;SACJ,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC;SACvB,GAAG,CAAC,CAAC,CAAC;SACN,GAAG,CAAC,EAAE,CAAC;SACP,QAAQ,CACP,yFAAyF,CAC1F;CACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
// Copyright (c) Mapbox, Inc.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { docCache, normalizeCacheKey, MAX_ENTRY_BYTES, readBodyWithLimit } from '../../utils/docCache.js';
|
|
4
|
+
import { BaseTool } from '../BaseTool.js';
|
|
5
|
+
import { BatchGetDocumentsSchema } from './BatchGetDocumentsTool.input.schema.js';
|
|
6
|
+
function isMapboxUrl(url) {
|
|
7
|
+
try {
|
|
8
|
+
const { hostname } = new URL(url);
|
|
9
|
+
return hostname === 'mapbox.com' || hostname.endsWith('.mapbox.com');
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class BatchGetDocumentsTool extends BaseTool {
|
|
16
|
+
name = 'batch_get_documents_tool';
|
|
17
|
+
description = 'Fetch the full content of multiple Mapbox documentation pages in a single call (max 20). More efficient than calling get_document_tool multiple times. Returns an array of results — failed pages include an error message rather than failing the whole batch.';
|
|
18
|
+
annotations = {
|
|
19
|
+
readOnlyHint: true,
|
|
20
|
+
destructiveHint: false,
|
|
21
|
+
idempotentHint: true,
|
|
22
|
+
openWorldHint: true,
|
|
23
|
+
title: 'Batch Get Mapbox Documents Tool'
|
|
24
|
+
};
|
|
25
|
+
httpRequest;
|
|
26
|
+
constructor(params) {
|
|
27
|
+
super({ inputSchema: BatchGetDocumentsSchema });
|
|
28
|
+
this.httpRequest = params.httpRequest;
|
|
29
|
+
}
|
|
30
|
+
async execute(input) {
|
|
31
|
+
const invalidUrls = input.urls.filter((url) => !isMapboxUrl(url));
|
|
32
|
+
if (invalidUrls.length > 0) {
|
|
33
|
+
return {
|
|
34
|
+
content: [
|
|
35
|
+
{
|
|
36
|
+
type: 'text',
|
|
37
|
+
text: `Invalid URLs: only mapbox.com URLs are supported. Invalid: ${invalidUrls.join(', ')}`
|
|
38
|
+
}
|
|
39
|
+
],
|
|
40
|
+
isError: true
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
// One in-flight fetch per unique normalized URL. Multiple input URLs that
|
|
44
|
+
// normalize to the same key (e.g. cache-busting query params) share a
|
|
45
|
+
// single HTTP request and a single buffered body.
|
|
46
|
+
const inflightByKey = new Map();
|
|
47
|
+
const fetchOne = (url) => {
|
|
48
|
+
const cached = docCache.get(url);
|
|
49
|
+
if (cached !== null)
|
|
50
|
+
return Promise.resolve(cached);
|
|
51
|
+
const key = normalizeCacheKey(url);
|
|
52
|
+
const existing = inflightByKey.get(key);
|
|
53
|
+
if (existing)
|
|
54
|
+
return existing;
|
|
55
|
+
const promise = (async () => {
|
|
56
|
+
const response = await this.httpRequest(url, {
|
|
57
|
+
headers: { Accept: 'text/markdown, text/plain;q=0.9, */*;q=0.8' }
|
|
58
|
+
});
|
|
59
|
+
if (!response.ok) {
|
|
60
|
+
throw new Error(`${response.status} ${response.statusText}`);
|
|
61
|
+
}
|
|
62
|
+
const content = await readBodyWithLimit(response, MAX_ENTRY_BYTES);
|
|
63
|
+
docCache.set(url, content);
|
|
64
|
+
return content;
|
|
65
|
+
})();
|
|
66
|
+
inflightByKey.set(key, promise);
|
|
67
|
+
return promise;
|
|
68
|
+
};
|
|
69
|
+
const results = await Promise.allSettled(input.urls.map(async (url) => {
|
|
70
|
+
const content = await fetchOne(url);
|
|
71
|
+
return { url, content };
|
|
72
|
+
}));
|
|
73
|
+
const output = results.map((result, i) => {
|
|
74
|
+
if (result.status === 'fulfilled') {
|
|
75
|
+
return result.value;
|
|
76
|
+
}
|
|
77
|
+
return {
|
|
78
|
+
url: input.urls[i],
|
|
79
|
+
error: result.reason instanceof Error
|
|
80
|
+
? result.reason.message
|
|
81
|
+
: 'Unknown error'
|
|
82
|
+
};
|
|
83
|
+
});
|
|
84
|
+
return {
|
|
85
|
+
content: [{ type: 'text', text: JSON.stringify(output, null, 2) }],
|
|
86
|
+
isError: false
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=BatchGetDocumentsTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BatchGetDocumentsTool.js","sourceRoot":"","sources":["../../../../src/tools/batch-get-documents-tool/BatchGetDocumentsTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import type { HttpRequest } from '../../utils/types.js';
|
|
3
|
+
import { BaseTool } from '../BaseTool.js';
|
|
4
|
+
import { GetDocumentSchema, GetDocumentInput } from './GetDocumentTool.input.schema.js';
|
|
5
|
+
export declare class GetDocumentTool extends BaseTool<typeof GetDocumentSchema> {
|
|
6
|
+
name: string;
|
|
7
|
+
description: string;
|
|
8
|
+
readonly annotations: {
|
|
9
|
+
readOnlyHint: boolean;
|
|
10
|
+
destructiveHint: boolean;
|
|
11
|
+
idempotentHint: boolean;
|
|
12
|
+
openWorldHint: boolean;
|
|
13
|
+
title: string;
|
|
14
|
+
};
|
|
15
|
+
private httpRequest;
|
|
16
|
+
constructor(params: {
|
|
17
|
+
httpRequest: HttpRequest;
|
|
18
|
+
});
|
|
19
|
+
protected execute(input: GetDocumentInput): Promise<CallToolResult>;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=GetDocumentTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetDocumentTool.d.ts","sourceRoot":"","sources":["../../../../src/tools/get-document-tool/GetDocumentTool.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AAMpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,mCAAmC,CAAC;AAW3C,qBAAa,eAAgB,SAAQ,QAAQ,CAAC,OAAO,iBAAiB,CAAC;IACrE,IAAI,SAAuB;IAC3B,WAAW,SAC8P;IACzQ,QAAQ,CAAC,WAAW;;;;;;MAMlB;IAEF,OAAO,CAAC,WAAW,CAAc;gBAErB,MAAM,EAAE;QAAE,WAAW,EAAE,WAAW,CAAA;KAAE;cAKhC,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,CAAC;CAkD1E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetDocumentTool.input.schema.d.ts","sourceRoot":"","sources":["../../../../src/tools/get-document-tool/GetDocumentTool.input.schema.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB;;iBAO5B,CAAC;AAEH,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// Copyright (c) Mapbox, Inc.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
export const GetDocumentSchema = z.object({
|
|
5
|
+
url: z
|
|
6
|
+
.string()
|
|
7
|
+
.url()
|
|
8
|
+
.describe('URL of a Mapbox documentation page to fetch. Must be a mapbox.com URL (e.g. https://docs.mapbox.com/api/search/geocoding/).')
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=GetDocumentTool.input.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetDocumentTool.input.schema.js","sourceRoot":"","sources":["../../../../src/tools/get-document-tool/GetDocumentTool.input.schema.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,kCAAkC;AAElC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,GAAG,EAAE,CAAC;SACH,MAAM,EAAE;SACR,GAAG,EAAE;SACL,QAAQ,CACP,6HAA6H,CAC9H;CACJ,CAAC,CAAC"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// Copyright (c) Mapbox, Inc.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { docCache, MAX_ENTRY_BYTES, readBodyWithLimit } from '../../utils/docCache.js';
|
|
4
|
+
import { BaseTool } from '../BaseTool.js';
|
|
5
|
+
import { GetDocumentSchema } from './GetDocumentTool.input.schema.js';
|
|
6
|
+
function isMapboxUrl(url) {
|
|
7
|
+
try {
|
|
8
|
+
const { hostname } = new URL(url);
|
|
9
|
+
return hostname === 'mapbox.com' || hostname.endsWith('.mapbox.com');
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return false;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
export class GetDocumentTool extends BaseTool {
|
|
16
|
+
name = 'get_document_tool';
|
|
17
|
+
description = 'Fetch the full content of a specific Mapbox documentation page by URL. Use this after get_latest_mapbox_docs_tool to follow a link from the index and retrieve the complete page content. For fetching multiple pages at once, use batch_get_documents_tool instead.';
|
|
18
|
+
annotations = {
|
|
19
|
+
readOnlyHint: true,
|
|
20
|
+
destructiveHint: false,
|
|
21
|
+
idempotentHint: true,
|
|
22
|
+
openWorldHint: true,
|
|
23
|
+
title: 'Get Mapbox Document Tool'
|
|
24
|
+
};
|
|
25
|
+
httpRequest;
|
|
26
|
+
constructor(params) {
|
|
27
|
+
super({ inputSchema: GetDocumentSchema });
|
|
28
|
+
this.httpRequest = params.httpRequest;
|
|
29
|
+
}
|
|
30
|
+
async execute(input) {
|
|
31
|
+
if (!isMapboxUrl(input.url)) {
|
|
32
|
+
return {
|
|
33
|
+
content: [
|
|
34
|
+
{
|
|
35
|
+
type: 'text',
|
|
36
|
+
text: `Invalid URL: only mapbox.com URLs are supported. Received: ${input.url}`
|
|
37
|
+
}
|
|
38
|
+
],
|
|
39
|
+
isError: true
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
const cached = docCache.get(input.url);
|
|
43
|
+
if (cached !== null) {
|
|
44
|
+
return { content: [{ type: 'text', text: cached }], isError: false };
|
|
45
|
+
}
|
|
46
|
+
try {
|
|
47
|
+
const response = await this.httpRequest(input.url, {
|
|
48
|
+
headers: { Accept: 'text/markdown, text/plain;q=0.9, */*;q=0.8' }
|
|
49
|
+
});
|
|
50
|
+
if (!response.ok) {
|
|
51
|
+
return {
|
|
52
|
+
content: [
|
|
53
|
+
{
|
|
54
|
+
type: 'text',
|
|
55
|
+
text: `Failed to fetch document: ${response.status} ${response.statusText}`
|
|
56
|
+
}
|
|
57
|
+
],
|
|
58
|
+
isError: true
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
const content = await readBodyWithLimit(response, MAX_ENTRY_BYTES);
|
|
62
|
+
docCache.set(input.url, content);
|
|
63
|
+
return { content: [{ type: 'text', text: content }], isError: false };
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
const errorMessage = error instanceof Error ? error.message : 'Unknown error occurred';
|
|
67
|
+
return {
|
|
68
|
+
content: [
|
|
69
|
+
{ type: 'text', text: `Failed to fetch document: ${errorMessage}` }
|
|
70
|
+
],
|
|
71
|
+
isError: true
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=GetDocumentTool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"GetDocumentTool.js","sourceRoot":"","sources":["../../../../src/tools/get-document-tool/GetDocumentTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7E,YAAY,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,kCAAkC;AAElC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ZodTypeAny } from 'zod';
|
|
2
|
+
import { BaseTool } from './BaseTool.js';
|
|
3
|
+
export type ToolInstance = BaseTool<ZodTypeAny>;
|
|
4
|
+
/**
|
|
5
|
+
* Core tools registered for all MCP clients
|
|
6
|
+
*/
|
|
7
|
+
export declare const CORE_TOOLS: ToolInstance[];
|
|
8
|
+
export declare const ALL_TOOLS: ToolInstance[];
|
|
9
|
+
export declare function getCoreTools(): readonly ToolInstance[];
|
|
10
|
+
export declare function getAllTools(): readonly ToolInstance[];
|
|
11
|
+
export declare function getToolByName(name: string): ToolInstance | undefined;
|
|
12
|
+
//# sourceMappingURL=toolRegistry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolRegistry.d.ts","sourceRoot":"","sources":["../../../src/tools/toolRegistry.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,UAAU,EAAE,MAAM,KAAK,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAKzC,MAAM,MAAM,YAAY,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,YAAY,EAGpC,CAAC;AAEF,eAAO,MAAM,SAAS,EAAE,YAAY,EAAoB,CAAC;AAEzD,wBAAgB,YAAY,IAAI,SAAS,YAAY,EAAE,CAEtD;AAED,wBAAgB,WAAW,IAAI,SAAS,YAAY,EAAE,CAErD;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAEpE"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// Copyright (c) Mapbox, Inc.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
import { BatchGetDocumentsTool } from './batch-get-documents-tool/BatchGetDocumentsTool.js';
|
|
4
|
+
import { GetDocumentTool } from './get-document-tool/GetDocumentTool.js';
|
|
5
|
+
import { httpRequest } from '../utils/httpPipeline.js';
|
|
6
|
+
/**
|
|
7
|
+
* Core tools registered for all MCP clients
|
|
8
|
+
*/
|
|
9
|
+
export const CORE_TOOLS = [
|
|
10
|
+
new GetDocumentTool({ httpRequest }),
|
|
11
|
+
new BatchGetDocumentsTool({ httpRequest })
|
|
12
|
+
];
|
|
13
|
+
export const ALL_TOOLS = [...CORE_TOOLS];
|
|
14
|
+
export function getCoreTools() {
|
|
15
|
+
return CORE_TOOLS;
|
|
16
|
+
}
|
|
17
|
+
export function getAllTools() {
|
|
18
|
+
return ALL_TOOLS;
|
|
19
|
+
}
|
|
20
|
+
export function getToolByName(name) {
|
|
21
|
+
return ALL_TOOLS.find((tool) => tool.name === name);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=toolRegistry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toolRegistry.js","sourceRoot":"","sources":["../../../src/tools/toolRegistry.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAC7B,kCAAkC;AAIlC,OAAO,EAAE,qBAAqB,EAAE,MAAM,qDAAqD,CAAC;AAC5F,OAAO,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAIvD;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAmB;IACxC,IAAI,eAAe,CAAC,EAAE,WAAW,EAAE,CAAC;IACpC,IAAI,qBAAqB,CAAC,EAAE,WAAW,EAAE,CAAC;CAC3C,CAAC;AAEF,MAAM,CAAC,MAAM,SAAS,GAAmB,CAAC,GAAG,UAAU,CAAC,CAAC;AAEzD,MAAM,UAAU,YAAY;IAC1B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,UAAU,WAAW;IACzB,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,IAAY;IACxC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AACtD,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare const MAX_ENTRY_BYTES: number;
|
|
2
|
+
/**
|
|
3
|
+
* Normalize a URL for use as a cache key by stripping query parameters
|
|
4
|
+
* and hash fragments. This prevents cache-busting via unique query strings
|
|
5
|
+
* from creating unbounded cache entries.
|
|
6
|
+
*/
|
|
7
|
+
export declare function normalizeCacheKey(url: string): string;
|
|
8
|
+
declare class DocCache {
|
|
9
|
+
private cache;
|
|
10
|
+
private totalBytes;
|
|
11
|
+
get(url: string): string | null;
|
|
12
|
+
set(url: string, content: string, ttlMs?: number): void;
|
|
13
|
+
has(url: string): boolean;
|
|
14
|
+
clear(): void;
|
|
15
|
+
/** Exposed for testing only. */
|
|
16
|
+
get size(): number;
|
|
17
|
+
/** Exposed for testing only. */
|
|
18
|
+
get currentTotalBytes(): number;
|
|
19
|
+
}
|
|
20
|
+
export declare const docCache: DocCache;
|
|
21
|
+
/**
|
|
22
|
+
* Read a Response body up to `maxBytes`, aborting early if the limit is
|
|
23
|
+
* exceeded. Checks Content-Length first when present so no bytes are
|
|
24
|
+
* buffered for obviously-oversized responses.
|
|
25
|
+
*/
|
|
26
|
+
export declare function readBodyWithLimit(response: Response, maxBytes: number): Promise<string>;
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=docCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docCache.d.ts","sourceRoot":"","sources":["../../../src/utils/docCache.ts"],"names":[],"mappings":"AAUA,eAAO,MAAM,eAAe,QAAkB,CAAC;AAS/C;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CASrD;AAED,cAAM,QAAQ;IACZ,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,UAAU,CAAK;IAEvB,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAe/B,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,GAAE,MAAuB,GAAG,IAAI;IA+BvE,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,KAAK,IAAI,IAAI;IAKb,gCAAgC;IAChC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,gCAAgC;IAChC,IAAI,iBAAiB,IAAI,MAAM,CAE9B;CACF;AAED,eAAO,MAAM,QAAQ,UAAiB,CAAC;AAEvC;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAsCjB"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
// Copyright (c) Mapbox, Inc.
|
|
2
|
+
// Licensed under the MIT License.
|
|
3
|
+
const DEFAULT_TTL_MS = parseInt(process.env.MAPBOX_DOCS_CACHE_TTL_MS ?? '3600000', 10);
|
|
4
|
+
// Cache limits
|
|
5
|
+
const MAX_ENTRIES = 512;
|
|
6
|
+
export const MAX_ENTRY_BYTES = 2 * 1024 * 1024; // 2 MB per entry
|
|
7
|
+
const MAX_TOTAL_BYTES = 50 * 1024 * 1024; // 50 MB total
|
|
8
|
+
/**
|
|
9
|
+
* Normalize a URL for use as a cache key by stripping query parameters
|
|
10
|
+
* and hash fragments. This prevents cache-busting via unique query strings
|
|
11
|
+
* from creating unbounded cache entries.
|
|
12
|
+
*/
|
|
13
|
+
export function normalizeCacheKey(url) {
|
|
14
|
+
try {
|
|
15
|
+
const parsed = new URL(url);
|
|
16
|
+
parsed.search = '';
|
|
17
|
+
parsed.hash = '';
|
|
18
|
+
return parsed.toString();
|
|
19
|
+
}
|
|
20
|
+
catch {
|
|
21
|
+
return url;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
class DocCache {
|
|
25
|
+
cache = new Map();
|
|
26
|
+
totalBytes = 0;
|
|
27
|
+
get(url) {
|
|
28
|
+
const key = normalizeCacheKey(url);
|
|
29
|
+
const entry = this.cache.get(key);
|
|
30
|
+
if (!entry)
|
|
31
|
+
return null;
|
|
32
|
+
if (Date.now() > entry.expiresAt) {
|
|
33
|
+
this.totalBytes -= entry.bytes;
|
|
34
|
+
this.cache.delete(key);
|
|
35
|
+
return null;
|
|
36
|
+
}
|
|
37
|
+
// Re-insert to move to end (LRU: most-recently-used stays at the back)
|
|
38
|
+
this.cache.delete(key);
|
|
39
|
+
this.cache.set(key, entry);
|
|
40
|
+
return entry.content;
|
|
41
|
+
}
|
|
42
|
+
set(url, content, ttlMs = DEFAULT_TTL_MS) {
|
|
43
|
+
const bytes = Buffer.byteLength(content, 'utf8');
|
|
44
|
+
if (bytes > MAX_ENTRY_BYTES) {
|
|
45
|
+
return; // Silently reject oversized entries
|
|
46
|
+
}
|
|
47
|
+
const key = normalizeCacheKey(url);
|
|
48
|
+
// Remove existing entry for this key if present
|
|
49
|
+
const existing = this.cache.get(key);
|
|
50
|
+
if (existing) {
|
|
51
|
+
this.totalBytes -= existing.bytes;
|
|
52
|
+
this.cache.delete(key);
|
|
53
|
+
}
|
|
54
|
+
// Evict oldest entries (front of Map) until there is room
|
|
55
|
+
while (this.cache.size >= MAX_ENTRIES ||
|
|
56
|
+
this.totalBytes + bytes > MAX_TOTAL_BYTES) {
|
|
57
|
+
const oldestKey = this.cache.keys().next().value;
|
|
58
|
+
if (oldestKey === undefined)
|
|
59
|
+
break;
|
|
60
|
+
const oldest = this.cache.get(oldestKey);
|
|
61
|
+
this.totalBytes -= oldest.bytes;
|
|
62
|
+
this.cache.delete(oldestKey);
|
|
63
|
+
}
|
|
64
|
+
this.cache.set(key, { content, expiresAt: Date.now() + ttlMs, bytes });
|
|
65
|
+
this.totalBytes += bytes;
|
|
66
|
+
}
|
|
67
|
+
has(url) {
|
|
68
|
+
return this.get(url) !== null;
|
|
69
|
+
}
|
|
70
|
+
clear() {
|
|
71
|
+
this.cache.clear();
|
|
72
|
+
this.totalBytes = 0;
|
|
73
|
+
}
|
|
74
|
+
/** Exposed for testing only. */
|
|
75
|
+
get size() {
|
|
76
|
+
return this.cache.size;
|
|
77
|
+
}
|
|
78
|
+
/** Exposed for testing only. */
|
|
79
|
+
get currentTotalBytes() {
|
|
80
|
+
return this.totalBytes;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
export const docCache = new DocCache();
|
|
84
|
+
/**
|
|
85
|
+
* Read a Response body up to `maxBytes`, aborting early if the limit is
|
|
86
|
+
* exceeded. Checks Content-Length first when present so no bytes are
|
|
87
|
+
* buffered for obviously-oversized responses.
|
|
88
|
+
*/
|
|
89
|
+
export async function readBodyWithLimit(response, maxBytes) {
|
|
90
|
+
const contentLength = response.headers.get('content-length');
|
|
91
|
+
if (contentLength) {
|
|
92
|
+
const cl = parseInt(contentLength, 10);
|
|
93
|
+
if (Number.isFinite(cl) && cl > maxBytes) {
|
|
94
|
+
throw new Error(`Response too large: Content-Length ${cl} exceeds limit of ${maxBytes} bytes`);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
if (!response.body) {
|
|
98
|
+
const text = await response.text();
|
|
99
|
+
if (Buffer.byteLength(text, 'utf8') > maxBytes) {
|
|
100
|
+
throw new Error('Response too large');
|
|
101
|
+
}
|
|
102
|
+
return text;
|
|
103
|
+
}
|
|
104
|
+
const chunks = [];
|
|
105
|
+
let totalBytes = 0;
|
|
106
|
+
const reader = response.body.getReader();
|
|
107
|
+
try {
|
|
108
|
+
for (;;) {
|
|
109
|
+
const { done, value } = await reader.read();
|
|
110
|
+
if (done)
|
|
111
|
+
break;
|
|
112
|
+
totalBytes += value.byteLength;
|
|
113
|
+
if (totalBytes > maxBytes) {
|
|
114
|
+
throw new Error('Response too large');
|
|
115
|
+
}
|
|
116
|
+
chunks.push(Buffer.from(value));
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
finally {
|
|
120
|
+
reader.releaseLock();
|
|
121
|
+
}
|
|
122
|
+
return Buffer.concat(chunks).toString('utf8');
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=docCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docCache.js","sourceRoot":"","sources":["../../../src/utils/docCache.ts"],"names":[],"mappings":"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"}
|