# sanctions-screening-mcp-server MCP server

Screen names against OFAC, EU, UK, UN sanctions lists; resolve entities via GLEIF. Screening aid.

## Links
- Registry page: https://www.getdrio.com/mcp/io-github-cyanheads-sanctions-screening-mcp-server
- Repository: https://github.com/cyanheads/sanctions-screening-mcp-server

## Install
- Command: `npx -y @cyanheads/sanctions-screening-mcp-server`
- Endpoint: https://sanctions-screening.caseyjhand.com/mcp
- Auth: Not captured

## Setup notes
- Package: Npm @cyanheads/sanctions-screening-mcp-server v0.1.7
- Environment variable: MCP_LOG_LEVEL (default info)
- Environment variable: SANCTIONS_MIRROR_PATH (default ./data/sanctions.db)
- Environment variable: SANCTIONS_FUZZY_MIN_SCORE (default 0.85)
- Environment variable: SANCTIONS_FUZZY_MAX_RESULTS (default 50)
- Package: Npm @cyanheads/sanctions-screening-mcp-server v0.1.7
- Environment variable: MCP_HTTP_HOST (default 127.0.0.1)
- Environment variable: MCP_HTTP_PORT (default 3010)
- Environment variable: MCP_HTTP_ENDPOINT_PATH (default /mcp)
- Environment variable: MCP_AUTH_MODE (default none)
- Environment variable: MCP_LOG_LEVEL (default info)
- Environment variable: SANCTIONS_MIRROR_PATH (default ./data/sanctions.db)
- Environment variable: SANCTIONS_REFRESH_CRON (default 0 4 * * *)
- Environment variable: SANCTIONS_FUZZY_MIN_SCORE (default 0.85)
- Environment variable: SANCTIONS_FUZZY_MAX_RESULTS (default 50)
- Remote endpoint: https://sanctions-screening.caseyjhand.com/mcp

## Tools
- sanctions_screen_name (sanctions-screening-mcp-server: screen name) - Screen a name (person, company, vessel, aircraft) against all loaded sanctions watchlists at once — OFAC SDN + Consolidated, EU, UK, and UN — alias- and fuzzy-aware. Returns scored potential matches with the source list, sanctioning program, designation date, and the matched alias. Strict mode (default) matches exact-normalized then all-tokens-present; fuzzy mode (or auto when strict is empty) adds Jaro-Winkler and phonetic matching and labels hits approximate with a raw 0–1 similarity score. This is a screening AID for a human/compliance review, NOT a compliance determination: a hit means "review this candidate against the official source," and an empty result never means "cleared." Endpoint: https://sanctions-screening.caseyjhand.com/mcp
- sanctions_get_designation (sanctions-screening-mcp-server: get designation) - Fetch the full record for one sanctions designation by source list + entry ID — the drill-in after sanctions_screen_name surfaces a candidate. Returns all published aliases, identifiers (passport/national-ID/tax), addresses, dates and places of birth, nationalities, sanctioning program, legal basis, and designation date. The record reflects exactly what the source published; missing fields mean the source omitted them. This is a screening aid — the designation record supports a compliance review, it is not itself a determination. Endpoint: https://sanctions-screening.caseyjhand.com/mcp
- sanctions_list_sources (sanctions-screening-mcp-server: list sources) - List the sanctions watchlists (OFAC SDN + Consolidated, EU, UK, UN) and GLEIF datasets currently loaded in the local mirror, each with its record count, source URL, license, and the mirror's readiness and as-of timestamp. Use this for provenance and freshness on any result — results are only as current as the last mirror refresh, and a not-ready mirror means screening cannot run yet. Attribution: UK data is under the Open Government Licence v3.0; all sources are cited here. Endpoint: https://sanctions-screening.caseyjhand.com/mcp
- sanctions_resolve_entity (sanctions-screening-mcp-server: resolve entity) - Resolve a company or organization name (with an optional ISO 3166-1 alpha-2 jurisdiction) to candidate GLEIF Legal Entity Identifiers (LEIs), ranked. This turns a free-text counterparty name into a stable global identifier that sanctions_get_entity and sanctions_trace_ownership key off. Strict mode (default) matches exact-normalized then all-tokens-present; fuzzy mode (or auto when strict is empty) adds Jaro-Winkler scoring labeled approximate with a raw 0–1 score. Returns potential matches to confirm against the GLEIF record — name resolution is a candidate ranking, not an authoritative identification. Endpoint: https://sanctions-screening.caseyjhand.com/mcp
- sanctions_get_entity (sanctions-screening-mcp-server: get entity) - Fetch the full GLEIF Level 1 record for one LEI: legal name, other/trading names, legal and headquarters addresses, registration status, jurisdiction, registration authority and ID, and last-update date — plus any sanctions hits screened against the same legal name across all loaded watchlists. The screening cross-reference is a screening AID: a hit is a candidate to verify against the official source, and no hit is not a clearance. LEI must be a 20-character GLEIF identifier (18 alphanumerics + 2 check digits). Endpoint: https://sanctions-screening.caseyjhand.com/mcp
- sanctions_trace_ownership (sanctions-screening-mcp-server: trace ownership) - Trace the GLEIF Level 2 corporate-ownership graph for an LEI: direct and ultimate parents and/or children, traversed breadth-first to a bounded depth, with relationship type for each edge. Set screenNodes to also screen every entity in the graph against all loaded watchlists — beneficial-ownership screening that resolves "is anyone in this ownership chain sanctioned." Each per-node screen is a screening AID: hits are candidates to verify, and an empty result for a node is not a clearance of that node. Requires a valid 20-character LEI (use sanctions_resolve_entity to obtain one). Endpoint: https://sanctions-screening.caseyjhand.com/mcp

## Resources
- sanctions://sources - sanctions-screening-mcp-server: sources List the sanctions watchlists and GLEIF datasets currently loaded in the local mirror, each with its record count and the mirror's as-of timestamp — a read-only URI mirror of sanctions_list_sources. MIME type: application/json

## Prompts
- sanctions_vet_counterparty - sanctions-screening-mcp-server: vet counterparty Structure a full counterparty due-diligence pass: resolve the name to an LEI, pull the ownership tree, screen the named entity and every beneficial owner against all sanctions lists, and summarize hits with provenance and the decision-support caveat. Arguments: name, jurisdiction

## Metadata
- Owner: io.github.cyanheads
- Version: 0.1.7
- Runtime: Npm
- Transports: STDIO, HTTP
- License: Not captured
- Language: Not captured
- Stars: Not captured
- Updated: Jul 5, 2026
- Source: https://registry.modelcontextprotocol.io
