GLEIF MCP Server
A Model Context Protocol (MCP) server that provides seamless access to the GLEIF (Global Legal Entity Identifier Foundation) REST API. This server enables AI assistants and other MCP-compatible applications to query legal entity information, including LEI records, issuer details, and hierarchical relationships between organizations.
Features
🔍 LEI Record Management
- Search & Retrieve: Find LEI records by various criteria (legal name, LEI code, jurisdiction)
- Fuzzy Matching: Approximate search with auto-completion for entity discovery
- Live Data: Real-time access to the most current GLEIF database
🏢 Entity Information
- Legal Entity Details: Complete legal name, jurisdiction, status, and registration info
- Address Data: Headquarters and legal addresses with full geographical details
- Entity Relationships: Parent-subsidiary relationships and ownership structures
🌍 Reference Data
- Country Codes: ISO 3166 country code lookups and validation
- Legal Forms: Entity Legal Form (ELF) code reference data
- Issuer Network: Information about LEI issuing organizations (LOUs)
🔧 Developer Tools
- Field Metadata: Comprehensive API field documentation and filtering capabilities
- Pagination: Efficient handling of large result sets
- Type Safety: Full Python type hints and Pydantic validation
Quick Start
Installation
pip install gleif-mcp-server
Start the MCP Server
# Start server on default port (8000)
gleif-mcp-server
# Or specify custom port
gleif-mcp-server --port 8080
Use as Python Client
from gleif_mcp import client
# Get specific LEI record
lei_data = client.get_lei_record("529900T8BM49AURSDO55")
print(f"Entity: {lei_data['entity']['legalName']}")
# Search for entities
results = client.search_lei_records("entity.legalName", "Citibank")
for record in results['data']:
print(f"Found: {record['entity']['legalName']}")
# Fuzzy search with suggestions
suggestions = client.fuzzy_completions("entity.legalName", "Apple Inc")
MCP Integration
This server is compatible with any MCP client, including:
- Claude Desktop: Add to your
claude_desktop_config.json - Cline/Windsurf: Configure as an MCP server
- Custom Applications: Use the standard MCP protocol
Configuration Example
{
"mcpServers": {
"gleif": {
"command": "gleif-mcp-server",
"args": []
}
}
}
API Coverage
The server provides access to all major GLEIF API endpoints:
| Category | Endpoint | Description |
|---|---|---|
| LEI Records | /lei-records |
Search and retrieve LEI records |
| LEI Records | /lei-records/{lei} |
Get specific LEI record by code |
| Search | /lei-records/fuzzy-completions |
Fuzzy matching for entity names |
| Search | /lei-records/auto-completions |
Auto-complete suggestions |
| Issuers | /lei-issuers |
List accredited LEI issuers |
| Issuers | /lei-issuers/{id} |
Get specific issuer details |
| Reference | /countries |
ISO 3166 country codes |
| Reference | /entity-legal-forms |
ELF codes and descriptions |
| Metadata | /fields |
API field catalog and filtering options |
Development
Setup Development Environment
# Clone the repository
git clone https://github.com/GenAICPA/gleif-mcp-server.git
cd gleif-mcp-server
# Install in development mode
pip install -e ".[dev]"
# Install pre-commit hooks
pre-commit install
Run Tests
# Run all tests
pytest
# Run tests with coverage
pytest --cov=gleif_mcp
# Skip live API tests (for CI)
pytest -m "not live"
# Run only integration tests
pytest -m integration
Code Quality
# Format code
black gleif_mcp tests
# Lint code
ruff check gleif_mcp tests
# Type checking
mypy gleif_mcp
Examples
Find Entity by Name
# Search for entities containing "Microsoft"
results = client.search_lei_records("entity.legalName", "*Microsoft*")
for entity in results['data'][:5]: # Show first 5 results
print(f"LEI: {entity['lei']}")
print(f"Name: {entity['entity']['legalName']}")
print(f"Country: {entity['entity']['jurisdiction']}")
print("---")
Get Entity Hierarchy
# Get parent company information
lei = "529900T8BM49AURSDO55" # Example LEI
record = client.get_lei_record(lei)
if record['entity'].get('parent'):
parent_lei = record['entity']['parent']['lei']
parent_data = client.get_lei_record(parent_lei)
print(f"Parent: {parent_data['entity']['legalName']}")
Country and Legal Form Lookup
# Get country information
country = client.get_country("US")
print(f"Country: {country['name']} ({country['code']})")
# List available legal forms
legal_forms = client.list_entity_legal_forms()
for form in legal_forms['data'][:10]:
print(f"{form['code']}: {form['name']}")
Contributing
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Make your changes and add tests
- Ensure all tests pass and code is formatted
- Submit a pull request
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Acknowledgments
- GLEIF for providing the comprehensive LEI database and API
- Model Context Protocol for the standard protocol specification
- FastAPI for the excellent web framework
Support
Note: This is an unofficial implementation. GLEIF does not endorse or maintain this server.
Metadata
Release files for gleif-mcp-server 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gleif_mcp_server-0.1.2.tar.gz | 26.1 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gleif_mcp_server-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.0 kB
Release files / gleif_mcp_server-0.1.2.tar.gz
| Download URL | gleif_mcp_server-0.1.2.tar.gz |
|---|---|
| Size | 26.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f471393f4d0e439d50d36462712056bfd6f12087c06f7053241e9347243abddb
|
|
BLAKE2b-256 checksum How to use checksums |
eedec9f43a08b7f19d95e68742d1c035885d2abe005af7215f17fae891400ec5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
Release files / gleif_mcp_server-0.1.2-py3-none-any.whl
| Download URL | gleif_mcp_server-0.1.2-py3-none-any.whl |
|---|---|
| Size | 14.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
a3f4de10cd97ef21d2720008dbe22823c7ae8223588cc565dc289f0ae253d995
|
|
BLAKE2b-256 checksum How to use checksums |
2f52e887813c6b25c14051e540b3621a1b60ebc4f5f1f37a3a9b0139100e0881
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|