@@ -29,8 +29,8 @@ const getOrigin = (headers: IsomorphicHeaders | undefined): string => {
2929 return origin
3030 }
3131}
32- const buildAxiosOptions = ( headers : IsomorphicHeaders | undefined ) : AxiosRequestConfig => ( {
33- baseURL : getOrigin ( headers ) + '/data-fair/api/v1' ,
32+ const buildAxiosOptions = ( headers : IsomorphicHeaders | undefined , defineBaseURL ?: boolean ) : AxiosRequestConfig => ( {
33+ baseURL : defineBaseURL ? getOrigin ( headers ) + '/data-fair/api/v1' : undefined ,
3434 headers : {
3535 'User-Agent' : '@data-fair/mcp (Datasets)'
3636 }
@@ -76,7 +76,7 @@ const registerTools = (server: McpServer) => {
7676 // Fetch datasets matching the search criteria - optimized for discovery
7777 const fetchedData = ( await axios . get (
7878 `/catalog/datasets?q=${ params . query } &size=10&select=id,title,description` ,
79- buildAxiosOptions ( extra . requestInfo ?. headers )
79+ buildAxiosOptions ( extra . requestInfo ?. headers , true )
8080 ) ) . data
8181
8282 // Format the fetched data into a structured content object
@@ -163,7 +163,7 @@ const registerTools = (server: McpServer) => {
163163 // Fetch detailed dataset information
164164 const fetchedData = ( await axios . get (
165165 `/datasets/${ params . datasetId } ` ,
166- buildAxiosOptions ( extra . requestInfo ?. headers )
166+ buildAxiosOptions ( extra . requestInfo ?. headers , true )
167167 ) ) . data
168168
169169 // Format the fetched data
@@ -211,7 +211,7 @@ const registerTools = (server: McpServer) => {
211211 // Add sample lines if available
212212 const sampleLines = ( await axios . get (
213213 `/datasets/${ params . datasetId } /lines?size=3` ,
214- buildAxiosOptions ( extra . requestInfo ?. headers )
214+ buildAxiosOptions ( extra . requestInfo ?. headers , true )
215215 ) ) . data . results
216216 dataset . sampleLines = sampleLines
217217
@@ -297,10 +297,11 @@ const registerTools = (server: McpServer) => {
297297
298298 fetchParams . append ( 'size' , '10' )
299299
300- const fetchUrl = new URL ( `datasets/${ params . datasetId } /lines` )
300+ const baseUrl = getOrigin ( extra . requestInfo ?. headers )
301+ const fetchUrl = new URL ( `/data-fair/api/v1/datasets/${ params . datasetId } /lines` , baseUrl )
301302 fetchUrl . search = fetchParams . toString ( )
302303
303- const filteredViewUrlObj = new URL ( `${ getOrigin ( extra . requestInfo ?. headers ) } /data-fair/next-ui/embed/dataset/${ params . datasetId } /table` )
304+ const filteredViewUrlObj = new URL ( `/data-fair/next-ui/embed/dataset/${ params . datasetId } /table` , baseUrl )
304305 filteredViewUrlObj . search = viewParams . toString ( )
305306
306307 // Fetch detailed dataset information
@@ -393,7 +394,7 @@ const registerTools = (server: McpServer) => {
393394 throw new Error ( 'You can aggregate by at most 3 columns' )
394395 }
395396
396- const fetchUrl = new URL ( `datasets/${ params . datasetId } /values_agg` )
397+ const fetchUrl = new URL ( `/data-fair/api/v1/ datasets/${ params . datasetId } /values_agg` , getOrigin ( extra . requestInfo ?. headers ) )
397398
398399 // Build common search parameters for both fetch and source URLs
399400 const aggsParams = new URLSearchParams ( )
0 commit comments