GLEIF MCP Server
Verify any company's legal identity in one question. Look up LEI codes, validate counterparties, and trace corporate ownership structures using the official GLEIF database. Covers 2.8M+ entities across 200+ jurisdictions.
29 tools for LEI lookup, entity search, BIC/SWIFT cross-referencing, corporate ownership, and batch validation. Works with Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, and other MCP-compatible tools.
Use Cases
- KYC & Onboarding: Verify counterparty identities before signing contracts
- Compliance Checks: Validate LEIs for MiFID II, EMIR, or DORA reporting
- Due Diligence: Research corporate ownership chains and ultimate parents
- Financial Analysis: Cross-reference securities (ISIN) and banks (BIC/SWIFT) with their legal entities
- Data Enrichment: Batch-process company lists to add LEI data
What is LEI?
The Legal Entity Identifier (LEI) is a 20-character alphanumeric code that uniquely identifies legal entities participating in financial transactions worldwide. It's mandated by 200+ regulations including MiFID II, EMIR, Dodd-Frank, and DORA.
LEI Format (ISO 17442):
- Characters 1-4: LOU (Local Operating Unit) prefix
- Characters 5-18: Entity-specific identifier
- Characters 19-20: Check digits (mod 97 validation)
Example: HWUPKR0MPOU8FGXBT394 (Apple Inc.)
Features
Core Capabilities
- LEI Lookup: Get full entity details by LEI code
- Batch Lookup: Look up multiple LEIs in a single request (up to 100)
- Entity Search: Find companies by name with fuzzy matching and pagination
- LEI Validation: Verify format, check digits (ISO 17442), and registration status
Financial Identifiers
- BIC/SWIFT Lookup: Find bank LEIs from BIC codes
- ISIN Lookup: Find security issuer LEIs from ISIN codes
- Country Browse: List entities by jurisdiction
Relationships & Compliance
- Corporate Ownership: Parent companies, subsidiaries, ultimate parents
- Fund Relationships: Fund managers, umbrella funds, sub-funds
- Reporting Exceptions: Level 2 data exceptions with reasons
- LEI Issuers: List and details of all Local Operating Units (LOUs)
Performance & Reliability
- Fast Responses: Results are cached locally, so repeat queries return instantly
- No API Key Needed: Works out of the box with GLEIF's public API
- Handles Errors Gracefully: Automatic retries on timeouts or temporary failures
- Stays Within Limits: Built-in rate limiting prevents hitting GLEIF's quotas
Installation
Download Binary
Pre-built binaries for all platforms on the releases page:
| Platform | Binary |
|---|---|
| macOS (Apple Silicon) | gleif-mcp-server-darwin-arm64 |
| macOS (Intel) | gleif-mcp-server-darwin-amd64 |
| Linux (x64) | gleif-mcp-server-linux-amd64 |
| Linux (ARM64) | gleif-mcp-server-linux-arm64 |
| Windows (x64) | gleif-mcp-server-windows-amd64.exe |
# macOS/Linux - download and make executable
chmod +x gleif-mcp-server-darwin-arm64Build from Source
Requires Go 1.25+:
git clone https://github.com/olgasafonova/gleif-mcp-server.git
cd gleif-mcp-server
go build -o gleif-mcp-server .Install via Go
go install github.com/olgasafonova/gleif-mcp-server@latestAI Agent Setup
Quickest start: Using Claude Desktop? Just add the config below and restart. Using an IDE like Cursor? Same idea, different config file. Pick your tool below.
Claude Desktop
Step 1: Download the binary
Go to the releases page and download the binary for your system:
- Mac (Apple Silicon M1/M2/M3/M4):
gleif-mcp-server-darwin-arm64 - Mac (Intel):
gleif-mcp-server-darwin-amd64 - Windows:
gleif-mcp-server-windows-amd64.exe
Step 2: Mac only - allow the file to run
macOS blocks downloaded files. Open Terminal and run:
chmod +x ~/Downloads/gleif-mcp-server-darwin-arm64
xattr -d com.apple.quarantine ~/Downloads/gleif-mcp-server-darwin-arm64Step 3: Open the config file
Mac: Open Finder, press Cmd + Shift + G, paste this path:
~/Library/Application Support/Claude/Windows: Press Win + R, paste this path:
%APPDATA%\ClaudeOpen claude_desktop_config.json. If it doesn't exist, create it.
Step 4: Add the config
Mac (replace YOUR_USERNAME with your actual username):
{
"mcpServers": {
"gleif": {
"command": "/Users/YOUR_USERNAME/Downloads/gleif-mcp-server-darwin-arm64"
}
}
}Windows (replace YOUR_USERNAME - note the double backslashes):
{
"mcpServers": {
"gleif": {
"command": "C:\\Users\\YOUR_USERNAME\\Downloads\\gleif-mcp-server-windows-amd64.exe"
}
}
}To find your username: Mac - open Terminal and type whoami. Windows - look at C:\Users\.
Step 5: Restart Claude Desktop
Quit completely (Cmd + Q on Mac) and reopen.
Step 6: Test it
Type in Claude Desktop:
Look up Apple's LEI using GLEIFYou should see Claude call the GLEIF tool and return company data.
Claude Code (CLI)
# Add the server
claude mcp add gleif /path/to/gleif-mcp-server
# Or with scope for all projects
claude mcp add --scope user gleif /path/to/gleif-mcp-serverCursor IDE
Add to .cursor/mcp.json in your project or ~/.cursor/mcp.json for global config:
{
"mcpServers": {
"gleif": {
"command": "/path/to/gleif-mcp-server"
}
}
}VS Code with Continue Extension
Add to .continue/config.json:
{
"experimental": {
"modelContextProtocolServers": [
{
"name": "gleif",
"transport": {
"type": "stdio",
"command": "/path/to/gleif-mcp-server"
}
}
]
}
}Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"gleif": {
"command": "/path/to/gleif-mcp-server"
}
}
}Cline (VS Code Extension)
Add via Cline's MCP settings or in .vscode/cline_mcp_settings.json:
{
"mcpServers": {
"gleif": {
"command": "/path/to/gleif-mcp-server",
"args": []
}
}
}Antigravity
Add to ~/.antigravity/mcp.json:
{
"mcpServers": {
"gleif": {
"command": "/path/to/gleif-mcp-server"
}
}
}Not working? Tell us what made it hard — even one sentence helps.
Tools Reference
Core Lookup Tools
| Tool | Description | Parameters |
|---|---|---|
lei_lookup | Get full details for a specific LEI | lei (required): 20-char LEI code |
validate_lei | Check format, check digits, and status | lei (required): LEI to validate |
batch_lei_lookup | Look up multiple LEIs at once | leis (required): Comma-separated LEIs (max 100) |
Search Tools
| Tool | Description | Parameters |
|---|---|---|
search_entity | Search by company name | query (required), limit (default 20), page (default 1), fuzzy (default true) |
search_by_bic | Find LEI from BIC/SWIFT | bic (required): 8 or 11 char code |
search_by_isin | Find issuer LEI from ISIN | isin (required): 12-char ISIN |
search_by_country | List entities by country | country (required): ISO 2-letter code, limit (default 20) |
autocomplete | Entity name suggestions | prefix (required): min 2 chars, limit (default 10) |
Relationship Tools
| Tool | Description | Parameters |
|---|---|---|
get_relationships | Get corporate/fund relationships | lei (required), type: direct-parent, ultimate-parent, children, fund-manager, umbrella-fund, sub-funds |
LEI Issuer Tools
| Tool | Description | Parameters |
|---|---|---|
get_lei_issuer | Get details about an LOU | issuer_id (required): LOU identifier |
list_lei_issuers | List all LOUs worldwide | None |
Compliance Tools
| Tool | Description | Parameters |
|---|---|---|
get_reporting_exceptions | Get Level 2 reporting exceptions | lei (required): LEI to check |
Usage Examples
Basic LEI Lookup
Prompt: "Look up LEI HWUPKR0MPOU8FGXBT394"
Returns: Full entity details for Apple Inc. including legal name, headquarters address, jurisdiction (US-CA), entity status, registration status, managing LOU, and next renewal date.
Company Search with Pagination
Prompt: "Search for Deutsche Bank, show page 2"
Tool call:
{
"name": "search_entity",
"arguments": {
"query": "Deutsche Bank",
"limit": 20,
"page": 2,
"fuzzy": true
}
}Returns: List of matching entities with pagination info (total results, current page, has more).
Batch LEI Lookup
Prompt: "Look up these LEIs: HWUPKR0MPOU8FGXBT394, 5493006MHB84DD0ZWV18, 549300GKFG0RYRRQ1414"
Returns: Summary of all three entities with LEI, legal name, country, city, and status.
Find Bank by BIC
Prompt: "Find the LEI for BIC DEUTDEFF"
Returns: Deutsche Bank AG's LEI record with full details.
Find Security Issuer
Prompt: "Who issued ISIN US0378331005?"
Returns: Apple Inc. (the issuer of AAPL stock).
Corporate Structure
Prompt: "Who is the ultimate parent of this subsidiary?"
Tool call:
{
"name": "get_relationships",
"arguments": {
"lei": "549300GKFG0RYRRQ1414",
"type": "ultimate-parent"
}
}LEI Validation
Prompt: "Is LEI HWUPKR0MPOU8FGXBT394 valid?"
Returns:
{
"lei": "HWUPKR0MPOU8FGXBT394",
"valid": true,
"status": "ISSUED",
"entityStatus": "ACTIVE",
"nextRenewal": "2025-08-15"
}Check Reporting Exceptions
Prompt: "Why is parent info missing for this company?"
Tool call:
{
"name": "get_reporting_exceptions",
"arguments": {
"lei": "5493006MHB84DD0ZWV18"
}
}Returns: Exception categories and reasons (e.g., NON_CONSOLIDATING, NATURAL_PERSONS).
List All LEI Issuers
Prompt: "Show me all LEI issuers"
Returns: Complete list of LOUs (Local Operating Units) with name, country, status, and number of sponsored LEIs.
Response Format
All tools return JSON with relevant fields. Example entity record:
{
"lei": "HWUPKR0MPOU8FGXBT394",
"legalName": "Apple Inc.",
"country": "US",
"city": "Cupertino",
"status": "ACTIVE",
"regStatus": "ISSUED"
}Search results include pagination:
{
"count": 20,
"results": [...],
"pagination": {
"currentPage": 1,
"perPage": 20,
"total": 156,
"lastPage": 8
},
"hasMore": true
}Error Handling
The server returns structured errors:
| Error Code | Description | Retryable |
|---|---|---|
not_found | LEI/entity not in GLEIF database | No |
invalid_format | Invalid LEI/BIC/ISIN format | No |
rate_limited | GLEIF API rate limit exceeded | Yes |
timeout | Request timed out | Yes |
server_error | GLEIF API error | Depends on status |
network_error | Connection failed | Yes |
Example error response:
{
"code": "not_found",
"message": "LEI not found in GLEIF database",
"statusCode": 404,
"retryable": false
}Architecture
gleif-mcp-server/
├── main.go
…