Foresight

Foresight

An MCP server that discovers suppliers, screens compliance and live hazards, calculates exposure, ranks alternatives, and drafts purchasing decisions for supply chain risk management.

Category
Visit Server

README

Foresight

Introduction

Our track is Industry & Manufacturing, supply chain risk and supplier sourcing sit at its center. Deloitte's 2026 Manufacturing Outlook found over 75% of manufacturers cite trade uncertainty as their top concern, yet most procurement teams still track risk manually across spreadsheets and gut feel. <br> Foresight closes that gap: an MCP-based sourcing advisor, the supply chain that finds out first. It discovers suppliers, screens compliance and live hazards, calculates exposure, ranks alternatives, and drafts a purchasing decision. Just supply the industry, goods, and requirements without any need for database.

What is real

  • Live hazards: USGS earthquakes, NASA EONET natural events, Open-Meteo severe weather, and US NWS alerts.
  • Compliance: SAM.gov public exclusions and OFAC SDN via OpenSanctions, bundled as a build-time index and matched locally.
  • Supplier discovery: optional Odoo Community ERP records, Tavily web results, and best-effort publicly indexed Open Supply Hub evidence.
  • Provenance: external findings carry their source URL and retrieval time.
  • Unknown data stays unknown. Foresight does not invent price, lead time, capacity, certifications, coordinates, or reliability.

MCP Surface

Tool Purpose
find_supplier Discover, normalize, screen, and rank supplier sites in one call, optionally relative to an incumbent
calculate_exposure Assess allocation value, hazard exposure, delay, delivery fit, compliance, verification items, and next steps for any supplied vendor
check_disruptions Run caller-provided sites through live hazard, exposure, ranking, and map processing
simulate_disruption Run the identical processing against a hypothetical event
draft_supplier_memo Build an internal supplier recommendation memo from live assessment, discovery, ranking, and an optional scenario

Resources: discovery://latest, sources://status, and watchtower://latest. Caller-context resources are disabled by default to prevent cross-client disclosure; trusted single-tenant deployments can set ENABLE_CONTEXT_RESOURCES=true. Feed and discovery caches remain bounded and temporary.

Prompts: morning_briefing and draft_mitigation_memo. The mitigation prompt calls draft_supplier_memo; the tool itself can also be called directly.

Widget: disruption-map, rendered by both live and simulated disruption tools.

supplier-memo is rendered by draft_supplier_memo. Widgets use universal MCP Apps metadata; deploy with NITROSTACK_APP_MODE=universal so Claude receives the MCP Apps bridge and ChatGPT/NitroStudio retain compatible metadata.

Quick Start

npm install
npm run compliance
npm run typecheck
npm run smoke
npm run dev

The hazard tools and compliance gate work without supplier-discovery credentials. Configure .env from .env.example to enable Tavily, structured page enrichment, geocoding, Serper fallback, or Odoo discovery.

Discovery Sources

Tavily

Set TAVILY_API_KEY. Tavily currently offers 1,000 recurring monthly API credits without requiring a credit card. Foresight uses basic search and bounded result counts.

Structured enrichment and geocoding

Set ENABLE_WEB_ENRICHMENT=true and WEB_ENRICHMENT_USER_AGENT to extract JSON-LD identity, public addresses, coordinates, and requested certification claims from up to eight candidate pages. Raw page text is never returned to the model. Set ENABLE_GEOCODING=true and GEOCODING_USER_AGENT to geocode extracted addresses through OpenStreetMap Nominatim at one request per second with a bounded in-memory cache.

Serper Places fallback

Set SERPER_API_KEY to query Google Places through Serper only when fewer than three candidates have usable coordinates. Places results provide addresses and coordinates for geographic risk assessment; capability remains an inferred claim until corroborated.

Odoo Community

Set ENABLE_ODOO_DISCOVERY=true, ODOO_ALLOWED_SUBJECTS, ODOO_URL, ODOO_DATABASE, ODOO_USERNAME, and ODOO_API_KEY for a self-hosted Odoo Community instance exposing JSON-RPC. Foresight reads standard vendor price-list and partner records only for authenticated MCP subjects on that allowlist. Odoo is disabled by default because ERP records may be private.

Open Supply Hub

Direct OS Hub production search endpoints currently require authentication. Foresight uses Tavily domain-restricted search to collect publicly indexed OS Hub evidence and never bypasses authentication or access controls. No result is fabricated when public evidence is unavailable.

Scoring

Compliance matches are hard-disqualified. Capability and required certifications are eligibility gates. Available evidence is scored as:

  • Geographic hazard risk: 40
  • Lead-time continuity: 30
  • Cost: 20
  • Reliability: 10

Missing components receive null. Every candidate reports score_earned, score_possible, and score_coverage_pct; partial evidence is not inflated to a complete 100-point score.

Each result also reports readiness: procurement_ready requires complete identity, compliance, commercial, reliability, certification, quantity-fit, and risk evidence; risk_assessed has capability evidence and usable hazard coordinates but may lack commercial facts; lead_needing_verification is not yet geographically assessable.

Unverified facts are presented as verification_pending with next_verification_steps. Foresight does not state that a supplier lacks a certificate when public evidence has simply not been located.

Architecture

src/modules/
  data/         supplier discovery and source adapters
  feeds/        live public hazard clients with timeout and visible degradation
  watchtower/   shared live/simulated site-to-hazard engine
  exposure/     stateless supplier allocation assessment
  ranking/      stateless alternate ranking and real-list compliance gate
  memo/         direct supplier memo orchestration, widget, and prompts

Live and simulated tools use the same disruption engine. The only difference is whether hazards come from public feeds or a synthetic event supplied to the simulator.

External Components

APIs and datasets: USGS Earthquake GeoJSON, NASA EONET v3, Open-Meteo Forecast API (CC-BY 4.0), US NWS Alerts API, Tavily Search, optional Serper Google Places, OpenStreetMap Nominatim, optional Odoo Community JSON-RPC, publicly indexed Open Supply Hub pages, SAM.gov Exclusions public extract, and OpenSanctions OFAC SDN (CC-BY-NC 4.0).

Map data: OpenStreetMap contributors and CARTO basemaps.

Libraries: Nitrostack SDK, Model Context Protocol Ext Apps, Cheerio, dotenv, i18n-iso-countries, Undici, Zod, TypeScript/tsx, Next.js/React, and MapLibre GL JS.

AI implementation assistance is declared in PROGRESS.md. Architectural decisions and reasons are recorded in decisions.md.

Contributors

KK Surendran <br> Khushal <br> Malavika <br> Praharsha <br>

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured