gleif-mcp-server
MCP server for GLEIF LEI (Legal Entity Identifier) database access. Look up, validate, and search legal entities and their relationships in the global LEI system.
README
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-arm64
Build 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@latest
AI 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-arm64
Step 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%\Claude
Open 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 GLEIF
You 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-server
Cursor 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 # Entry point, MCP server setup
├── internal/gleif/
│ ├── client.go # GLEIF API client with caching & rate limiting
│ ├── client_test.go # Client and validation tests
│ ├── cache.go # LRU cache with TTL
│ ├── types.go # Data structures for API responses
│ └── errors.go # Structured error types
└── tools/
├── definitions.go # Tool metadata and parameter specs
├── handlers.go # MCP tool implementations
└── handlers_test.go # Handler tests with mock server
Technical Details
For developers who want the specifics:
| Setting | Value |
|---|---|
| Cache duration | 15 minutes |
| Cache capacity | 1000 entities, 500 searches |
| Rate limit | 50 req/min (GLEIF allows 60) |
| Retry strategy | 3 attempts with exponential backoff |
| Connection pool | 100 max idle, 10 per host |
API Reference
This server wraps the public GLEIF API:
- Base URL: https://api.gleif.org/api/v1
- Authentication: None required
- Rate Limit: 60 requests/minute
- Documentation: https://www.gleif.org/en/lei-data/gleif-api
Troubleshooting
Server won't start
- Check the binary has execute permissions:
chmod +x gleif-mcp-server - Verify the path in your MCP config is absolute, not relative
"Rate limit exceeded" errors
- The server automatically handles rate limiting with retries
- If persistent, reduce concurrent requests or wait a few minutes
"LEI not found" for valid LEI
- The GLEIF database updates daily; recently issued LEIs may not appear immediately
- Verify the LEI format (exactly 20 alphanumeric characters)
Slow responses
- First requests may be slower (cache warming)
- GLEIF API occasionally has latency spikes; retries handle this automatically
Claude Desktop doesn't show the server
- Restart Claude Desktop after editing config
- Check JSON syntax in config file
- Verify the binary path exists and is executable
Development
# Run tests
go test ./...
# Run tests with coverage
go test -coverprofile=coverage.out ./...
go tool cover -html=coverage.out
# Run tests with race detector
go test -race ./...
# Build
go build -o gleif-mcp-server .
Contributing
Contributions welcome. Please open an issue first to discuss proposed changes.
License
MIT License - see LICENSE for details.
More MCP Servers
Check out my other MCP servers:
| Server | Description | Stars |
|---|---|---|
| mediawiki-mcp-server | Connect AI to any MediaWiki wiki. Search, read, edit wiki content. | |
| miro-mcp-server | Control Miro whiteboards with AI. Boards, diagrams, mindmaps, and more. | |
| nordic-registry-mcp-server | Access Nordic business registries. Look up companies across Norway, Denmark, Finland, Sweden. | |
| productplan-mcp-server | Talk to your ProductPlan roadmaps. Query OKRs, ideas, launches. |
Acknowledgments
- GLEIF for the public LEI API
- Model Context Protocol for the MCP specification
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。