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.
UBO, sanctions & ownership graph. 23 tools, 130.7M entities, 31 registries.
Official company and director data: search, profiles, filings, and name normalization.
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.95 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables querying global sanctions and politically exposed persons (PEP) data via OpenSanctions, with free access and no authentication required.6 npmMIT
- AlicenseNot gradedqualityBmaintenanceScreen names against consolidated OFAC, EU, UK, and UN sanctions lists and resolve legal entities via GLEIF, with offline fuzzy matching.52 npm1Apache 2.0
- AlicenseNot gradedqualityAmaintenanceEnables corporate disclosure research through official SEC EDGAR and GLEIF sources, providing tools for company resolution, filings, insiders, ownership, financials, and private raises via natural language.431 npmApache 2.0