@mapbox/mcp-server 0.0.2-dev.0 → 0.0.2
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/package.json +1 -1
- package/dist/cjs/package.json +0 -3
- package/dist/esm/package.json +0 -3
- package/dist/index.d.ts +0 -2
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -37
- package/dist/index.js.map +0 -1
- package/dist/tools/MapboxApiBasedTool.d.ts +0 -75
- package/dist/tools/MapboxApiBasedTool.d.ts.map +0 -1
- package/dist/tools/MapboxApiBasedTool.js +0 -78
- package/dist/tools/MapboxApiBasedTool.js.map +0 -1
- package/dist/tools/category-search-tool/CategorySearchTool.d.ts +0 -39
- package/dist/tools/category-search-tool/CategorySearchTool.d.ts.map +0 -1
- package/dist/tools/category-search-tool/CategorySearchTool.js +0 -638
- package/dist/tools/category-search-tool/CategorySearchTool.js.map +0 -1
- package/dist/tools/category-search-tool/CategorySearchTool.test.d.ts +0 -2
- package/dist/tools/category-search-tool/CategorySearchTool.test.d.ts.map +0 -1
- package/dist/tools/category-search-tool/CategorySearchTool.test.js +0 -289
- package/dist/tools/category-search-tool/CategorySearchTool.test.js.map +0 -1
- package/dist/tools/directions-tool/DirectionsTool.d.ts +0 -53
- package/dist/tools/directions-tool/DirectionsTool.d.ts.map +0 -1
- package/dist/tools/directions-tool/DirectionsTool.js +0 -405
- package/dist/tools/directions-tool/DirectionsTool.js.map +0 -1
- package/dist/tools/directions-tool/DirectionsTool.test.d.ts +0 -2
- package/dist/tools/directions-tool/DirectionsTool.test.d.ts.map +0 -1
- package/dist/tools/directions-tool/DirectionsTool.test.js +0 -867
- package/dist/tools/directions-tool/DirectionsTool.test.js.map +0 -1
- package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.d.ts +0 -51
- package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.d.ts.map +0 -1
- package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.js +0 -182
- package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.js.map +0 -1
- package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.d.ts +0 -2
- package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.d.ts.map +0 -1
- package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.js +0 -335
- package/dist/tools/forward-geocode-tool/ForwardGeocodeTool.test.js.map +0 -1
- package/dist/tools/isochrone-tool/IsochroneTool.d.ts +0 -44
- package/dist/tools/isochrone-tool/IsochroneTool.d.ts.map +0 -1
- package/dist/tools/isochrone-tool/IsochroneTool.js +0 -108
- package/dist/tools/isochrone-tool/IsochroneTool.js.map +0 -1
- package/dist/tools/isochrone-tool/IsochroneTool.test.d.ts +0 -2
- package/dist/tools/isochrone-tool/IsochroneTool.test.d.ts.map +0 -1
- package/dist/tools/isochrone-tool/IsochroneTool.test.js +0 -110
- package/dist/tools/isochrone-tool/IsochroneTool.test.js.map +0 -1
- package/dist/tools/matrix-tool/MatrixTool.d.ts +0 -35
- package/dist/tools/matrix-tool/MatrixTool.d.ts.map +0 -1
- package/dist/tools/matrix-tool/MatrixTool.js +0 -195
- package/dist/tools/matrix-tool/MatrixTool.js.map +0 -1
- package/dist/tools/matrix-tool/MatrixTool.test.d.ts +0 -2
- package/dist/tools/matrix-tool/MatrixTool.test.d.ts.map +0 -1
- package/dist/tools/matrix-tool/MatrixTool.test.js +0 -803
- package/dist/tools/matrix-tool/MatrixTool.test.js.map +0 -1
- package/dist/tools/poi-search-tool/PoiSearchTool.d.ts +0 -54
- package/dist/tools/poi-search-tool/PoiSearchTool.d.ts.map +0 -1
- package/dist/tools/poi-search-tool/PoiSearchTool.js +0 -193
- package/dist/tools/poi-search-tool/PoiSearchTool.js.map +0 -1
- package/dist/tools/poi-search-tool/PoiSearchTool.test.d.ts +0 -2
- package/dist/tools/poi-search-tool/PoiSearchTool.test.d.ts.map +0 -1
- package/dist/tools/poi-search-tool/PoiSearchTool.test.js +0 -338
- package/dist/tools/poi-search-tool/PoiSearchTool.test.js.map +0 -1
- package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.d.ts +0 -42
- package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.d.ts.map +0 -1
- package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.js +0 -131
- package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.js.map +0 -1
- package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.d.ts +0 -2
- package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.d.ts.map +0 -1
- package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.js +0 -340
- package/dist/tools/reverse-geocode-tool/ReverseGeocodeTool.test.js.map +0 -1
- package/dist/tools/static-map-image-tool/StaticMapImageTool.d.ts +0 -148
- package/dist/tools/static-map-image-tool/StaticMapImageTool.d.ts.map +0 -1
- package/dist/tools/static-map-image-tool/StaticMapImageTool.js +0 -406
- package/dist/tools/static-map-image-tool/StaticMapImageTool.js.map +0 -1
- package/dist/tools/static-map-image-tool/StaticMapImageTool.test.d.ts +0 -2
- package/dist/tools/static-map-image-tool/StaticMapImageTool.test.d.ts.map +0 -1
- package/dist/tools/static-map-image-tool/StaticMapImageTool.test.js +0 -440
- package/dist/tools/static-map-image-tool/StaticMapImageTool.test.js.map +0 -1
- package/dist/utils/requestUtils.d.ts +0 -6
- package/dist/utils/requestUtils.d.ts.map +0 -1
- package/dist/utils/requestUtils.js +0 -29
- package/dist/utils/requestUtils.js.map +0 -1
- package/dist/utils/requestUtils.test-helpers.d.ts +0 -3
- package/dist/utils/requestUtils.test-helpers.d.ts.map +0 -1
- package/dist/utils/requestUtils.test-helpers.js +0 -28
- package/dist/utils/requestUtils.test-helpers.js.map +0 -1
- package/dist/utils/versionUtils.d.ts +0 -9
- package/dist/utils/versionUtils.d.ts.map +0 -1
- package/dist/utils/versionUtils.js +0 -25
- package/dist/utils/versionUtils.js.map +0 -1
- package/dist/version.json +0 -6
|
@@ -1,338 +0,0 @@
|
|
|
1
|
-
// Set the token before importing the tool
|
|
2
|
-
process.env.MAPBOX_ACCESS_TOKEN = 'test-token';
|
|
3
|
-
import { setupFetch, assertHeadersSent } from '../../utils/requestUtils.test-helpers.js';
|
|
4
|
-
import { PoiSearchTool } from '../poi-search-tool/PoiSearchTool.js';
|
|
5
|
-
describe('PoiSearchTool', () => {
|
|
6
|
-
afterEach(() => {
|
|
7
|
-
jest.restoreAllMocks();
|
|
8
|
-
});
|
|
9
|
-
it('sends custom header', async () => {
|
|
10
|
-
const mockFetch = setupFetch();
|
|
11
|
-
await new PoiSearchTool().run({
|
|
12
|
-
q: 'coffee shop'
|
|
13
|
-
});
|
|
14
|
-
assertHeadersSent(mockFetch);
|
|
15
|
-
});
|
|
16
|
-
it('constructs correct URL with required parameters', async () => {
|
|
17
|
-
const mockFetch = setupFetch();
|
|
18
|
-
await new PoiSearchTool().run({
|
|
19
|
-
q: 'starbucks'
|
|
20
|
-
});
|
|
21
|
-
const calledUrl = mockFetch.mock.calls[0][0];
|
|
22
|
-
expect(calledUrl).toContain('search/searchbox/v1/forward');
|
|
23
|
-
expect(calledUrl).toContain('q=starbucks');
|
|
24
|
-
expect(calledUrl).toContain('access_token=');
|
|
25
|
-
});
|
|
26
|
-
it('includes all optional parameters in URL', async () => {
|
|
27
|
-
const mockFetch = setupFetch();
|
|
28
|
-
await new PoiSearchTool().run({
|
|
29
|
-
q: 'restaurant',
|
|
30
|
-
language: 'es',
|
|
31
|
-
limit: 5,
|
|
32
|
-
proximity: [-74.006, 40.7128],
|
|
33
|
-
bbox: [-74.1, 40.6, -73.9, 40.8],
|
|
34
|
-
country: ['US', 'CA'],
|
|
35
|
-
types: ['poi', 'address'],
|
|
36
|
-
poi_category: ['restaurant', 'cafe'],
|
|
37
|
-
auto_complete: true,
|
|
38
|
-
eta_type: 'navigation',
|
|
39
|
-
navigation_profile: 'driving',
|
|
40
|
-
origin: [-74.0, 40.7]
|
|
41
|
-
});
|
|
42
|
-
const calledUrl = mockFetch.mock.calls[0][0];
|
|
43
|
-
expect(calledUrl).toContain('q=restaurant');
|
|
44
|
-
expect(calledUrl).toContain('language=es');
|
|
45
|
-
expect(calledUrl).toContain('limit=5');
|
|
46
|
-
expect(calledUrl).toContain('proximity=-74.006%2C40.7128');
|
|
47
|
-
expect(calledUrl).toContain('bbox=-74.1%2C40.6%2C-73.9%2C40.8');
|
|
48
|
-
expect(calledUrl).toContain('country=US%2CCA');
|
|
49
|
-
expect(calledUrl).toContain('types=poi%2Caddress');
|
|
50
|
-
expect(calledUrl).toContain('poi_category=restaurant%2Ccafe');
|
|
51
|
-
expect(calledUrl).toContain('auto_complete=true');
|
|
52
|
-
expect(calledUrl).toContain('eta_type=navigation');
|
|
53
|
-
expect(calledUrl).toContain('navigation_profile=driving');
|
|
54
|
-
expect(calledUrl).toContain('origin=-74%2C40.7');
|
|
55
|
-
});
|
|
56
|
-
it('handles IP-based proximity', async () => {
|
|
57
|
-
const mockFetch = setupFetch();
|
|
58
|
-
await new PoiSearchTool().run({
|
|
59
|
-
q: 'pizza',
|
|
60
|
-
proximity: 'ip'
|
|
61
|
-
});
|
|
62
|
-
const calledUrl = mockFetch.mock.calls[0][0];
|
|
63
|
-
expect(calledUrl).toContain('proximity=ip');
|
|
64
|
-
});
|
|
65
|
-
it('handles string format proximity coordinates', async () => {
|
|
66
|
-
const mockFetch = setupFetch();
|
|
67
|
-
await new PoiSearchTool().run({
|
|
68
|
-
q: 'museum',
|
|
69
|
-
proximity: '-82.451668,27.942976'
|
|
70
|
-
});
|
|
71
|
-
const calledUrl = mockFetch.mock.calls[0][0];
|
|
72
|
-
expect(calledUrl).toContain('proximity=-82.451668%2C27.942976');
|
|
73
|
-
});
|
|
74
|
-
it('handles array-like string format proximity', async () => {
|
|
75
|
-
const mockFetch = setupFetch();
|
|
76
|
-
await new PoiSearchTool().run({
|
|
77
|
-
q: 'bank',
|
|
78
|
-
proximity: '[-82.451668, 27.942964]'
|
|
79
|
-
});
|
|
80
|
-
const calledUrl = mockFetch.mock.calls[0][0];
|
|
81
|
-
expect(calledUrl).toContain('proximity=-82.451668%2C27.942964');
|
|
82
|
-
});
|
|
83
|
-
it('uses default limit when not specified', async () => {
|
|
84
|
-
const mockFetch = setupFetch();
|
|
85
|
-
await new PoiSearchTool().run({
|
|
86
|
-
q: 'pharmacy'
|
|
87
|
-
});
|
|
88
|
-
const calledUrl = mockFetch.mock.calls[0][0];
|
|
89
|
-
expect(calledUrl).toContain('limit=10');
|
|
90
|
-
});
|
|
91
|
-
it('handles fetch errors gracefully', async () => {
|
|
92
|
-
const mockFetch = setupFetch({
|
|
93
|
-
ok: false,
|
|
94
|
-
status: 404,
|
|
95
|
-
statusText: 'Not Found'
|
|
96
|
-
});
|
|
97
|
-
const result = await new PoiSearchTool().run({
|
|
98
|
-
q: 'test query'
|
|
99
|
-
});
|
|
100
|
-
expect(result.is_error).toBe(true);
|
|
101
|
-
expect(result.content[0]).toMatchObject({
|
|
102
|
-
type: 'text',
|
|
103
|
-
text: 'Internal error has occurred.'
|
|
104
|
-
});
|
|
105
|
-
});
|
|
106
|
-
it('validates query length constraint', async () => {
|
|
107
|
-
const tool = new PoiSearchTool();
|
|
108
|
-
const longQuery = 'a'.repeat(257); // 257 characters, exceeds limit
|
|
109
|
-
await expect(tool.run({
|
|
110
|
-
q: longQuery
|
|
111
|
-
})).resolves.toMatchObject({
|
|
112
|
-
is_error: true
|
|
113
|
-
});
|
|
114
|
-
});
|
|
115
|
-
it('validates limit constraints', async () => {
|
|
116
|
-
const tool = new PoiSearchTool();
|
|
117
|
-
// Test limit too high
|
|
118
|
-
await expect(tool.run({
|
|
119
|
-
q: 'test',
|
|
120
|
-
limit: 11
|
|
121
|
-
})).resolves.toMatchObject({
|
|
122
|
-
is_error: true
|
|
123
|
-
});
|
|
124
|
-
// Test limit too low
|
|
125
|
-
await expect(tool.run({
|
|
126
|
-
q: 'test',
|
|
127
|
-
limit: 0
|
|
128
|
-
})).resolves.toMatchObject({
|
|
129
|
-
is_error: true
|
|
130
|
-
});
|
|
131
|
-
});
|
|
132
|
-
it('validates coordinate constraints', async () => {
|
|
133
|
-
const tool = new PoiSearchTool();
|
|
134
|
-
// Test invalid longitude in proximity
|
|
135
|
-
await expect(tool.run({
|
|
136
|
-
q: 'test',
|
|
137
|
-
proximity: [-181, 40]
|
|
138
|
-
})).resolves.toMatchObject({
|
|
139
|
-
is_error: true
|
|
140
|
-
});
|
|
141
|
-
// Test invalid latitude in bbox
|
|
142
|
-
await expect(tool.run({
|
|
143
|
-
q: 'test',
|
|
144
|
-
bbox: [-74, -91, -73, 40]
|
|
145
|
-
})).resolves.toMatchObject({
|
|
146
|
-
is_error: true
|
|
147
|
-
});
|
|
148
|
-
});
|
|
149
|
-
it('encodes special characters in query', async () => {
|
|
150
|
-
const mockFetch = setupFetch();
|
|
151
|
-
await new PoiSearchTool().run({
|
|
152
|
-
q: 'coffee & tea shop'
|
|
153
|
-
});
|
|
154
|
-
const calledUrl = mockFetch.mock.calls[0][0];
|
|
155
|
-
expect(calledUrl).toContain('q=coffee+%26+tea+shop');
|
|
156
|
-
});
|
|
157
|
-
it('validates navigation profile requires eta_type', async () => {
|
|
158
|
-
const mockFetch = setupFetch();
|
|
159
|
-
// navigation_profile should work when eta_type is set
|
|
160
|
-
await new PoiSearchTool().run({
|
|
161
|
-
q: 'test',
|
|
162
|
-
eta_type: 'navigation',
|
|
163
|
-
navigation_profile: 'driving'
|
|
164
|
-
});
|
|
165
|
-
const calledUrl = mockFetch.mock.calls[0][0];
|
|
166
|
-
expect(calledUrl).toContain('eta_type=navigation');
|
|
167
|
-
expect(calledUrl).toContain('navigation_profile=driving');
|
|
168
|
-
});
|
|
169
|
-
it('supports proximity=ip for IP-based location', async () => {
|
|
170
|
-
const mockFetch = setupFetch({
|
|
171
|
-
type: 'FeatureCollection',
|
|
172
|
-
features: [
|
|
173
|
-
{
|
|
174
|
-
type: 'Feature',
|
|
175
|
-
properties: { name: 'Local Coffee Shop' }
|
|
176
|
-
}
|
|
177
|
-
]
|
|
178
|
-
});
|
|
179
|
-
await new PoiSearchTool().run({
|
|
180
|
-
q: 'Starbucks',
|
|
181
|
-
proximity: 'ip'
|
|
182
|
-
});
|
|
183
|
-
const calledUrl = mockFetch.mock.calls[0][0];
|
|
184
|
-
expect(calledUrl).toContain('proximity=ip');
|
|
185
|
-
});
|
|
186
|
-
it('formats GeoJSON response to text with basic information', async () => {
|
|
187
|
-
const mockResponse = {
|
|
188
|
-
type: 'FeatureCollection',
|
|
189
|
-
features: [
|
|
190
|
-
{
|
|
191
|
-
type: 'Feature',
|
|
192
|
-
properties: {
|
|
193
|
-
name: 'Starbucks Coffee',
|
|
194
|
-
full_address: '123 Main St, New York, NY 10001',
|
|
195
|
-
feature_type: 'poi',
|
|
196
|
-
poi_category: ['coffee', 'restaurant']
|
|
197
|
-
},
|
|
198
|
-
geometry: {
|
|
199
|
-
type: 'Point',
|
|
200
|
-
coordinates: [-74.006, 40.7128]
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
]
|
|
204
|
-
};
|
|
205
|
-
const mockFetch = setupFetch({
|
|
206
|
-
json: async () => mockResponse
|
|
207
|
-
});
|
|
208
|
-
const result = await new PoiSearchTool().run({
|
|
209
|
-
q: 'Starbucks'
|
|
210
|
-
});
|
|
211
|
-
expect(result.is_error).toBe(false);
|
|
212
|
-
expect(result.content[0].type).toBe('text');
|
|
213
|
-
const textContent = result.content[0].text;
|
|
214
|
-
expect(textContent).toContain('1. Starbucks Coffee');
|
|
215
|
-
expect(textContent).toContain('Address: 123 Main St, New York, NY 10001');
|
|
216
|
-
expect(textContent).toContain('Coordinates: 40.7128, -74.006');
|
|
217
|
-
expect(textContent).toContain('Type: poi');
|
|
218
|
-
expect(textContent).toContain('Category: coffee, restaurant');
|
|
219
|
-
});
|
|
220
|
-
it('formats GeoJSON response with name_preferred', async () => {
|
|
221
|
-
const mockResponse = {
|
|
222
|
-
type: 'FeatureCollection',
|
|
223
|
-
features: [
|
|
224
|
-
{
|
|
225
|
-
type: 'Feature',
|
|
226
|
-
properties: {
|
|
227
|
-
name: 'Central Park',
|
|
228
|
-
name_preferred: 'The Central Park',
|
|
229
|
-
place_formatted: 'Central Park, New York, NY'
|
|
230
|
-
},
|
|
231
|
-
geometry: {
|
|
232
|
-
type: 'Point',
|
|
233
|
-
coordinates: [-73.965, 40.782]
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
]
|
|
237
|
-
};
|
|
238
|
-
const mockFetch = setupFetch({
|
|
239
|
-
json: async () => mockResponse
|
|
240
|
-
});
|
|
241
|
-
const result = await new PoiSearchTool().run({
|
|
242
|
-
q: 'Central Park'
|
|
243
|
-
});
|
|
244
|
-
expect(result.is_error).toBe(false);
|
|
245
|
-
const textContent = result.content[0].text;
|
|
246
|
-
expect(textContent).toContain('1. Central Park (The Central Park)');
|
|
247
|
-
expect(textContent).toContain('Address: Central Park, New York, NY');
|
|
248
|
-
expect(textContent).toContain('Coordinates: 40.782, -73.965');
|
|
249
|
-
});
|
|
250
|
-
it('handles multiple results in formatted text', async () => {
|
|
251
|
-
const mockResponse = {
|
|
252
|
-
type: 'FeatureCollection',
|
|
253
|
-
features: [
|
|
254
|
-
{
|
|
255
|
-
type: 'Feature',
|
|
256
|
-
properties: {
|
|
257
|
-
name: 'Starbucks #1',
|
|
258
|
-
full_address: '123 Main St, New York, NY 10001',
|
|
259
|
-
feature_type: 'poi'
|
|
260
|
-
},
|
|
261
|
-
geometry: {
|
|
262
|
-
type: 'Point',
|
|
263
|
-
coordinates: [-74.006, 40.7128]
|
|
264
|
-
}
|
|
265
|
-
},
|
|
266
|
-
{
|
|
267
|
-
type: 'Feature',
|
|
268
|
-
properties: {
|
|
269
|
-
name: 'Starbucks #2',
|
|
270
|
-
full_address: '456 Broadway, New York, NY 10013',
|
|
271
|
-
feature_type: 'poi'
|
|
272
|
-
},
|
|
273
|
-
geometry: {
|
|
274
|
-
type: 'Point',
|
|
275
|
-
coordinates: [-74.012, 40.72]
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
]
|
|
279
|
-
};
|
|
280
|
-
const mockFetch = setupFetch({
|
|
281
|
-
json: async () => mockResponse
|
|
282
|
-
});
|
|
283
|
-
const result = await new PoiSearchTool().run({
|
|
284
|
-
q: 'Starbucks',
|
|
285
|
-
limit: 2
|
|
286
|
-
});
|
|
287
|
-
expect(result.is_error).toBe(false);
|
|
288
|
-
const textContent = result.content[0].text;
|
|
289
|
-
expect(textContent).toContain('1. Starbucks #1');
|
|
290
|
-
expect(textContent).toContain('2. Starbucks #2');
|
|
291
|
-
expect(textContent).toContain('123 Main St, New York, NY 10001');
|
|
292
|
-
expect(textContent).toContain('456 Broadway, New York, NY 10013');
|
|
293
|
-
});
|
|
294
|
-
it('handles empty results gracefully', async () => {
|
|
295
|
-
const mockResponse = {
|
|
296
|
-
type: 'FeatureCollection',
|
|
297
|
-
features: []
|
|
298
|
-
};
|
|
299
|
-
const mockFetch = setupFetch({
|
|
300
|
-
json: async () => mockResponse
|
|
301
|
-
});
|
|
302
|
-
const result = await new PoiSearchTool().run({
|
|
303
|
-
q: 'NonexistentPlace'
|
|
304
|
-
});
|
|
305
|
-
expect(result.is_error).toBe(false);
|
|
306
|
-
expect(result.content[0].type).toBe('text');
|
|
307
|
-
expect(result.content[0].text).toBe('No results found.');
|
|
308
|
-
});
|
|
309
|
-
it('handles results with minimal properties', async () => {
|
|
310
|
-
const mockResponse = {
|
|
311
|
-
type: 'FeatureCollection',
|
|
312
|
-
features: [
|
|
313
|
-
{
|
|
314
|
-
type: 'Feature',
|
|
315
|
-
properties: {
|
|
316
|
-
name: 'Some Location'
|
|
317
|
-
},
|
|
318
|
-
geometry: {
|
|
319
|
-
type: 'Point',
|
|
320
|
-
coordinates: [-74.006, 40.7128]
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
]
|
|
324
|
-
};
|
|
325
|
-
const mockFetch = setupFetch({
|
|
326
|
-
json: async () => mockResponse
|
|
327
|
-
});
|
|
328
|
-
const result = await new PoiSearchTool().run({
|
|
329
|
-
q: 'location'
|
|
330
|
-
});
|
|
331
|
-
expect(result.is_error).toBe(false);
|
|
332
|
-
const textContent = result.content[0].text;
|
|
333
|
-
expect(textContent).toContain('1. Some Location');
|
|
334
|
-
expect(textContent).toContain('Coordinates: 40.7128, -74.006');
|
|
335
|
-
expect(textContent).not.toContain('Address:');
|
|
336
|
-
});
|
|
337
|
-
});
|
|
338
|
-
//# sourceMappingURL=PoiSearchTool.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"PoiSearchTool.test.js","sourceRoot":"","sources":["../../../src/tools/poi-search-tool/PoiSearchTool.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { MapboxApiBasedTool } from '../MapboxApiBasedTool.js';
|
|
3
|
-
declare const ReverseGeocodeInputSchema: z.ZodObject<{
|
|
4
|
-
longitude: z.ZodNumber;
|
|
5
|
-
latitude: z.ZodNumber;
|
|
6
|
-
permanent: z.ZodDefault<z.ZodOptional<z.ZodBoolean>>;
|
|
7
|
-
country: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
|
|
8
|
-
language: z.ZodOptional<z.ZodString>;
|
|
9
|
-
limit: z.ZodDefault<z.ZodOptional<z.ZodNumber>>;
|
|
10
|
-
types: z.ZodOptional<z.ZodArray<z.ZodEnum<["country", "region", "postcode", "district", "place", "locality", "neighborhood", "address"]>, "many">>;
|
|
11
|
-
worldview: z.ZodDefault<z.ZodOptional<z.ZodEnum<["us", "cn", "jp", "in"]>>>;
|
|
12
|
-
}, "strip", z.ZodTypeAny, {
|
|
13
|
-
limit: number;
|
|
14
|
-
permanent: boolean;
|
|
15
|
-
worldview: "us" | "cn" | "jp" | "in";
|
|
16
|
-
longitude: number;
|
|
17
|
-
latitude: number;
|
|
18
|
-
country?: string[] | undefined;
|
|
19
|
-
language?: string | undefined;
|
|
20
|
-
types?: ("country" | "region" | "postcode" | "district" | "place" | "locality" | "neighborhood" | "address")[] | undefined;
|
|
21
|
-
}, {
|
|
22
|
-
longitude: number;
|
|
23
|
-
latitude: number;
|
|
24
|
-
country?: string[] | undefined;
|
|
25
|
-
language?: string | undefined;
|
|
26
|
-
limit?: number | undefined;
|
|
27
|
-
permanent?: boolean | undefined;
|
|
28
|
-
types?: ("country" | "region" | "postcode" | "district" | "place" | "locality" | "neighborhood" | "address")[] | undefined;
|
|
29
|
-
worldview?: "us" | "cn" | "jp" | "in" | undefined;
|
|
30
|
-
}>;
|
|
31
|
-
export declare class ReverseGeocodeTool extends MapboxApiBasedTool<typeof ReverseGeocodeInputSchema> {
|
|
32
|
-
name: string;
|
|
33
|
-
description: string;
|
|
34
|
-
constructor();
|
|
35
|
-
private formatGeoJsonToText;
|
|
36
|
-
protected execute(input: z.infer<typeof ReverseGeocodeInputSchema>): Promise<{
|
|
37
|
-
type: 'text';
|
|
38
|
-
text: string;
|
|
39
|
-
}>;
|
|
40
|
-
}
|
|
41
|
-
export {};
|
|
42
|
-
//# sourceMappingURL=ReverseGeocodeTool.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReverseGeocodeTool.d.ts","sourceRoot":"","sources":["../../../src/tools/reverse-geocode-tool/ReverseGeocodeTool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAE9D,QAAA,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuD7B,CAAC;AAEH,qBAAa,kBAAmB,SAAQ,kBAAkB,CACxD,OAAO,yBAAyB,CACjC;IACC,IAAI,SAAwB;IAC5B,WAAW,SAC+Y;;IAM1Z,OAAO,CAAC,mBAAmB;cA+CX,OAAO,CACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,GAC/C,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;CA0D3C"}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
import { MapboxApiBasedTool } from '../MapboxApiBasedTool.js';
|
|
3
|
-
const ReverseGeocodeInputSchema = z.object({
|
|
4
|
-
longitude: z
|
|
5
|
-
.number()
|
|
6
|
-
.min(-180)
|
|
7
|
-
.max(180)
|
|
8
|
-
.describe('Longitude coordinate to reverse geocode'),
|
|
9
|
-
latitude: z
|
|
10
|
-
.number()
|
|
11
|
-
.min(-90)
|
|
12
|
-
.max(90)
|
|
13
|
-
.describe('Latitude coordinate to reverse geocode'),
|
|
14
|
-
permanent: z
|
|
15
|
-
.boolean()
|
|
16
|
-
.optional()
|
|
17
|
-
.default(false)
|
|
18
|
-
.describe('Whether results can be stored permanently'),
|
|
19
|
-
country: z
|
|
20
|
-
.array(z.string().length(2))
|
|
21
|
-
.optional()
|
|
22
|
-
.describe('Array of ISO 3166 alpha 2 country codes to limit results'),
|
|
23
|
-
language: z
|
|
24
|
-
.string()
|
|
25
|
-
.optional()
|
|
26
|
-
.describe('IETF language tag for the response (e.g., "en", "es", "fr", "de", "ja")'),
|
|
27
|
-
limit: z
|
|
28
|
-
.number()
|
|
29
|
-
.min(1)
|
|
30
|
-
.max(5)
|
|
31
|
-
.optional()
|
|
32
|
-
.default(1)
|
|
33
|
-
.describe('Maximum number of results (1-5). Use 1 for best results. If you need more than 1 result, you must specify exactly one type in the types parameter.'),
|
|
34
|
-
types: z
|
|
35
|
-
.array(z.enum([
|
|
36
|
-
'country',
|
|
37
|
-
'region',
|
|
38
|
-
'postcode',
|
|
39
|
-
'district',
|
|
40
|
-
'place',
|
|
41
|
-
'locality',
|
|
42
|
-
'neighborhood',
|
|
43
|
-
'address'
|
|
44
|
-
]))
|
|
45
|
-
.optional()
|
|
46
|
-
.describe('Array of feature types to filter results'),
|
|
47
|
-
worldview: z
|
|
48
|
-
.enum(['us', 'cn', 'jp', 'in'])
|
|
49
|
-
.optional()
|
|
50
|
-
.default('us')
|
|
51
|
-
.describe('Returns features from a specific regional perspective')
|
|
52
|
-
});
|
|
53
|
-
export class ReverseGeocodeTool extends MapboxApiBasedTool {
|
|
54
|
-
name = 'ReverseGeocodeTool';
|
|
55
|
-
description = 'Find addresses, cities, towns, neighborhoods, postcodes, districts, regions, and countries around a specified geographic coordinate pair. Converts geographic coordinates (longitude, latitude) into human-readable addresses or place names. Use limit=1 for best results. This tool cannot reverse geocode businesses, landmarks, historic sites, and other points of interest that are not of the types mentioned.';
|
|
56
|
-
constructor() {
|
|
57
|
-
super({ inputSchema: ReverseGeocodeInputSchema });
|
|
58
|
-
}
|
|
59
|
-
formatGeoJsonToText(geoJsonResponse) {
|
|
60
|
-
if (!geoJsonResponse ||
|
|
61
|
-
!geoJsonResponse.features ||
|
|
62
|
-
geoJsonResponse.features.length === 0) {
|
|
63
|
-
return 'No results found.';
|
|
64
|
-
}
|
|
65
|
-
const results = geoJsonResponse.features.map((feature, index) => {
|
|
66
|
-
const props = feature.properties || {};
|
|
67
|
-
const geom = feature.geometry || {};
|
|
68
|
-
let result = `${index + 1}. `;
|
|
69
|
-
// Place name
|
|
70
|
-
result += `${props.name}`;
|
|
71
|
-
if (props.name_preferred) {
|
|
72
|
-
result += ` (${props.name_preferred})`;
|
|
73
|
-
}
|
|
74
|
-
// Full address
|
|
75
|
-
if (props.full_address) {
|
|
76
|
-
result += `\n Address: ${props.full_address}`;
|
|
77
|
-
}
|
|
78
|
-
else if (props.place_formatted) {
|
|
79
|
-
result += `\n Address: ${props.place_formatted}`;
|
|
80
|
-
}
|
|
81
|
-
// Geographic coordinates
|
|
82
|
-
if (geom.coordinates && Array.isArray(geom.coordinates)) {
|
|
83
|
-
const [lng, lat] = geom.coordinates;
|
|
84
|
-
result += `\n Coordinates: ${lat}, ${lng}`;
|
|
85
|
-
}
|
|
86
|
-
// Feature type
|
|
87
|
-
if (props.feature_type) {
|
|
88
|
-
result += `\n Type: ${props.feature_type}`;
|
|
89
|
-
}
|
|
90
|
-
return result;
|
|
91
|
-
});
|
|
92
|
-
return results.join('\n\n');
|
|
93
|
-
}
|
|
94
|
-
async execute(input) {
|
|
95
|
-
// When limit > 1, must specify exactly one type
|
|
96
|
-
if (input.limit &&
|
|
97
|
-
input.limit > 1 &&
|
|
98
|
-
(!input.types || input.types.length !== 1)) {
|
|
99
|
-
throw new Error('When limit > 1 for reverse geocoding, you must specify exactly one type in the types parameter (e.g., types: ["address"]). Consider using limit: 1 instead for best results.');
|
|
100
|
-
}
|
|
101
|
-
const url = new URL(`${MapboxApiBasedTool.MAPBOX_API_ENDPOINT}search/geocode/v6/reverse`);
|
|
102
|
-
// Required parameters
|
|
103
|
-
url.searchParams.append('longitude', input.longitude.toString());
|
|
104
|
-
url.searchParams.append('latitude', input.latitude.toString());
|
|
105
|
-
url.searchParams.append('access_token', MapboxApiBasedTool.MAPBOX_ACCESS_TOKEN);
|
|
106
|
-
// Optional parameters
|
|
107
|
-
url.searchParams.append('permanent', input.permanent.toString());
|
|
108
|
-
url.searchParams.append('limit', input.limit.toString());
|
|
109
|
-
url.searchParams.append('worldview', input.worldview);
|
|
110
|
-
if (input.country && input.country.length > 0) {
|
|
111
|
-
url.searchParams.append('country', input.country.join(','));
|
|
112
|
-
}
|
|
113
|
-
if (input.language) {
|
|
114
|
-
url.searchParams.append('language', input.language);
|
|
115
|
-
}
|
|
116
|
-
if (input.types && input.types.length > 0) {
|
|
117
|
-
url.searchParams.append('types', input.types.join(','));
|
|
118
|
-
}
|
|
119
|
-
const response = await fetch(url.toString());
|
|
120
|
-
if (!response.ok) {
|
|
121
|
-
throw new Error(`Failed to reverse geocode: ${response.status} ${response.statusText}`);
|
|
122
|
-
}
|
|
123
|
-
const data = (await response.json());
|
|
124
|
-
// Check if the response has features
|
|
125
|
-
if (!data || !data.features || data.features.length === 0) {
|
|
126
|
-
return { type: 'text', text: 'No results found.' };
|
|
127
|
-
}
|
|
128
|
-
return { type: 'text', text: this.formatGeoJsonToText(data) };
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
//# sourceMappingURL=ReverseGeocodeTool.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReverseGeocodeTool.js","sourceRoot":"","sources":["../../../src/tools/reverse-geocode-tool/ReverseGeocodeTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ReverseGeocodeTool.test.d.ts","sourceRoot":"","sources":["../../../src/tools/reverse-geocode-tool/ReverseGeocodeTool.test.ts"],"names":[],"mappings":""}
|