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
Clone the Repository:
git clone https://github.com/kukapay/ens-mcp.git cd ens-mcp
Install Dependencies:
uv sync
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, andthe_graph_api_key
with your API key from The Graph.
Usage
Tools
The server provides three MCP tools:
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"
- Input: ENS domain (e.g.,
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
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 LICENSE file for details.