MCP (Model Context Protocol) server for the Data Fair ecosystem. Exposes Data Fair datasets to LLM agents via the MCP standard. Two usage modes:
- Standalone mode: run via Docker with stdio transport, connects remotely to a Data Fair instance. Requires
PORTAL_URL. SupportsDATA_FAIR_API_KEYfor authentication andIGNORE_RATE_LIMITINGto bypass rate limits. - Data Fair stack mode: deployed as a web service alongside Data Fair (available on
/mcp-serveron the same domain). Uses HTTP transport. Portal URL is inferred from reverse-proxy headers.
- Node.js v24, TypeScript (ESM, no build step — runs
.tsdirectly) @modelcontextprotocol/sdkfor the MCP server- Express 5 for HTTP transport
- Zod for schema validation
@data-fair/lib-*shared libraries (axios, express helpers, types builder)
index.ts— entrypoint, picks transport (stdio vs HTTP)src/config.ts— config loader (usesconfigpackage + generated types inconfig/type/)src/server.ts— HTTP server setupsrc/app.ts— Express appsrc/mcp-router-factory.ts— MCP-to-Express bridgesrc/mcp-servers/datasets/— dataset MCP server:index.ts— server creationtools.ts—search_datasets,describe_dataset,search_data,aggregate_dataprompts.ts— sample prompts (French)resources.ts— MCP resources for dataset listing/info
- Tools return both
structuredContent(typed output) andcontent(text fallback) per MCP spec - Origin is resolved from
portalUrlconfig orX-Forwarded-*headers - All tools are read-only (
readOnlyHint: true) - Datasets API is proxied through the portal URL at
/data-fair/api/v1
npm run dev-stdio— dev with stdio transportnpm run dev-http— dev with HTTP transportnpm run dev-inspector— MCP inspector UInpm run quality— lint + type-checknpm run lint-fix— auto-fix lint issues