Forensic Company MCP
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Forensic Company MCPscreen Empresa A for sanctions and compare its address with Empresa B"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Forensic Company MCP
MCP server in Python for corporate OSINT / compliance research.
Tools
server_infonormalize_company_namecompare_company_namescompare_addressessearch_gleif_companyscreen_opensanctions_companyget_opensanctions_entitybuild_relationship_graph
The server deliberately labels matches and shared attributes as investigative leads rather than proof of wrongdoing.
Related MCP server: mcp-open-sanctions
1. Create the environment
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .envPython 3.10+ is supported by MCP SDK v2.
2. Optional OpenSanctions key
Edit .env:
OPENSANCTIONS_API_KEY=YOUR_KEYDo not put this key in Expo or React Native source code.
3. Run locally
uvicorn server:app --host 127.0.0.1 --port 8000 --reloadMCP endpoint:
http://127.0.0.1:8000/mcpHealth check:
http://127.0.0.1:8000/health4. Test it
In another terminal:
source .venv/bin/activate
python client_test.pyOr use MCP Inspector:
npx -y @modelcontextprotocol/inspectorThen connect the inspector to:
http://127.0.0.1:8000/mcp5. Render
Build command:
pip install -r requirements.txtStart command:
uvicorn server:app --host 0.0.0.0 --port $PORTSet these environment variables in Render:
OPENSANCTIONS_API_KEY=...
MCP_ALLOWED_HOSTS=YOUR-SERVICE.onrender.com,YOUR-SERVICE.onrender.com:*
CORS_ORIGINS=https://YOUR-FRONTEND.exampleFor a native-only React Native client, CORS_ORIGINS is less important because CORS is a browser rule. Keep the MCP provider API keys server-side either way.
Example graph input
Call build_relationship_graph with companies_json containing:
[
{
"name": "Empresa A",
"address": "Av. Ejemplo 100, Monterrey, NL",
"officers": ["Persona Uno"]
},
{
"name": "Empresa B",
"address": "Avenida Ejemplo 100, Monterrey, NL",
"officers": ["Persona Uno", "Persona Dos"]
}
]The tool returns nodes and relationship edges such as shared_address and shared_officer.
Important
A sanctions hit, shared address, shared officer, or high name similarity is not by itself evidence of money laundering, a shell company, fraud, or any crime. Preserve the source, entity IDs, dates, and original records so findings can be independently verified.
This server cannot be deployed
Maintenance
Related MCP Connectors
Screen names against OFAC, EU, UK, UN sanctions lists; resolve entities via GLEIF. Screening aid.
Verify a company on GLEIF LEI and SEC EDGAR, screen sanctions. No key; quota-free data.
Background check any company in the world: registration, executives, courts and finances.
Screen names against OFAC, EU and UN lists; check CVEs, domain DNS and WHOIS, and public tenders
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceProvides real-time company verification and corporate intelligence by accessing global registries like UK Companies House, Singapore ACRA, and OpenCorporates. It enables AI agents to perform KYC tasks, retrieve company profiles, and conduct automated risk assessments for due diligence workflows.75 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables querying global sanctions and politically exposed persons (PEP) data via OpenSanctions, with free access and no authentication required.2 npmMIT
- AlicenseNot gradedqualityAmaintenanceScreen names against consolidated OFAC, EU, UK, and UN sanctions lists and resolve legal entities via GLEIF, with offline fuzzy matching.388 npm1Apache 2.0
- AlicenseAqualityAmaintenanceEnables AI agents to investigate corporate ownership, trace ultimate beneficial owners, screen sanctions, detect offshore exposure, and access fully cited dossiers from 130M+ entities across 31 global registries.2196 npm1MIT