@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.
Files changed (224) hide show
  1. package/README.md +147 -23
  2. package/dist/commonjs/config/toolConfig.d.ts +10 -0
  3. package/dist/commonjs/config/toolConfig.d.ts.map +1 -1
  4. package/dist/commonjs/config/toolConfig.js +36 -0
  5. package/dist/commonjs/config/toolConfig.js.map +1 -1
  6. package/dist/commonjs/index.d.ts +1 -1
  7. package/dist/commonjs/index.d.ts.map +1 -1
  8. package/dist/commonjs/index.js +167 -13
  9. package/dist/commonjs/index.js.map +1 -1
  10. package/dist/commonjs/prompts/BasePrompt.d.ts +40 -0
  11. package/dist/commonjs/prompts/BasePrompt.d.ts.map +1 -0
  12. package/dist/commonjs/prompts/BasePrompt.js +38 -0
  13. package/dist/commonjs/prompts/BasePrompt.js.map +1 -0
  14. package/dist/commonjs/prompts/FindPlacesNearbyPrompt.d.ts +22 -0
  15. package/dist/commonjs/prompts/FindPlacesNearbyPrompt.d.ts.map +1 -0
  16. package/dist/commonjs/prompts/FindPlacesNearbyPrompt.js +65 -0
  17. package/dist/commonjs/prompts/FindPlacesNearbyPrompt.js.map +1 -0
  18. package/dist/commonjs/prompts/GetDirectionsPrompt.d.ts +23 -0
  19. package/dist/commonjs/prompts/GetDirectionsPrompt.d.ts.map +1 -0
  20. package/dist/commonjs/prompts/GetDirectionsPrompt.js +67 -0
  21. package/dist/commonjs/prompts/GetDirectionsPrompt.js.map +1 -0
  22. package/dist/commonjs/prompts/ShowReachableAreasPrompt.d.ts +23 -0
  23. package/dist/commonjs/prompts/ShowReachableAreasPrompt.d.ts.map +1 -0
  24. package/dist/commonjs/prompts/ShowReachableAreasPrompt.js +70 -0
  25. package/dist/commonjs/prompts/ShowReachableAreasPrompt.js.map +1 -0
  26. package/dist/commonjs/prompts/promptRegistry.d.ts +29 -0
  27. package/dist/commonjs/prompts/promptRegistry.d.ts.map +1 -0
  28. package/dist/commonjs/prompts/promptRegistry.js +39 -0
  29. package/dist/commonjs/prompts/promptRegistry.js.map +1 -0
  30. package/dist/commonjs/resources/BaseResource.d.ts +28 -0
  31. package/dist/commonjs/resources/BaseResource.d.ts.map +1 -0
  32. package/dist/commonjs/resources/BaseResource.js +32 -0
  33. package/dist/commonjs/resources/BaseResource.js.map +1 -0
  34. package/dist/commonjs/resources/MapboxApiBasedResource.d.ts +35 -0
  35. package/dist/commonjs/resources/MapboxApiBasedResource.d.ts.map +1 -0
  36. package/dist/commonjs/resources/MapboxApiBasedResource.js +88 -0
  37. package/dist/commonjs/resources/MapboxApiBasedResource.js.map +1 -0
  38. package/dist/commonjs/resources/category-list/CategoryListResource.d.ts +27 -0
  39. package/dist/commonjs/resources/category-list/CategoryListResource.d.ts.map +1 -0
  40. package/dist/commonjs/resources/category-list/CategoryListResource.js +71 -0
  41. package/dist/commonjs/resources/category-list/CategoryListResource.js.map +1 -0
  42. package/dist/commonjs/resources/resourceRegistry.d.ts +6 -0
  43. package/dist/commonjs/resources/resourceRegistry.d.ts.map +1 -0
  44. package/dist/commonjs/resources/resourceRegistry.js +32 -0
  45. package/dist/commonjs/resources/resourceRegistry.js.map +1 -0
  46. package/dist/commonjs/tools/BaseTool.d.ts +7 -0
  47. package/dist/commonjs/tools/BaseTool.d.ts.map +1 -1
  48. package/dist/commonjs/tools/BaseTool.js +19 -0
  49. package/dist/commonjs/tools/BaseTool.js.map +1 -1
  50. package/dist/commonjs/tools/MapboxApiBasedTool.d.ts.map +1 -1
  51. package/dist/commonjs/tools/MapboxApiBasedTool.js +1 -1
  52. package/dist/commonjs/tools/MapboxApiBasedTool.js.map +1 -1
  53. package/dist/commonjs/tools/category-list-tool/CategoryListTool.d.ts.map +1 -1
  54. package/dist/commonjs/tools/category-list-tool/CategoryListTool.js +2 -2
  55. package/dist/commonjs/tools/category-list-tool/CategoryListTool.js.map +1 -1
  56. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.d.ts.map +1 -1
  57. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.input.schema.d.ts +4 -10
  58. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.input.schema.d.ts.map +1 -1
  59. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.input.schema.js +5 -43
  60. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.input.schema.js.map +1 -1
  61. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.js +2 -7
  62. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.js.map +1 -1
  63. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.output.schema.d.ts +204 -204
  64. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.output.schema.d.ts.map +1 -1
  65. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.output.schema.js +2 -1
  66. package/dist/commonjs/tools/category-search-tool/CategorySearchTool.output.schema.js.map +1 -1
  67. package/dist/commonjs/tools/directions-tool/DirectionsTool.output.schema.d.ts +66 -66
  68. package/dist/commonjs/tools/isochrone-tool/IsochroneTool.output.schema.d.ts +28 -28
  69. package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.d.ts +28 -0
  70. package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.d.ts.map +1 -0
  71. package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.input.schema.d.ts +10 -0
  72. package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.input.schema.d.ts.map +1 -0
  73. package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.input.schema.js +13 -0
  74. package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.input.schema.js.map +1 -0
  75. package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.js +141 -0
  76. package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.js.map +1 -0
  77. package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.output.schema.d.ts +19 -0
  78. package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.output.schema.d.ts.map +1 -0
  79. package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.output.schema.js +13 -0
  80. package/dist/commonjs/tools/resource-reader-tool/ResourceReaderTool.output.schema.js.map +1 -0
  81. package/dist/commonjs/tools/reverse-geocode-tool/ReverseGeocodeTool.input.schema.d.ts +1 -1
  82. package/dist/commonjs/tools/reverse-geocode-tool/ReverseGeocodeTool.output.schema.d.ts +538 -538
  83. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.d.ts.map +1 -1
  84. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.d.ts +17 -17
  85. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.d.ts.map +1 -1
  86. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js +6 -30
  87. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js.map +1 -1
  88. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.js +2 -11
  89. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.js.map +1 -1
  90. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.d.ts +1514 -623
  91. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.d.ts.map +1 -1
  92. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.js +9 -4
  93. package/dist/commonjs/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.js.map +1 -1
  94. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -1
  95. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.input.schema.d.ts +8 -8
  96. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js +26 -7
  97. package/dist/commonjs/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -1
  98. package/dist/commonjs/tools/toolRegistry.d.ts +2 -1
  99. package/dist/commonjs/tools/toolRegistry.d.ts.map +1 -1
  100. package/dist/commonjs/tools/toolRegistry.js +2 -0
  101. package/dist/commonjs/tools/toolRegistry.js.map +1 -1
  102. package/dist/commonjs/tools/version-tool/VersionTool.d.ts.map +1 -1
  103. package/dist/commonjs/tools/version-tool/VersionTool.js +7 -7
  104. package/dist/commonjs/tools/version-tool/VersionTool.js.map +1 -1
  105. package/dist/commonjs/utils/httpPipeline.d.ts +5 -0
  106. package/dist/commonjs/utils/httpPipeline.d.ts.map +1 -1
  107. package/dist/commonjs/utils/httpPipeline.js +46 -1
  108. package/dist/commonjs/utils/httpPipeline.js.map +1 -1
  109. package/dist/commonjs/utils/tracing.d.ts.map +1 -1
  110. package/dist/commonjs/utils/tracing.js +17 -0
  111. package/dist/commonjs/utils/tracing.js.map +1 -1
  112. package/dist/commonjs/version.json +4 -4
  113. package/dist/esm/config/toolConfig.d.ts +10 -0
  114. package/dist/esm/config/toolConfig.d.ts.map +1 -1
  115. package/dist/esm/config/toolConfig.js +35 -0
  116. package/dist/esm/config/toolConfig.js.map +1 -1
  117. package/dist/esm/index.d.ts +1 -1
  118. package/dist/esm/index.d.ts.map +1 -1
  119. package/dist/esm/index.js +168 -14
  120. package/dist/esm/index.js.map +1 -1
  121. package/dist/esm/prompts/BasePrompt.d.ts +40 -0
  122. package/dist/esm/prompts/BasePrompt.d.ts.map +1 -0
  123. package/dist/esm/prompts/BasePrompt.js +34 -0
  124. package/dist/esm/prompts/BasePrompt.js.map +1 -0
  125. package/dist/esm/prompts/FindPlacesNearbyPrompt.d.ts +22 -0
  126. package/dist/esm/prompts/FindPlacesNearbyPrompt.d.ts.map +1 -0
  127. package/dist/esm/prompts/FindPlacesNearbyPrompt.js +61 -0
  128. package/dist/esm/prompts/FindPlacesNearbyPrompt.js.map +1 -0
  129. package/dist/esm/prompts/GetDirectionsPrompt.d.ts +23 -0
  130. package/dist/esm/prompts/GetDirectionsPrompt.d.ts.map +1 -0
  131. package/dist/esm/prompts/GetDirectionsPrompt.js +63 -0
  132. package/dist/esm/prompts/GetDirectionsPrompt.js.map +1 -0
  133. package/dist/esm/prompts/ShowReachableAreasPrompt.d.ts +23 -0
  134. package/dist/esm/prompts/ShowReachableAreasPrompt.d.ts.map +1 -0
  135. package/dist/esm/prompts/ShowReachableAreasPrompt.js +66 -0
  136. package/dist/esm/prompts/ShowReachableAreasPrompt.js.map +1 -0
  137. package/dist/esm/prompts/promptRegistry.d.ts +29 -0
  138. package/dist/esm/prompts/promptRegistry.d.ts.map +1 -0
  139. package/dist/esm/prompts/promptRegistry.js +35 -0
  140. package/dist/esm/prompts/promptRegistry.js.map +1 -0
  141. package/dist/esm/resources/BaseResource.d.ts +28 -0
  142. package/dist/esm/resources/BaseResource.d.ts.map +1 -0
  143. package/dist/esm/resources/BaseResource.js +28 -0
  144. package/dist/esm/resources/BaseResource.js.map +1 -0
  145. package/dist/esm/resources/MapboxApiBasedResource.d.ts +35 -0
  146. package/dist/esm/resources/MapboxApiBasedResource.d.ts.map +1 -0
  147. package/dist/esm/resources/MapboxApiBasedResource.js +84 -0
  148. package/dist/esm/resources/MapboxApiBasedResource.js.map +1 -0
  149. package/dist/esm/resources/category-list/CategoryListResource.d.ts +27 -0
  150. package/dist/esm/resources/category-list/CategoryListResource.d.ts.map +1 -0
  151. package/dist/esm/resources/category-list/CategoryListResource.js +67 -0
  152. package/dist/esm/resources/category-list/CategoryListResource.js.map +1 -0
  153. package/dist/esm/resources/resourceRegistry.d.ts +6 -0
  154. package/dist/esm/resources/resourceRegistry.d.ts.map +1 -0
  155. package/dist/esm/resources/resourceRegistry.js +27 -0
  156. package/dist/esm/resources/resourceRegistry.js.map +1 -0
  157. package/dist/esm/tools/BaseTool.d.ts +7 -0
  158. package/dist/esm/tools/BaseTool.d.ts.map +1 -1
  159. package/dist/esm/tools/BaseTool.js +19 -0
  160. package/dist/esm/tools/BaseTool.js.map +1 -1
  161. package/dist/esm/tools/MapboxApiBasedTool.d.ts.map +1 -1
  162. package/dist/esm/tools/MapboxApiBasedTool.js +1 -1
  163. package/dist/esm/tools/MapboxApiBasedTool.js.map +1 -1
  164. package/dist/esm/tools/category-list-tool/CategoryListTool.d.ts.map +1 -1
  165. package/dist/esm/tools/category-list-tool/CategoryListTool.js +2 -2
  166. package/dist/esm/tools/category-list-tool/CategoryListTool.js.map +1 -1
  167. package/dist/esm/tools/category-search-tool/CategorySearchTool.d.ts.map +1 -1
  168. package/dist/esm/tools/category-search-tool/CategorySearchTool.input.schema.d.ts +4 -10
  169. package/dist/esm/tools/category-search-tool/CategorySearchTool.input.schema.d.ts.map +1 -1
  170. package/dist/esm/tools/category-search-tool/CategorySearchTool.input.schema.js +5 -43
  171. package/dist/esm/tools/category-search-tool/CategorySearchTool.input.schema.js.map +1 -1
  172. package/dist/esm/tools/category-search-tool/CategorySearchTool.js +2 -7
  173. package/dist/esm/tools/category-search-tool/CategorySearchTool.js.map +1 -1
  174. package/dist/esm/tools/category-search-tool/CategorySearchTool.output.schema.d.ts +204 -204
  175. package/dist/esm/tools/category-search-tool/CategorySearchTool.output.schema.d.ts.map +1 -1
  176. package/dist/esm/tools/category-search-tool/CategorySearchTool.output.schema.js +2 -1
  177. package/dist/esm/tools/category-search-tool/CategorySearchTool.output.schema.js.map +1 -1
  178. package/dist/esm/tools/directions-tool/DirectionsTool.output.schema.d.ts +66 -66
  179. package/dist/esm/tools/isochrone-tool/IsochroneTool.output.schema.d.ts +28 -28
  180. package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.d.ts +28 -0
  181. package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.d.ts.map +1 -0
  182. package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.input.schema.d.ts +10 -0
  183. package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.input.schema.d.ts.map +1 -0
  184. package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.input.schema.js +10 -0
  185. package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.input.schema.js.map +1 -0
  186. package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.js +137 -0
  187. package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.js.map +1 -0
  188. package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.output.schema.d.ts +19 -0
  189. package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.output.schema.d.ts.map +1 -0
  190. package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.output.schema.js +10 -0
  191. package/dist/esm/tools/resource-reader-tool/ResourceReaderTool.output.schema.js.map +1 -0
  192. package/dist/esm/tools/reverse-geocode-tool/ReverseGeocodeTool.input.schema.d.ts +1 -1
  193. package/dist/esm/tools/reverse-geocode-tool/ReverseGeocodeTool.output.schema.d.ts +538 -538
  194. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.d.ts.map +1 -1
  195. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.d.ts +17 -17
  196. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.d.ts.map +1 -1
  197. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js +6 -30
  198. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.input.schema.js.map +1 -1
  199. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.js +2 -11
  200. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.js.map +1 -1
  201. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.d.ts +1514 -623
  202. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.d.ts.map +1 -1
  203. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.js +9 -4
  204. package/dist/esm/tools/search-and-geocode-tool/SearchAndGeocodeTool.output.schema.js.map +1 -1
  205. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +1 -1
  206. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.input.schema.d.ts +8 -8
  207. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js +26 -7
  208. package/dist/esm/tools/static-map-image-tool/StaticMapImageTool.js.map +1 -1
  209. package/dist/esm/tools/toolRegistry.d.ts +2 -1
  210. package/dist/esm/tools/toolRegistry.d.ts.map +1 -1
  211. package/dist/esm/tools/toolRegistry.js +2 -0
  212. package/dist/esm/tools/toolRegistry.js.map +1 -1
  213. package/dist/esm/tools/version-tool/VersionTool.d.ts.map +1 -1
  214. package/dist/esm/tools/version-tool/VersionTool.js +7 -7
  215. package/dist/esm/tools/version-tool/VersionTool.js.map +1 -1
  216. package/dist/esm/utils/httpPipeline.d.ts +5 -0
  217. package/dist/esm/utils/httpPipeline.d.ts.map +1 -1
  218. package/dist/esm/utils/httpPipeline.js +44 -0
  219. package/dist/esm/utils/httpPipeline.js.map +1 -1
  220. package/dist/esm/utils/tracing.d.ts.map +1 -1
  221. package/dist/esm/utils/tracing.js +18 -1
  222. package/dist/esm/utils/tracing.js.map +1 -1
  223. package/dist/esm/version.json +4 -4
  224. 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
