Model Context Protocol (MCP) server for the GLEIF (Global Legal Entity Identifier Foundation) REST API
Project description
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.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gleif_mcp_server-0.1.0.tar.gz.
File metadata
- Download URL: gleif_mcp_server-0.1.0.tar.gz
- Upload date:
- Size: 25.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
08fea794ad6976d8a2a040c38f708d022e2017e00a984b7fec437bcc4d997c83
|
|
| MD5 |
ad9e9255af13c2f80e625072e93ad0e1
|
|
| BLAKE2b-256 |
ff6c723a6377847eae31dd6eef208dea23a9b44bc23087fffdaf82100d590e5a
|
File details
Details for the file gleif_mcp_server-0.1.0-py3-none-any.whl.
File metadata
- Download URL: gleif_mcp_server-0.1.0-py3-none-any.whl
- Upload date:
- Size: 14.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
62de0a387f7a059b50221ac27ec1d17c7cfb5325ebd78a77d27ce6d62a426300
|
|
| MD5 |
fad189695d99d04ffad1ff08b5da3300
|
|
| BLAKE2b-256 |
6e6a2172806586227a2d994a9a3e652453b326ca309af2b7eaa4c1b67d5c391e
|