ens-mcp
About An MCP server that resolves, analyzes, and contextualizes ENS domain activity.
README Documentation
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.