- ### Mapbox API tools
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 tool
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
- # Build
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
- # Run tracing demo with console output
203
- npm run demo:tracing
204
- ```
298
+ # 1. Copy the example configuration
299
+ cp .env.example .env
205
300
 
206
- ### Testing with Tracing
301
+ # 2. Edit .env to add your MAPBOX_ACCESS_TOKEN and configure tracing
207
302
 
208
- ```sh
209
- # Run tests with tracing enabled
210
- npm run test:tracing
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
- - 🔧 Environment variable configuration
218
- - 📊 Supported backends (Jaeger, AWS X-Ray, Google Cloud, etc.)
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 (CLAUDE.md)](./CLAUDE.md)** - Code quality, testing, documentation, and collaboration standards for all contributors
236
- - **[AI Agent Instructions (AGENTS.md)](./AGENTS.md)** - Comprehensive guide for AI agents working with this codebase
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. Follow the development setup in our [Engineering Standards](./CLAUDE.md#getting-started)
365
+ 2. Install dependencies: `npm install`
243
366
  3. Make your changes following our coding standards
244
- 4. Add tests for any new functionality
245
- 5. Submit a pull request with a clear description
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 [CLAUDE.md](./CLAUDE.md) for detailed requirements.
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;CAC1B;AAED,wBAAgB,uBAAuB,IAAI,UAAU,CAqBpD;AAED,wBAAgB,WAAW,CACzB,KAAK,EAAE,SAAS,YAAY,EAAE,EAC9B,MAAM,EAAE,UAAU,GACjB,YAAY,EAAE,CAqBhB"}
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;;AASlC,0DAqBC;AAED,kCAwBC;AA/CD,SAAgB,uBAAuB;IACrC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,MAAM,MAAM,GAAe,EAAE,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;aAAM,IAAI,GAAG,KAAK,iBAAiB,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,CAAC,aAAa,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAgB,WAAW,CACzB,KAA8B,EAC9B,MAAkB;IAElB,IAAI,aAAa,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;IAE/B,mEAAmE;IACnE,2CAA2C;IAC3C,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;QACtC,aAAa,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAC5C,MAAM,CAAC,YAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACzC,CAAC;QACF,mDAAmD;QACnD,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,mEAAmE;IACnE,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5D,aAAa,GAAG,aAAa,CAAC,MAAM,CAClC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,aAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CACrD,CAAC;IACJ,CAAC;IAED,OAAO,aAAa,CAAC;AACvB,CAAC"}
1
+ {"version":3,"file":"toolConfig.js","sourceRoot":"","sources":["../../../src/config/toolConfig.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- import 'dotenv/config';
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":"AAaA,OAAO,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":""}
@@ -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
- require("dotenv/config");
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
- // MCP-compatible logging functions
33
- // Completely suppress logging when MCP_DISABLE_LOGGING is set (for MCP inspector compatibility)
34
- function logIfEnabled(level, ...args) {
35
- if (!process.env.MCP_DISABLE_LOGGING) {
36
- console[level](...args);
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
- logIfEnabled('log', `OpenTelemetry tracing: ${(0, tracing_js_1.isTracingInitialized)() ? 'enabled' : 'disabled'}`);
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
- logIfEnabled('warn', 'Failed to initialize tracing:', error);
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 (e) {
61
- logIfEnabled('error', 'Error shutting down tracing:', e);
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
- logIfEnabled('error', message, error);
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":"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"}
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"}