MCP.Market

Shadowjoin MCP server

by harsh-chandak·io.github.harsh-chandak/shadowjoin·v0.3.2

Measure the matches your exact join is silently dropping, and get the rule that fixes each.

A92/100grade A
What users say
No reviews yet
Be the first
Safety scan
A92/100

not scanned yet

Adoption
Growing

0 stars705 downloads/wk

Reviews

Write one

Nobody has reviewed Shadowjoin yet.

If you have run it, two minutes of your experience saves the next person an afternoon.

Shadowjoin tools

No tool declarations could be read from the package source. They show once the server is installed.

Not scanned yet. New listings are scanned within a day or two of arriving.

How Shadowjoin compares

Against every graded MCP server, from our own scans and uptime checks. Updated after each scan run.

Safety score
92/100
higher than 95% of 48,255 servers
Downloads a week
705
more than 92% of 12,191 servers with a package

Release history: 2 versions in the registry since 2026-10-11, latest 2026-10-17, typically one every 5 days.

Install Shadowjoin in Claude Code, Cursor or VS Code

Runs npx -y shadowjoin on your machine. Read the scan report first; the gateway never runs local packages.

claude mcp add shadowjoin -- npx -y shadowjoin
Add to Cursor

What the publisher says

From the Shadowjoin repository's README, as published. We do not edit it. Read it on GitHub

shadowjoin

Measure the matches your exact join is silently dropping.

Your pipeline joins two sources on a name, an email, a SKU, a company. It matches what matches. Everything else just... isn't there. No error, no exception, no alert — the query returns, the dashboard renders, and a quarter of the rows that should have matched quietly don't.

shadowjoin runs a shadow matcher alongside your real join key and tells you how many matches you are losing, which normalization rule would recover each one, and — if you have any ground truth at all — proves the recoveries are real.

npx shadowjoin scan \
  --left  customers.csv   --left-key  company_name \
  --right crm_export.csv  --right-key account_name

Fourteen seconds, no sound. Every figure in it is verbatim CLI output from the committed example below — higher-resolution version.

The progress output above is real: shadowjoin shows what it is doing while it works. All of it is suppressed automatically when stdout is not a terminal, so piping to a file, to jq, or running in CI produces byte-identical output to before — and there is no postinstall script, because a tool you point at a production database has no business running code at install time.

What it found on public data

Joining the S&P 500 constituent list against NYSE + Nasdaq listings on company name. Both files carry ticker symbols, so every recovered match can be checked rather than believed:

left rows 503   right rows 6,709

  exact join matches                1   0.2%
  recovered by shadow join        428   85.09%
  still unexplained                74

  LOWER BOUND ON LOST MATCHES: 85.09% of left rows
  verified against ground truth: 419 correct, 1 wrong, 8 ambiguous  (precision 99.76%)

  rules worth adopting, in order (greedy by marginal recovery):
  1.  strip security/listing boilerplate (common stock, ADS, ...)   +68       68
  2.  strip corporate suffixes (inc, corp, ltd, plc, gmbh ...)     +319      387
  3.  strip punctuation                                             +33      420
  4.  sort tokens (order-insensitive match)                          +4      424
  5.  remove all whitespace                                          +1      425

The exact join found one match. There were four hundred and twenty-eight, and 419 of them are confirmed correct by ticker.

Reproduce it yourself — the data ships with the repo:

git clone https://github.com/harsh-chandak/shadowjoin && cd shadowjoin
npm install && npm run build
node dist/cli.js scan \
  --left  examples/sp500.csv    --left-key  Security --left-id Symbol --left-truth Symbol \
  --right examples/listings.json --right-key name    --right-id symbol --right-truth symbol

A join you would actually ship

The example above is deliberately unflattering — a short index name against a full security description. Here is the realistic case.

Unicode CLDR country names (what your UI displays) joined to UN official country names (what your reference data uses), on the country name, with ISO 3166 alpha-3 as ground truth. That is a join people write every week.

exact join matches              205 / 249   82.33%
  recovered by shadow join          5          2.01%   precision 100%
  still unexplained                39

  rules worth adopting:
  1.  & -> and                 +4
  2.  remove all whitespace    +1

Shortened. The full README is on GitHub.

Nothing above is checked by us. What we check is on the safety report.

Shadowjoin: common questions

Is Shadowjoin MCP server safe?
Yes, by our scan: it is graded A (92/100). Read the Shadowjoin safety report
How do I install Shadowjoin?
It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
Does Shadowjoin need an API key?
No secret keys are declared. It reads 1 setting from the environment.
Is Shadowjoin maintained?
The last commit was 24 days ago (2026-10-11). The latest release is v0.3.2.
How does Shadowjoin compare with other MCP servers?
safety score 92/100 (higher than 95% of 48,255 servers); downloads a week 705 (more than 92% of 12,191 servers with a package). Full comparison.