Skip to main content

GLEIF MCP Server

CI PyPI version Python 3.10+ License: Apache-2.0 Code style: black

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']}")
# 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.

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Make your changes and add tests
  4. Ensure all tests pass and code is formatted
  5. Submit a pull request

License

This project is licensed under the Apache License 2.0 - see the LICENSE file for details.

Acknowledgments

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)

Source distribution for gleif-mcp-server 0.1.2
File Size Uploaded
gleif_mcp_server-0.1.2.tar.gz 26.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gleif-mcp-server 0.1.2
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page