@mapbox/mcp-server 0.6.1 → 0.8.1-dev.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 +147 -23
- package/dist/commonjs/config/toolConfig.d.ts +10 -0
- package/dist/commonjs/config/toolConfig.d.ts.map +1 -1
- package/dist/commonjs/config/toolConfig.js +36 -0
- package/dist/commonjs/config/toolConfig.js.map +1 -1
- package/dist/commonjs/index.d.ts +1 -1
- package/dist/commonjs/index.d.ts.map +1 -1
- package/dist/commonjs/index.js +167 -13
- package/dist/commonjs/index.js.map +1 -1
- package/dist/commonjs/prompts/BasePrompt.d.ts +40 -0
- package/dist/commonjs/prompts/BasePrompt.d.ts.map +1 -0
- package/dist/commonjs/prompts/BasePrompt.js +38 -0
- package/dist/commonjs/prompts/BasePrompt.js.map +1 -0
- package/dist/commonjs/prompts/FindPlacesNearbyPrompt.d.ts +22 -0
- package/dist/commonjs/prompts/FindPlacesNearbyPrompt.d.ts.map +1 -0
- package/dist/commonjs/prompts/FindPlacesNearbyPrompt.js +65 -0
- package/dist/commonjs/prompts/FindPlacesNearbyPrompt.js.map +1 -0
- package/dist/commonjs/prompts/GetDirectionsPrompt.d.ts +23 -0
- package/dist/commonjs/prompts/GetDirectionsPrompt.d.ts.map +1 -0
- package/dist/commonjs/prompts/GetDirectionsPrompt.js +67 -0
- package/dist/commonjs/prompts/GetDirectionsPrompt.js.map +1 -0
- package/dist/commonjs/prompts/ShowReachableAreasPrompt.d.ts +23 -0
- package/dist/commonjs/prompts/ShowReachableAreasPrompt.d.ts.map +1 -0
- package/dist/commonjs/prompts/ShowReachableAreasPrompt.js +70 -0
- package/dist/commonjs/prompts/ShowReachableAreasPrompt.js.map +1 -0
- package/dist/commonjs/prompts/promptRegistry.d.ts +29 -0
- package/dist/commonjs/prompts/promptRegistry.d.ts.map +1 -0
- package/dist/commonjs/prompts/promptRegistry.js +39 -0
- package/dist/commonjs/prompts/promptRegistry.js.map +1 -0
- package/dist/commonjs/resources/BaseResource.d.ts +28 -0
- package/dist/commonjs/resources/BaseResource.d.ts.map +1 -0
- package/dist/commonjs/resources/BaseResource.js +32 -0
- package/dist/commonjs/resources/BaseResource.js.map +1 -0
- package/dist/commonjs/resources/MapboxApiBasedResource.d.ts +35 -0
- package/dist/commonjs/resources/MapboxApiBasedResource.d.ts.map +1 -0
- package/dist/commonjs/resources/MapboxApiBasedResource.js +88 -0
- package/dist/commonjs/resources/MapboxApiBasedResource.js.map +1 -0
- package/dist/commonjs/resources/category-list/CategoryListResource.d.ts +27 -0
- package/dist/commonjs/resources/category-list/CategoryListResource.d.ts.map +1 -0
- package/dist/commonjs/resources/category-list/CategoryListResource.js +71 -0
- package/dist/commonjs/resources/category-list/CategoryListResource.js.map +1 -0
- package/dist/commonjs/resources/resourceRegistry.d.ts +6 -0
- package/dist/commonjs/resources/resourceRegistry.d.ts.map +1 -0
- package/dist/commonjs/resources/resourceRegistry.js +32 -0
- package/dist/commonjs/resources/resourceRegistry.js.map +1 -0
- package/dist/commonjs/tools/BaseTool.d.ts +7 -0
- package/dist/commonjs/tools/BaseTool.d.ts.map +1 -1
- package/dist/commonjs/tools/BaseTool.js +19 -0
- package/dist/commonjs/tools/BaseTool.js.map +1 -1
- package/dist/commonjs/tools/MapboxApiBasedTool.d.ts.map +1 -1
- package/dist/commonjs/tools/MapboxApiBasedTool.js +1 -1
- package/dist/commonjs/tools/MapboxApiBasedTool.js.map +1 -1
- package/dist/commonjs/tools/category-list-tool/CategoryListTool.d.ts.map +1 -1
- package/dist/commonjs/tools/category-list-tool/CategoryListTool.js +2 -2
- package/dist/commonjs/tools/category-list-tool/CategoryListTool.js.map +1 -1
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.d.ts.map +1 -1
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.input.schema.d.ts +4 -10
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.input.schema.d.ts.map +1 -1
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.input.schema.js +5 -43
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.input.schema.js.map +1 -1
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.js +2 -7
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.js.map +1 -1
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.output.schema.d.ts +204 -204
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.output.schema.d.ts.map +1 -1
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.output.schema.js +2 -1
- package/dist/commonjs/tools/category-search-tool/CategorySearchTool.output.schema.js.map +1 -1
- package/dist/commonjs/tools/directions-tool/DirectionsTool.output.schema.d.ts +66 -66
- package/dist/commonjs/tools/isochrone-tool/IsochroneTool.output.schema.d.ts +28 -28
- package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.d.ts +28 -0
- package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.d.ts.map +1 -0
- package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.input.schema.d.ts +10 -0
- package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.input.schema.d.ts.map +1 -0
- package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.input.schema.js +13 -0
- package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.input.schema.js.map +1 -0
- package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.js +141 -0
- package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.js.map +1 -0
- package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.output.schema.d.ts +19 -0
- package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.output.schema.d.ts.map +1 -0
- package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.output.schema.js +13 -0
- package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.output.schema.js.map +1 -0
- package/dist/commonjs/tools/reverse-geocode-tool/ReverseGeocodeTool.input.schema.d.ts +1 -1
- package/dist/commonjs/tools/reverse-geocode-tool/ReverseGeocodeTool.output.schema.d.ts +538 -538
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.d.ts.map +1 -1
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.d.ts +17 -17
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.d.ts.map +1 -1
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js +6 -30
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js.map +1 -1
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.js +2 -11
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.js.map +1 -1
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.d.ts +1514 -623
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.d.ts.map +1 -1
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.js +9 -4
- package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.js.map +1 -1
- package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -1
- package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.input.schema.d.ts +8 -8
- package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js +26 -7
- package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -1
- package/dist/commonjs/tools/toolRegistry.d.ts +2 -1
- package/dist/commonjs/tools/toolRegistry.d.ts.map +1 -1
- package/dist/commonjs/tools/toolRegistry.js +2 -0
- package/dist/commonjs/tools/toolRegistry.js.map +1 -1
- package/dist/commonjs/tools/version-tool/VersionTool.d.ts.map +1 -1
- package/dist/commonjs/tools/version-tool/VersionTool.js +7 -7
- package/dist/commonjs/tools/version-tool/VersionTool.js.map +1 -1
- package/dist/commonjs/utils/httpPipeline.d.ts +5 -0
- package/dist/commonjs/utils/httpPipeline.d.ts.map +1 -1
- package/dist/commonjs/utils/httpPipeline.js +46 -1
- package/dist/commonjs/utils/httpPipeline.js.map +1 -1
- package/dist/commonjs/utils/tracing.d.ts.map +1 -1
- package/dist/commonjs/utils/tracing.js +17 -0
- package/dist/commonjs/utils/tracing.js.map +1 -1
- package/dist/commonjs/version.json +4 -4
- package/dist/esm/config/toolConfig.d.ts +10 -0
- package/dist/esm/config/toolConfig.d.ts.map +1 -1
- package/dist/esm/config/toolConfig.js +35 -0
- package/dist/esm/config/toolConfig.js.map +1 -1
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.d.ts.map +1 -1
- package/dist/esm/index.js +168 -14
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/prompts/BasePrompt.d.ts +40 -0
- package/dist/esm/prompts/BasePrompt.d.ts.map +1 -0
- package/dist/esm/prompts/BasePrompt.js +34 -0
- package/dist/esm/prompts/BasePrompt.js.map +1 -0
- package/dist/esm/prompts/FindPlacesNearbyPrompt.d.ts +22 -0
- package/dist/esm/prompts/FindPlacesNearbyPrompt.d.ts.map +1 -0
- package/dist/esm/prompts/FindPlacesNearbyPrompt.js +61 -0
- package/dist/esm/prompts/FindPlacesNearbyPrompt.js.map +1 -0
- package/dist/esm/prompts/GetDirectionsPrompt.d.ts +23 -0
- package/dist/esm/prompts/GetDirectionsPrompt.d.ts.map +1 -0
- package/dist/esm/prompts/GetDirectionsPrompt.js +63 -0
- package/dist/esm/prompts/GetDirectionsPrompt.js.map +1 -0
- package/dist/esm/prompts/ShowReachableAreasPrompt.d.ts +23 -0
- package/dist/esm/prompts/ShowReachableAreasPrompt.d.ts.map +1 -0
- package/dist/esm/prompts/ShowReachableAreasPrompt.js +66 -0
- package/dist/esm/prompts/ShowReachableAreasPrompt.js.map +1 -0
- package/dist/esm/prompts/promptRegistry.d.ts +29 -0
- package/dist/esm/prompts/promptRegistry.d.ts.map +1 -0
- package/dist/esm/prompts/promptRegistry.js +35 -0
- package/dist/esm/prompts/promptRegistry.js.map +1 -0
- package/dist/esm/resources/BaseResource.d.ts +28 -0
- package/dist/esm/resources/BaseResource.d.ts.map +1 -0
- package/dist/esm/resources/BaseResource.js +28 -0
- package/dist/esm/resources/BaseResource.js.map +1 -0
- package/dist/esm/resources/MapboxApiBasedResource.d.ts +35 -0
- package/dist/esm/resources/MapboxApiBasedResource.d.ts.map +1 -0
- package/dist/esm/resources/MapboxApiBasedResource.js +84 -0
- package/dist/esm/resources/MapboxApiBasedResource.js.map +1 -0
- package/dist/esm/resources/category-list/CategoryListResource.d.ts +27 -0
- package/dist/esm/resources/category-list/CategoryListResource.d.ts.map +1 -0
- package/dist/esm/resources/category-list/CategoryListResource.js +67 -0
- package/dist/esm/resources/category-list/CategoryListResource.js.map +1 -0
- package/dist/esm/resources/resourceRegistry.d.ts +6 -0
- package/dist/esm/resources/resourceRegistry.d.ts.map +1 -0
- package/dist/esm/resources/resourceRegistry.js +27 -0
- package/dist/esm/resources/resourceRegistry.js.map +1 -0
- package/dist/esm/tools/BaseTool.d.ts +7 -0
- package/dist/esm/tools/BaseTool.d.ts.map +1 -1
- package/dist/esm/tools/BaseTool.js +19 -0
- package/dist/esm/tools/BaseTool.js.map +1 -1
- package/dist/esm/tools/MapboxApiBasedTool.d.ts.map +1 -1
- package/dist/esm/tools/MapboxApiBasedTool.js +1 -1
- package/dist/esm/tools/MapboxApiBasedTool.js.map +1 -1
- package/dist/esm/tools/category-list-tool/CategoryListTool.d.ts.map +1 -1
- package/dist/esm/tools/category-list-tool/CategoryListTool.js +2 -2
- package/dist/esm/tools/category-list-tool/CategoryListTool.js.map +1 -1
- package/dist/esm/tools/category-search-tool/CategorySearchTool.d.ts.map +1 -1
- package/dist/esm/tools/category-search-tool/CategorySearchTool.input.schema.d.ts +4 -10
- package/dist/esm/tools/category-search-tool/CategorySearchTool.input.schema.d.ts.map +1 -1
- package/dist/esm/tools/category-search-tool/CategorySearchTool.input.schema.js +5 -43
- package/dist/esm/tools/category-search-tool/CategorySearchTool.input.schema.js.map +1 -1
- package/dist/esm/tools/category-search-tool/CategorySearchTool.js +2 -7
- package/dist/esm/tools/category-search-tool/CategorySearchTool.js.map +1 -1
- package/dist/esm/tools/category-search-tool/CategorySearchTool.output.schema.d.ts +204 -204
- package/dist/esm/tools/category-search-tool/CategorySearchTool.output.schema.d.ts.map +1 -1
- package/dist/esm/tools/category-search-tool/CategorySearchTool.output.schema.js +2 -1
- package/dist/esm/tools/category-search-tool/CategorySearchTool.output.schema.js.map +1 -1
- package/dist/esm/tools/directions-tool/DirectionsTool.output.schema.d.ts +66 -66
- package/dist/esm/tools/isochrone-tool/IsochroneTool.output.schema.d.ts +28 -28
- package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.d.ts +28 -0
- package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.d.ts.map +1 -0
- package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.input.schema.d.ts +10 -0
- package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.input.schema.d.ts.map +1 -0
- package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.input.schema.js +10 -0
- package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.input.schema.js.map +1 -0
- package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.js +137 -0
- package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.js.map +1 -0
- package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.output.schema.d.ts +19 -0
- package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.output.schema.d.ts.map +1 -0
- package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.output.schema.js +10 -0
- package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.output.schema.js.map +1 -0
- package/dist/esm/tools/reverse-geocode-tool/ReverseGeocodeTool.input.schema.d.ts +1 -1
- package/dist/esm/tools/reverse-geocode-tool/ReverseGeocodeTool.output.schema.d.ts +538 -538
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.d.ts.map +1 -1
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.d.ts +17 -17
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.d.ts.map +1 -1
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js +6 -30
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js.map +1 -1
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.js +2 -11
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.js.map +1 -1
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.d.ts +1514 -623
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.d.ts.map +1 -1
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.js +9 -4
- package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.js.map +1 -1
- package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -1
- package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.input.schema.d.ts +8 -8
- package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js +26 -7
- package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -1
- package/dist/esm/tools/toolRegistry.d.ts +2 -1
- package/dist/esm/tools/toolRegistry.d.ts.map +1 -1
- package/dist/esm/tools/toolRegistry.js +2 -0
- package/dist/esm/tools/toolRegistry.js.map +1 -1
- package/dist/esm/tools/version-tool/VersionTool.d.ts.map +1 -1
- package/dist/esm/tools/version-tool/VersionTool.js +7 -7
- package/dist/esm/tools/version-tool/VersionTool.js.map +1 -1
- package/dist/esm/utils/httpPipeline.d.ts +5 -0
- package/dist/esm/utils/httpPipeline.d.ts.map +1 -1
- package/dist/esm/utils/httpPipeline.js +44 -0
- package/dist/esm/utils/httpPipeline.js.map +1 -1
- package/dist/esm/utils/tracing.d.ts.map +1 -1
- package/dist/esm/utils/tracing.js +18 -1
- package/dist/esm/utils/tracing.js.map +1 -1
- package/dist/esm/version.json +4 -4
- package/package.json +8 -11
package/README.md
CHANGED
|
@@ -44,6 +44,7 @@ For more information about Mapbox access tokens, see the [Mapbox documentation o
|
|
|
44
44
|
For detailed setup instructions for different integrations, refer to the following guides:
|
|
45
45
|
|
|
46
46
|
- [Claude Desktop Setup](./docs/claude-desktop-setup.md) - Instructions for configuring Claude Desktop to work with this MCP server
|
|
47
|
+
- [Goose Setup](./docs/goose-setup.md) - Setting up Goose AI agent framework with MCP-UI support
|
|
47
48
|
- [VS Code Setup](./docs/vscode-setup.md) - Setting up a development environment in Visual Studio Code
|
|
48
49
|
- [Cursor AI IDE Setup](./docs/cursor-setup.md) - Setting up a development environment in Cursor AI IDE
|
|
49
50
|
- [Smolagents Integration](./docs/using-mcp-with-smolagents/README.md) - Example showing how to connect Smolagents AI agents to Mapbox's tools
|
|
@@ -83,11 +84,109 @@ Try these prompts with Claude Desktop or other MCP clients after setup:
|
|
|
83
84
|
- Include time constraints when relevant ("during rush hour", "at 3 PM")
|
|
84
85
|
- Ask for specific output formats when needed ("as a map image", "in JSON format")
|
|
85
86
|
|
|
87
|
+
## Resources
|
|
88
|
+
|
|
89
|
+
The MCP server exposes static reference data as **MCP resources**. Resources provide read-only access to data that clients can reference directly without making tool calls.
|
|
90
|
+
|
|
91
|
+
### Available Resources
|
|
92
|
+
|
|
93
|
+
#### Mapbox Categories Resource
|
|
94
|
+
|
|
95
|
+
**URI Pattern**: `mapbox://categories` or `mapbox://categories/{language}`
|
|
96
|
+
|
|
97
|
+
Access the complete list of available category IDs for use with the category search tool. Categories can be used to filter search results by type (e.g., "restaurant", "hotel", "gas_station").
|
|
98
|
+
|
|
99
|
+
**Examples**:
|
|
100
|
+
|
|
101
|
+
- `mapbox://categories` - Default (English) category list
|
|
102
|
+
- `mapbox://categories/ja` - Japanese category names
|
|
103
|
+
- `mapbox://categories/es` - Spanish category names
|
|
104
|
+
|
|
105
|
+
**Accessing Resources**:
|
|
106
|
+
|
|
107
|
+
- **Clients with native MCP resource support**: Use the `resources/read` MCP protocol method
|
|
108
|
+
- **Clients without resource support**: Use the `resource_reader_tool` with the resource URI
|
|
109
|
+
|
|
110
|
+
## MCP-UI Support
|
|
111
|
+
|
|
112
|
+
This MCP server supports **MCP-UI**, an open specification that allows compatible clients to render interactive UI elements like embedded iframes. This provides a richer visual experience while maintaining full backwards compatibility with clients that don't support MCP-UI.
|
|
113
|
+
|
|
114
|
+
### What is MCP-UI?
|
|
115
|
+
|
|
116
|
+
MCP-UI enables tools to return interactive UI resources alongside their standard output. Compatible clients can render these as embedded iframes, while clients without MCP-UI support simply ignore them and use the standard output.
|
|
117
|
+
|
|
118
|
+
### Supported Tools
|
|
119
|
+
|
|
120
|
+
- **Static Map Image Tool**: Returns both image data and an embeddable iframe URL for inline map visualization
|
|
121
|
+
|
|
122
|
+
### Benefits
|
|
123
|
+
|
|
124
|
+
- **Enhanced Experience**: Compatible clients (e.g., Goose) can display maps inline without leaving the chat
|
|
125
|
+
- **Backwards Compatible**: Non-supporting clients (e.g., Claude Desktop) continue working unchanged
|
|
126
|
+
- **No Configuration Required**: MCP-UI is enabled by default
|
|
127
|
+
|
|
128
|
+
### Configuration
|
|
129
|
+
|
|
130
|
+
MCP-UI is **enabled by default**. To disable it:
|
|
131
|
+
|
|
132
|
+
**Via Environment Variable:**
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
ENABLE_MCP_UI=false npm run build
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
**Via Command-Line Flag:**
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
node dist/esm/index.js --disable-mcp-ui
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
**In Claude Desktop config:**
|
|
145
|
+
|
|
146
|
+
```json
|
|
147
|
+
{
|
|
148
|
+
"mcpServers": {
|
|
149
|
+
"mapbox": {
|
|
150
|
+
"command": "npx",
|
|
151
|
+
"args": ["-y", "@mapbox/mcp-server", "--disable-mcp-ui"],
|
|
152
|
+
"env": {
|
|
153
|
+
"MAPBOX_ACCESS_TOKEN": "your_token_here"
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**For more detailed information**, including compatible clients, technical implementation details, and troubleshooting, see the [MCP-UI documentation](./docs/mcp-ui.md).
|
|
161
|
+
|
|
86
162
|
## Tools
|
|
87
163
|
|
|
88
|
-
###
|
|
164
|
+
### Utility Tools
|
|
165
|
+
|
|
166
|
+
#### Resource Reader Tool
|
|
167
|
+
|
|
168
|
+
Provides access to MCP resources for clients that don't support the native MCP resource API. Use this tool to read resources like the category list.
|
|
169
|
+
|
|
170
|
+
**Parameters**:
|
|
171
|
+
|
|
172
|
+
- `uri`: The resource URI to read (e.g., `mapbox://categories`, `mapbox://categories/ja`)
|
|
173
|
+
|
|
174
|
+
**Example Usage**:
|
|
175
|
+
|
|
176
|
+
- Read default categories: `{"uri": "mapbox://categories"}`
|
|
177
|
+
- Read Japanese categories: `{"uri": "mapbox://categories/ja"}`
|
|
178
|
+
|
|
179
|
+
**Note**: If your MCP client supports native resources, prefer using the resource API directly for better performance.
|
|
180
|
+
|
|
181
|
+
### Mapbox API Tools
|
|
182
|
+
|
|
183
|
+
#### Category List Tool (Deprecated)
|
|
184
|
+
|
|
185
|
+
**⚠️ Deprecated**: Use the `resource_reader_tool` with URI `mapbox://categories` instead, or access the `mapbox://categories` resource directly if your client supports MCP resources.
|
|
186
|
+
|
|
187
|
+
This tool is maintained for backward compatibility with clients that don't support MCP resources or the resource_reader_tool.
|
|
89
188
|
|
|
90
|
-
#### Matrix
|
|
189
|
+
#### Matrix Tool
|
|
91
190
|
|
|
92
191
|
Calculates travel times and distances between multiple points using [Mapbox Matrix API](https://www.mapbox.com/matrix-api). Features include:
|
|
93
192
|
|
|
@@ -168,11 +267,8 @@ This tool consolidates the functionality that was previously provided by the For
|
|
|
168
267
|
### Using Node.js
|
|
169
268
|
|
|
170
269
|
```sh
|
|
171
|
-
#
|
|
172
|
-
npm run build
|
|
173
|
-
|
|
174
|
-
# Inspect
|
|
175
|
-
npx @modelcontextprotocol/inspector node dist/esm/index.js
|
|
270
|
+
# Run the built image
|
|
271
|
+
npm run inspect:build
|
|
176
272
|
```
|
|
177
273
|
|
|
178
274
|
### Using Docker
|
|
@@ -199,31 +295,57 @@ This MCP server includes comprehensive OpenTelemetry tracing for production obse
|
|
|
199
295
|
### Quick Demo
|
|
200
296
|
|
|
201
297
|
```sh
|
|
202
|
-
#
|
|
203
|
-
|
|
204
|
-
```
|
|
298
|
+
# 1. Copy the example configuration
|
|
299
|
+
cp .env.example .env
|
|
205
300
|
|
|
206
|
-
|
|
301
|
+
# 2. Edit .env to add your MAPBOX_ACCESS_TOKEN and configure tracing
|
|
207
302
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
303
|
+
# 3. Start Jaeger for local development
|
|
304
|
+
npm run tracing:jaeger:start
|
|
305
|
+
|
|
306
|
+
# 4. Run the server (it will automatically use .env configuration)
|
|
307
|
+
npm run inspect:build
|
|
308
|
+
|
|
309
|
+
# 5. View traces at http://localhost:16686
|
|
310
|
+
|
|
311
|
+
# 6. Stop Jaeger when done
|
|
312
|
+
npm run tracing:jaeger:stop
|
|
211
313
|
```
|
|
212
314
|
|
|
315
|
+
**Note:** The server automatically loads configuration from your `.env` file at startup. The `.env.example` file includes configuration examples for multiple observability platforms.
|
|
316
|
+
|
|
317
|
+
### Supported Observability Platforms
|
|
318
|
+
|
|
319
|
+
Configuration examples included in `.env.example` for:
|
|
320
|
+
|
|
321
|
+
**Cloud Providers:**
|
|
322
|
+
|
|
323
|
+
- ☁️ AWS X-Ray
|
|
324
|
+
- ☁️ Azure Monitor (Application Insights)
|
|
325
|
+
- ☁️ Google Cloud Trace
|
|
326
|
+
|
|
327
|
+
**SaaS Platforms:**
|
|
328
|
+
|
|
329
|
+
- 📊 Datadog
|
|
330
|
+
- 📊 New Relic
|
|
331
|
+
- 📊 Honeycomb
|
|
332
|
+
- 📊 Any OTLP-compatible backend
|
|
333
|
+
|
|
213
334
|
### Production Configuration
|
|
214
335
|
|
|
215
336
|
See [docs/tracing.md](./docs/tracing.md) for complete setup instructions including:
|
|
216
337
|
|
|
217
|
-
- 🔧
|
|
218
|
-
- 📊
|
|
338
|
+
- 🔧 Platform-specific configuration guides
|
|
339
|
+
- 📊 Authentication and endpoint setup
|
|
219
340
|
- 🎯 Custom trace attributes and context
|
|
220
341
|
- 🚀 Performance optimization (minimal overhead)
|
|
221
342
|
- 🔍 Troubleshooting and debugging
|
|
222
343
|
|
|
223
344
|
**Tracing Features:**
|
|
224
345
|
|
|
346
|
+
- ✅ Configuration loading tracing (.env file loading)
|
|
225
347
|
- ✅ Automatic tool execution tracing
|
|
226
|
-
- ✅ HTTP request instrumentation
|
|
348
|
+
- ✅ HTTP request instrumentation with CloudFront correlation IDs
|
|
227
349
|
- ✅ Configurable exporters (console, OTLP)
|
|
228
350
|
- ✅ Security-conscious (data protection, JWT validation)
|
|
229
351
|
- ✅ Production-ready (<1% CPU overhead)
|
|
@@ -232,19 +354,21 @@ See [docs/tracing.md](./docs/tracing.md) for complete setup instructions includi
|
|
|
232
354
|
|
|
233
355
|
We welcome contributions to the Mapbox MCP Server! Please review our standards and guidelines before contributing:
|
|
234
356
|
|
|
235
|
-
- **[Engineering Standards (
|
|
236
|
-
- **[
|
|
357
|
+
- **[Engineering Standards (docs/engineering_standards.md)](./docs/engineering_standards.md)** - Complete code quality, testing, documentation, and collaboration standards for all contributors
|
|
358
|
+
- **[Claude Code Guide (CLAUDE.md)](./CLAUDE.md)** - Standards and patterns for contributors using Claude Code
|
|
359
|
+
- **[AI Agent Instructions (AGENTS.md)](./AGENTS.md)** - Guide for general AI coding assistants (Cursor, Continue, Aider, etc.)
|
|
237
360
|
- **[GitHub Copilot Guidelines](./.github/copilot-instructions.md)** - Best practices for using GitHub Copilot responsibly in this project
|
|
238
361
|
|
|
239
362
|
### Quick Start for Contributors
|
|
240
363
|
|
|
241
364
|
1. Fork the repository and clone your fork
|
|
242
|
-
2.
|
|
365
|
+
2. Install dependencies: `npm install`
|
|
243
366
|
3. Make your changes following our coding standards
|
|
244
|
-
4.
|
|
245
|
-
5.
|
|
367
|
+
4. Run tests and linting: `npm test && npm run lint`
|
|
368
|
+
5. Add tests for any new functionality
|
|
369
|
+
6. Submit a pull request with a clear description
|
|
246
370
|
|
|
247
|
-
All contributions must pass our CI checks and code review process. See [
|
|
371
|
+
All contributions must pass our CI checks and code review process. See [docs/engineering_standards.md](./docs/engineering_standards.md) for detailed requirements.
|
|
248
372
|
|
|
249
373
|
## Data Usage & Privacy
|
|
250
374
|
|
|
@@ -2,7 +2,17 @@ import type { ToolInstance } from '../tools/toolRegistry.js';
|
|
|
2
2
|
export interface ToolConfig {
|
|
3
3
|
enabledTools?: string[];
|
|
4
4
|
disabledTools?: string[];
|
|
5
|
+
enableMcpUi?: boolean;
|
|
5
6
|
}
|
|
6
7
|
export declare function parseToolConfigFromArgs(): ToolConfig;
|
|
7
8
|
export declare function filterTools(tools: readonly ToolInstance[], config: ToolConfig): ToolInstance[];
|
|
9
|
+
/**
|
|
10
|
+
* Check if MCP-UI support is enabled.
|
|
11
|
+
* MCP-UI is enabled by default and can be explicitly disabled via:
|
|
12
|
+
* - Environment variable: ENABLE_MCP_UI=false
|
|
13
|
+
* - Command-line flag: --disable-mcp-ui
|
|
14
|
+
*
|
|
15
|
+
* @returns true if MCP-UI is enabled (default), false if explicitly disabled
|
|
16
|
+
*/
|
|
17
|
+
export declare function isMcpUiEnabled(): boolean;
|
|
8
18
|
//# sourceMappingURL=toolConfig.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolConfig.d.ts","sourceRoot":"","sources":["../../../src/config/toolConfig.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"toolConfig.d.ts","sourceRoot":"","sources":["../../../src/config/toolConfig.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAE7D,MAAM,WAAW,UAAU;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,uBAAuB,IAAI,UAAU,CAoCpD;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,MAAM,EAAE,UAAU,GACjB,YAAY,EAAE,CAqBhB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,IAAI,OAAO,CAcxC"}
|
|
@@ -4,9 +4,14 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
5
|
exports.parseToolConfigFromArgs = parseToolConfigFromArgs;
|
|
6
6
|
exports.filterTools = filterTools;
|
|
7
|
+
exports.isMcpUiEnabled = isMcpUiEnabled;
|
|
7
8
|
function parseToolConfigFromArgs() {
|
|
8
9
|
const args = process.argv.slice(2);
|
|
9
10
|
const config = {};
|
|
11
|
+
// Check environment variable first (takes precedence)
|
|
12
|
+
if (process.env.ENABLE_MCP_UI !== undefined) {
|
|
13
|
+
config.enableMcpUi = process.env.ENABLE_MCP_UI === 'true';
|
|
14
|
+
}
|
|
10
15
|
for (let i = 0; i < args.length; i++) {
|
|
11
16
|
const arg = args[i];
|
|
12
17
|
if (arg === '--enable-tools') {
|
|
@@ -21,6 +26,16 @@ function parseToolConfigFromArgs() {
|
|
|
21
26
|
config.disabledTools = value.split(',').map((t) => t.trim());
|
|
22
27
|
}
|
|
23
28
|
}
|
|
29
|
+
else if (arg === '--disable-mcp-ui') {
|
|
30
|
+
// Command-line flag can disable it if env var not set
|
|
31
|
+
if (config.enableMcpUi === undefined) {
|
|
32
|
+
config.enableMcpUi = false;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
// Default to true if not set (enabled by default)
|
|
37
|
+
if (config.enableMcpUi === undefined) {
|
|
38
|
+
config.enableMcpUi = true;
|
|
24
39
|
}
|
|
25
40
|
return config;
|
|
26
41
|
}
|
|
@@ -39,4 +54,25 @@ function filterTools(tools, config) {
|
|
|
39
54
|
}
|
|
40
55
|
return filteredTools;
|
|
41
56
|
}
|
|
57
|
+
/**
|
|
58
|
+
* Check if MCP-UI support is enabled.
|
|
59
|
+
* MCP-UI is enabled by default and can be explicitly disabled via:
|
|
60
|
+
* - Environment variable: ENABLE_MCP_UI=false
|
|
61
|
+
* - Command-line flag: --disable-mcp-ui
|
|
62
|
+
*
|
|
63
|
+
* @returns true if MCP-UI is enabled (default), false if explicitly disabled
|
|
64
|
+
*/
|
|
65
|
+
function isMcpUiEnabled() {
|
|
66
|
+
// Check environment variable first (takes precedence)
|
|
67
|
+
if (process.env.ENABLE_MCP_UI === 'false') {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
// Check command-line arguments
|
|
71
|
+
const args = process.argv.slice(2);
|
|
72
|
+
if (args.includes('--disable-mcp-ui')) {
|
|
73
|
+
return false;
|
|
74
|
+
}
|
|
75
|
+
// Default to enabled
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
42
78
|
//# sourceMappingURL=toolConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolConfig.js","sourceRoot":"","sources":["../../../src/config/toolConfig.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;
|
|
1
|
+
{"version":3,"file":"toolConfig.js","sourceRoot":"","sources":["../../../src/config/toolConfig.ts"],"names":[],"mappings":"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"}
|
package/dist/commonjs/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
export {};
|
|
2
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":""}
|
package/dist/commonjs/index.js
CHANGED
|
@@ -3,50 +3,186 @@
|
|
|
3
3
|
// Copyright (c) Mapbox, Inc.
|
|
4
4
|
// Licensed under the MIT License.
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
// Load environment variables from .env file if present
|
|
7
|
+
// Use Node.js built-in util.parseEnv() and manually apply to override existing vars
|
|
8
|
+
const node_util_1 = require("node:util");
|
|
9
|
+
const node_fs_1 = require("node:fs");
|
|
10
|
+
const node_path_1 = require("node:path");
|
|
11
|
+
const node_fs_2 = require("node:fs");
|
|
12
|
+
const api_1 = require("@opentelemetry/api");
|
|
6
13
|
const mcp_js_1 = require("@modelcontextprotocol/sdk/server/mcp.js");
|
|
7
14
|
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
15
|
+
const types_js_1 = require("@modelcontextprotocol/sdk/types.js");
|
|
8
16
|
const toolConfig_js_1 = require("./config/toolConfig.js");
|
|
9
17
|
const toolRegistry_js_1 = require("./tools/toolRegistry.js");
|
|
18
|
+
const resourceRegistry_js_1 = require("./resources/resourceRegistry.js");
|
|
19
|
+
const promptRegistry_js_1 = require("./prompts/promptRegistry.js");
|
|
10
20
|
const versionUtils_js_1 = require("./utils/versionUtils.js");
|
|
11
21
|
const tracing_js_1 = require("./utils/tracing.js");
|
|
12
|
-
|
|
22
|
+
// Load .env from current working directory (where npm run is executed)
|
|
23
|
+
// This happens before tracing is initialized, but we'll add a span when tracing is ready
|
|
24
|
+
const envPath = (0, node_path_1.join)(process.cwd(), '.env');
|
|
25
|
+
let envLoadError = null;
|
|
26
|
+
let envLoadedCount = 0;
|
|
27
|
+
if ((0, node_fs_2.existsSync)(envPath)) {
|
|
28
|
+
try {
|
|
29
|
+
// Read and parse .env file using Node.js built-in parseEnv
|
|
30
|
+
const envFile = (0, node_fs_1.readFileSync)(envPath, 'utf-8');
|
|
31
|
+
const parsed = (0, node_util_1.parseEnv)(envFile);
|
|
32
|
+
// Apply parsed values to process.env (with override)
|
|
33
|
+
// Note: process.loadEnvFile() doesn't override, so we use parseEnv + manual assignment
|
|
34
|
+
for (const [key, value] of Object.entries(parsed)) {
|
|
35
|
+
process.env[key] = value;
|
|
36
|
+
envLoadedCount++;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
envLoadError = error instanceof Error ? error : new Error(String(error));
|
|
41
|
+
}
|
|
42
|
+
}
|
|
13
43
|
const versionInfo = (0, versionUtils_js_1.getVersionInfo)();
|
|
14
44
|
// Parse configuration from command-line arguments
|
|
15
45
|
const config = (0, toolConfig_js_1.parseToolConfigFromArgs)();
|
|
16
46
|
// Get and filter tools based on configuration
|
|
17
47
|
const allTools = (0, toolRegistry_js_1.getAllTools)();
|
|
18
48
|
const enabledTools = (0, toolConfig_js_1.filterTools)(allTools, config);
|
|
49
|
+
// Get all resources
|
|
50
|
+
const allResources = (0, resourceRegistry_js_1.getAllResources)();
|
|
19
51
|
// Create an MCP server
|
|
20
52
|
const server = new mcp_js_1.McpServer({
|
|
21
53
|
name: versionInfo.name,
|
|
22
54
|
version: versionInfo.version
|
|
23
55
|
}, {
|
|
24
56
|
capabilities: {
|
|
25
|
-
tools: {}
|
|
57
|
+
tools: {},
|
|
58
|
+
resources: {},
|
|
59
|
+
prompts: {}
|
|
26
60
|
}
|
|
27
61
|
});
|
|
28
62
|
// Register enabled tools to the server
|
|
29
63
|
enabledTools.forEach((tool) => {
|
|
30
64
|
tool.installTo(server);
|
|
31
65
|
});
|
|
32
|
-
//
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
66
|
+
// Register all resources to the server
|
|
67
|
+
allResources.forEach((resource) => {
|
|
68
|
+
resource.installTo(server);
|
|
69
|
+
});
|
|
70
|
+
// Register prompt handlers
|
|
71
|
+
server.server.setRequestHandler(types_js_1.ListPromptsRequestSchema, async () => {
|
|
72
|
+
const allPrompts = (0, promptRegistry_js_1.getAllPrompts)();
|
|
73
|
+
return {
|
|
74
|
+
prompts: allPrompts.map((prompt) => prompt.getMetadata())
|
|
75
|
+
};
|
|
76
|
+
});
|
|
77
|
+
server.server.setRequestHandler(types_js_1.GetPromptRequestSchema, async (request) => {
|
|
78
|
+
const { name, arguments: args } = request.params;
|
|
79
|
+
const prompt = (0, promptRegistry_js_1.getPromptByName)(name);
|
|
80
|
+
if (!prompt) {
|
|
81
|
+
throw new Error(`Prompt not found: ${name}`);
|
|
37
82
|
}
|
|
38
|
-
|
|
83
|
+
// Convert args to object for easier access
|
|
84
|
+
const argsObj = {};
|
|
85
|
+
if (args && typeof args === 'object') {
|
|
86
|
+
Object.assign(argsObj, args);
|
|
87
|
+
}
|
|
88
|
+
// Get the prompt messages with filled-in arguments
|
|
89
|
+
const messages = prompt.getMessages(argsObj);
|
|
90
|
+
return {
|
|
91
|
+
description: prompt.description,
|
|
92
|
+
messages
|
|
93
|
+
};
|
|
94
|
+
});
|
|
39
95
|
async function main() {
|
|
40
96
|
// Initialize OpenTelemetry tracing if not in test mode
|
|
97
|
+
let tracingInitialized = false;
|
|
41
98
|
if (process.env.NODE_ENV !== 'test' && !process.env.VITEST) {
|
|
42
99
|
try {
|
|
43
100
|
await (0, tracing_js_1.initializeTracing)();
|
|
44
|
-
|
|
101
|
+
tracingInitialized = (0, tracing_js_1.isTracingInitialized)();
|
|
102
|
+
// Record .env loading as a span (retrospectively since it happened before tracing init)
|
|
103
|
+
if (tracingInitialized) {
|
|
104
|
+
const tracer = (0, tracing_js_1.getTracer)();
|
|
105
|
+
const span = tracer.startSpan('config.load_env', {
|
|
106
|
+
attributes: {
|
|
107
|
+
'config.file.path': envPath,
|
|
108
|
+
'config.file.exists': (0, node_fs_2.existsSync)(envPath),
|
|
109
|
+
'config.vars.loaded': envLoadedCount,
|
|
110
|
+
'operation.type': 'config_load'
|
|
111
|
+
}
|
|
112
|
+
});
|
|
113
|
+
if (envLoadError) {
|
|
114
|
+
span.recordException(envLoadError);
|
|
115
|
+
span.setStatus({
|
|
116
|
+
code: api_1.SpanStatusCode.ERROR,
|
|
117
|
+
message: envLoadError.message
|
|
118
|
+
});
|
|
119
|
+
span.setAttribute('error.type', envLoadError.name);
|
|
120
|
+
span.setAttribute('error.message', envLoadError.message);
|
|
121
|
+
}
|
|
122
|
+
else if (envLoadedCount > 0) {
|
|
123
|
+
span.setStatus({ code: api_1.SpanStatusCode.OK });
|
|
124
|
+
span.setAttribute('config.load.success', true);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
// No error, but no variables loaded either (file might be empty or not exist)
|
|
128
|
+
span.setStatus({ code: api_1.SpanStatusCode.OK });
|
|
129
|
+
span.setAttribute('config.load.success', true);
|
|
130
|
+
span.setAttribute('config.load.empty', true);
|
|
131
|
+
}
|
|
132
|
+
span.end();
|
|
133
|
+
}
|
|
45
134
|
}
|
|
46
135
|
catch (error) {
|
|
47
|
-
|
|
136
|
+
// Tracing initialization failed, log it but continue without tracing
|
|
137
|
+
server.server.sendLoggingMessage({
|
|
138
|
+
level: 'warning',
|
|
139
|
+
data: `Failed to initialize tracing: ${error instanceof Error ? error.message : String(error)}`
|
|
140
|
+
});
|
|
48
141
|
}
|
|
49
142
|
}
|
|
143
|
+
// Log tracing status and configuration
|
|
144
|
+
if (tracingInitialized) {
|
|
145
|
+
const tracingConfig = {
|
|
146
|
+
status: 'enabled',
|
|
147
|
+
endpoint: process.env.OTEL_EXPORTER_OTLP_ENDPOINT || 'not set',
|
|
148
|
+
serviceName: process.env.OTEL_SERVICE_NAME || 'mapbox-mcp-server (default)'
|
|
149
|
+
};
|
|
150
|
+
server.server.sendLoggingMessage({
|
|
151
|
+
level: 'info',
|
|
152
|
+
data: `OpenTelemetry tracing enabled - Endpoint: ${tracingConfig.endpoint}, Service: ${tracingConfig.serviceName}`
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
else {
|
|
156
|
+
server.server.sendLoggingMessage({
|
|
157
|
+
level: 'info',
|
|
158
|
+
data: 'OpenTelemetry tracing: disabled'
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
// Send MCP logging message about environment variables
|
|
162
|
+
if (envLoadError) {
|
|
163
|
+
server.server.sendLoggingMessage({
|
|
164
|
+
level: 'warning',
|
|
165
|
+
data: `Warning loading .env file: ${envLoadError.message}`
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
else if (envLoadedCount > 0) {
|
|
169
|
+
server.server.sendLoggingMessage({
|
|
170
|
+
level: 'info',
|
|
171
|
+
data: `Loaded ${envLoadedCount} environment variables from ${envPath}`
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
const relevantEnvVars = Object.freeze({
|
|
175
|
+
MAPBOX_ACCESS_TOKEN: process.env.MAPBOX_ACCESS_TOKEN ? '***' : undefined,
|
|
176
|
+
MAPBOX_API_ENDPOINT: process.env.MAPBOX_API_ENDPOINT,
|
|
177
|
+
OTEL_SERVICE_NAME: process.env.OTEL_SERVICE_NAME,
|
|
178
|
+
OTEL_EXPORTER_OTLP_ENDPOINT: process.env.OTEL_EXPORTER_OTLP_ENDPOINT,
|
|
179
|
+
OTEL_TRACING_ENABLED: process.env.OTEL_TRACING_ENABLED,
|
|
180
|
+
NODE_ENV: process.env.NODE_ENV
|
|
181
|
+
});
|
|
182
|
+
server.server.sendLoggingMessage({
|
|
183
|
+
level: 'debug',
|
|
184
|
+
data: JSON.stringify(relevantEnvVars, null, 2)
|
|
185
|
+
});
|
|
50
186
|
// Start receiving messages on stdin and sending messages on stdout
|
|
51
187
|
const transport = new stdio_js_1.StdioServerTransport();
|
|
52
188
|
await server.connect(transport);
|
|
@@ -57,13 +193,31 @@ async function shutdown() {
|
|
|
57
193
|
try {
|
|
58
194
|
await (0, tracing_js_1.shutdownTracing)();
|
|
59
195
|
}
|
|
60
|
-
catch (
|
|
61
|
-
|
|
196
|
+
catch (error) {
|
|
197
|
+
// Tracing shutdown failed, log via MCP if server is available
|
|
198
|
+
try {
|
|
199
|
+
server.server.sendLoggingMessage({
|
|
200
|
+
level: 'error',
|
|
201
|
+
data: `Error shutting down tracing: ${error instanceof Error ? error.message : String(error)}`
|
|
202
|
+
});
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
// Server not available, ignore
|
|
206
|
+
}
|
|
62
207
|
}
|
|
63
208
|
process.exit(0);
|
|
64
209
|
}
|
|
65
210
|
function exitWithLog(message, error, code = 1) {
|
|
66
|
-
|
|
211
|
+
// Log error via MCP server if available
|
|
212
|
+
try {
|
|
213
|
+
server.server.sendLoggingMessage({
|
|
214
|
+
level: 'error',
|
|
215
|
+
data: `${message}: ${error instanceof Error ? error.message : String(error)}`
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
// Server not available, ignore
|
|
220
|
+
}
|
|
67
221
|
process.exit(code);
|
|
68
222
|
}
|
|
69
223
|
['SIGINT', 'SIGTERM'].forEach((signal) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":";AAAA,6BAA6B;AAC7B,kCAAkC;;AAElC,oEAAoE;AACpE,wEAAiF;AACjF,0DAA8E;AAC9E,6DAAsD;AACtD,6DAAyD;AACzD,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { type Prompt, type PromptArgument, type PromptMessage } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Base class for all MCP prompts.
|
|
4
|
+
*
|
|
5
|
+
* Prompts are pre-built, parameterized workflows that guide multi-step geospatial tasks.
|
|
6
|
+
* They capture domain expertise and best practices for common use cases.
|
|
7
|
+
*/
|
|
8
|
+
export declare abstract class BasePrompt {
|
|
9
|
+
/**
|
|
10
|
+
* Unique identifier for this prompt (e.g., "find-places-nearby")
|
|
11
|
+
*/
|
|
12
|
+
abstract readonly name: string;
|
|
13
|
+
/**
|
|
14
|
+
* Human-readable description of what this prompt does
|
|
15
|
+
*/
|
|
16
|
+
abstract readonly description: string;
|
|
17
|
+
/**
|
|
18
|
+
* Arguments this prompt accepts
|
|
19
|
+
*/
|
|
20
|
+
abstract readonly arguments: PromptArgument[];
|
|
21
|
+
/**
|
|
22
|
+
* Get the prompt metadata for listing
|
|
23
|
+
*/
|
|
24
|
+
getMetadata(): Prompt;
|
|
25
|
+
/**
|
|
26
|
+
* Generate the prompt messages with filled-in arguments
|
|
27
|
+
*
|
|
28
|
+
* @param args - The argument values provided by the user/agent
|
|
29
|
+
* @returns Array of messages to send to the LLM
|
|
30
|
+
*/
|
|
31
|
+
abstract getMessages(args: Record<string, string>): PromptMessage[];
|
|
32
|
+
/**
|
|
33
|
+
* Validate that all required arguments are provided
|
|
34
|
+
*
|
|
35
|
+
* @param args - The argument values to validate
|
|
36
|
+
* @throws Error if required arguments are missing
|
|
37
|
+
*/
|
|
38
|
+
protected validateArguments(args: Record<string, string>): void;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=BasePrompt.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BasePrompt.d.ts","sourceRoot":"","sources":["../../../src/prompts/BasePrompt.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,KAAK,MAAM,EACX,KAAK,cAAc,EACnB,KAAK,aAAa,EACnB,MAAM,oCAAoC,CAAC;AAE5C;;;;;GAKG;AACH,8BAAsB,UAAU;IAC9B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAEtC;;OAEG;IACH,QAAQ,CAAC,QAAQ,CAAC,SAAS,EAAE,cAAc,EAAE,CAAC;IAE9C;;OAEG;IACH,WAAW,IAAI,MAAM;IAQrB;;;;;OAKG;IACH,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,aAAa,EAAE;IAEnE;;;;;OAKG;IACH,SAAS,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI;CAOhE"}
|