ens-mcp

ens-mcp

3.3

If you are the rightful owner of ens-mcp and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

An MCP server that resolves, analyzes, and contextualizes ENS domain activity to empower Web3 agents with human-readable identity insights.

ENS MCP Server

An MCP server that resolves, analyzes, and contextualizes ENS domain activity to empower Web3 agents with human-readable identity insights.

Features

  • Resolve ENS Names: Map ENS domains (e.g., vitalik.eth) to Ethereum addresses.
  • Detailed Domain Information: Fetch comprehensive domain data, including address, owner, registrant, expiry, registration, wrapped domain, and resolver details.
  • Domain Event History: Retrieve events like transfers, resolver changes, and name wrapping, with relevant addresses and timestamps.

Requirements

  • Python 3.10 or higher
  • uv (recommended for dependency management)
  • A valid API key for The Graph.

Installation

  1. Clone the Repository:

    git clone https://github.com/kukapay/ens-mcp.git
    cd ens-mcp
    
  2. Install Dependencies:

    uv sync
    
  3. Installing to Claude Desktop:

    Install the server as a Claude Desktop application:

    uv run mcp install main.py --name "ens-mcp"
    

    Configuration file as a reference:

    {
       "mcpServers": {
           "ens-mcp": {
               "command": "uv",
               "args": [ "--directory", "/path/to/ens-mcp", "run", "main.py" ],
               "env": { "THEGRAPH_API_KEY": "the_graph_api_key"}               
           }
       }
    }
    

    Replace /path/to/ens-mcp with your actual installation path, and the_graph_api_key with your API key from The Graph.

Usage

Tools

The server provides three MCP tools:

  1. resolve_ens_name(domain: str) -> str

    Resolves an ENS domain to its Ethereum address.

    • Input: ENS domain (e.g., vitalik.eth)
    • Output: Ethereum address (e.g., 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045) or "None"

    Example:

    resolve_ens_name("vitalik.eth") -> "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
    
  2. get_domain_details(domain: str) -> str

    Fetches detailed information about an ENS domain, including its address.

    • Input: ENS domain
    • Output: Formatted string with domain details (address, owner, registrant, expiry, etc.)

    Example Output:

    ENS Domain: vitalik.eth
    Address: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
    Label Name: vitalik
    Label Hash: 0x...
    Subdomain Count: 5
    Owner: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
    Registrant: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
    Wrapped Owner: None
    Expiry Date: 2025-10-31 00:00:00
    TTL: 0 seconds
    Is Migrated: true
    Created At: 2017-05-04 12:00:00
    Registration: Registration Date: 2017-05-04 12:00:00
    Registration Expiry: 2025-10-31 00:00:00
    Registration Cost: 1000000000000000 Wei
    Registrant: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
    Wrapped Domain: Not Wrapped
    Resolver: Resolver Address: 0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41
    Content Hash: None
    Text Records: email, url
    
  3. get_domain_events(domain: str) -> str

    Retrieves events associated with an ENS domain.

    • Input: ENS domain
    • Output: Formatted string listing events (e.g., transfers, resolver changes)

    Example Output:

    Event: Transfer
    Block Number: 1234567
    Transaction ID: 0x...
    New Owner: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
    
    Event: NewResolver
    Block Number: 1234568
    Transaction ID: 0x...
    Resolver Address: 0x4976fb03C32e5B8cfe2b6cCB31c09Ba78EBaBa41
    Resolver Addr: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045
    

License

This project is licensed under the MIT License. See the file for details.