{
  "markdown": "# wafergraph-mcp\n\nA remote MCP server exposing [wafergraph.com](https://wafergraph.com)'s semiconductor & AI\nsupply-chain dataset — 565 companies across 12 segments, the supplier/customer graph, and a\n74-deal M&A corpus — as 30 read-only tools any MCP-speaking AI agent can call directly.\n\nNo auth, no cost, read-only. Streamable HTTP transport at `/mcp`. Human landing page at `/`.\n\nLive: **https://mcp.wafergraph.com**\n\n## Tools\n\n| Tool | Purpose |\n|---|---|\n| `search_companies({query?, segment?, country?})` | Name/description search with segment & country filters. Compact list, capped at 25, with a total match count. |\n| `get_company({id})` | Full allowed profile for one company (by id or name) plus its supplier/customer edges. |\n| `get_segments()` | The 12-segment taxonomy (+ subsegments, market_position enum) with live company counts. |\n| `get_supply_chain({id, direction, depth})` | Walk the supplier/customer graph from a focal company up to 2 tiers up (`\"up\"`), down (`\"down\"`), or `\"both\"`. |\n| `get_deals({query?, segment?})` | Search the M&A deal corpus. Compact list, capped at 30, with a total match count. |\n| `compare_companies({ids})` | Side-by-side comparison of 2-6 companies on aligned fields, plus their shared and unique supply-chain counterparties. |\n| `get_country_exposure({segment?})` | Geographic concentration: which countries host a segment's companies, ranked by count, with disclosed market-cap coverage. |\n| `find_chokepoints({segment?, limit?})` | Rank chokepoints by downstream dependency weighted by market position. Transparent heuristic, not a proprietary risk model. |\n| `analyze_portfolio_exposure({holdings})` | Map tickers or ids to segment/country exposure and flag suppliers that several holdings share. Not investment advice. |\n\n### Screening & discovery\n\n| Tool | Purpose |\n|---|---|\n| `filter_companies({...})` | Structured multi-criteria screen (segment, subsegment, country, position, public, market-cap band, has_ticker) with sorting and pagination. |\n| `list_subsegments({segment?})` | Every subsegment with its live company count and parent segment. |\n| `get_subsegment({segment, subsegment})` | All companies in one subsegment with position and country breakdowns. |\n| `find_similar_companies({id})` | Nearest structural neighbours by Jaccard similarity over segment tags and shared supply-chain counterparties. |\n| `rank_by_market_cap({segment?, country?, limit?})` | Largest companies by disclosed market cap, always with its coverage ratio. |\n| `resolve_ticker({inputs})` | Batch-resolve up to 25 tickers, names, or ids to canonical companies, with suggestions on a miss. |\n\n### Geography & structure\n\n| Tool | Purpose |\n|---|---|\n| `list_countries({segment?})` | Every country with company counts, segment mix, and public/private split. |\n| `get_country_profile({country})` | One country in depth, including how many supply relationships cross its border in each direction. |\n| `compare_countries({countries})` | 2-5 countries side by side, with uniquely-present and dominant segments. |\n| `get_segment_leaders({segment?})` | Who occupies the monopoly and leader positions in a segment. |\n| `get_upstream_concentration({id})` | One company's supplier mix by country and segment with an HHI index and edge-coverage context. |\n\n### Graph analysis\n\n| Tool | Purpose |\n|---|---|\n| `find_paths_between({from, to, max_depth?})` | Documented supply paths between two companies, shortest first. |\n| `simulate_disruption({company_id? | country? | segment?})` | Blast radius if a company, country, or segment goes offline, ranking those left with no documented alternative. |\n| `find_single_source_dependencies({segment?, country?})` | Customer/subsegment pairs served by exactly one documented supplier. |\n| `rank_by_connectivity({metric?, limit?})` | Rank by documented degree. Measures documentation density, not real-world criticality. |\n| `find_common_suppliers({ids? | segment?})` | Suppliers shared across an arbitrary set of companies, with the share of the set each serves. |\n\n### Deals & dataset\n\n| Tool | Purpose |\n|---|---|\n| `get_deal({id})` | One M&A deal in full, with parties resolved to companies where possible. |\n| `find_deals_by_company({id})` | Every deal a company took part in, split by role, with the match method exposed. |\n| `get_ma_activity_summary()` | Deal counts and disclosed values by year, type, and status. |\n| `find_consolidation_hotspots()` | Which segments are consolidating, with unresolvable deals counted rather than dropped. |\n| `get_dataset_stats()` | What this dataset contains, how fresh it is, and where it is thin. Call it to learn what the data cannot answer. |\n\nEvery response includes:\n- `data` — the payload.\n- `attribution` — compiled-by/sources block (SEC, Wikidata, Wikipedia, GLEIF) plus a\n  `company_url` back to the full sourced profile on wafergraph.com.\n- `links` — `{ report, newsletter }` pointing back to wafergraph.com and its hand-scored\n  Vendor Exposure Review.\n\n### Field discipline\n\nCompany records include `key_products` as of 2026-07-19. That field in wafergraph's own dataset\nwas originally bulk-drafted with a known fabrication/mis-scope history and was withheld here\nuntil a verified deep-fill landed upstream; it now has (confirmed live) 564/565 companies filled,\nwith only `sk_enpulse` empty (defunct, absorbed into SKC 2025-12-23). Every field shipped here —\n`name`, `ticker`, `market_cap_usd_b`, `segments`, `one_liner`, `market_position`, `key_products`,\n`key_customers`/`key_suppliers` graph edges, deals — is established, trust-checked data. Fields\nare still whitelisted (not blacklisted) in `src/types.ts` (`toAllowedCompany`), so anything added\nupstream later stays excluded by default until deliberately added.\n\n### What this server records\n\nCounters only, never identities. No IPs, no query contents or tool arguments, no user\nidentifiers, no cookies, no PII. Specifically: how many times each tool was called per day, how\nmany distinct sessions opened per day, and which client *software* connected (the `clientInfo`\nname and version your MCP client already sends in the `initialize` handshake, e.g.\n`claude-code@2.1.0`).\n\nSessions are not users — one person reconnecting counts several times. Nothing recorded here can\nidentify who you are.\n\n## Install\n\n### Claude Code\n\n```\nclaude mcp add --transport http wafergraph https://mcp.wafergraph.com/mcp\n```\n\n### claude.ai (custom connector)\n\nSettings → Connectors → Add custom connector → paste:\n\n```\nhttps://mcp.wafergraph.com/mcp\n```\n\n### Generic MCP client (Streamable HTTP)\n\n```json\n{\n  \"mcpServers\": {\n    \"wafergraph\": {\n      \"url\": \"https://mcp.wafergraph.com/mcp\"\n    }\n  }\n}\n```\n\n## Architecture\n\nCloudflare Worker, TypeScript, built on the `agents` package's `McpAgent` (Durable-Object-backed\nStreamable HTTP MCP server — free on the Workers Free plan; SQLite storage backend). See\n`CLAUDE.md` for the file map and the data-source-mode decision (hybrid live-fetch + one\nvendored snapshot, discovered by E2E-testing the upstream endpoints rather than assumed).\n\n## Development\n\n```bash\nnpm install\nnpm run dev       # wrangler dev, local\nnpm run typecheck # tsc --noEmit\nnpm run deploy    # wrangler deploy\n```\n\n## Attribution & licensing\n\nSee `ATTRIBUTION.md` for the full source/license breakdown (SEC EDGAR public domain, Wikidata\nCC0, Wikipedia CC BY-SA 4.0 — attribution required, GLEIF). Short version: free to use, credit\nwafergraph.com, not financial advice.\n\nThis is an independent project built against wafergraph.com's public dataset; it is not an\nofficial wafergraph product.\n",
  "bytes": 7582,
  "sha": "f2eef853d55ad72030641f936724b8f241f0ec6aa8f5806bae199585d6842b0d",
  "repo_slug": "jasonpalmer1/wafergraph-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_wafergraph_wafergraph_mcp_1ebf7030/readme"
}