ENS MCP Server
by thenamespace
README.md
# ENS MCP Server
[](https://cursor.com/en/install-mcp?name=ens&config=eyJuYW1lIjoiZW5zIiwidHlwZSI6Imh0dHAiLCJ1cmwiOiJodHRwczovL2Vucy1tY3AubmFtZXNwYWNlLm5pbmphL21jcCJ9)
[](https://vscode.dev/redirect/mcp/install?name=ens-mcp&config=%7B%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fens-mcp.namespace.ninja%2Fmcp%22%7D)
[](https://www.npmjs.com/package/ens-mcp)
Give your AI assistant native access to the ENS (Ethereum Name Service). Look up ENS names, profile information, check name availability, get pricing, explore subnames, and query onchain records — all through natural language.
## Installation
Connect to ENS MCP Server:
```
https://ens-mcp.namespace.ninja/mcp
```
<details>
<summary><b>Cursor</b></summary>
Add to `~/.cursor/mcp.json`:
```json
{
"mcpServers": {
"ens": {
"url": "https://ens-mcp.namespace.ninja/mcp"
}
}
}
```
</details>
<details>
<summary><b>VS Code</b></summary>
Add to `.vscode/mcp.json`:
```json
{
"servers": {
"ens": {
"type": "http",
"url": "https://ens-mcp.namespace.ninja/mcp"
}
}
}
```
</details>
<details>
<summary><b>Claude Code</b></summary>
```bash
claude mcp add --transport http ens https://ens-mcp.namespace.ninja/mcp
```
</details>
<details>
<summary><b>Claude Desktop</b></summary>
Add to your config file:
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"ens": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://ens-mcp.namespace.ninja/mcp"]
}
}
}
```
</details>
<details>
<summary><b>Codex</b></summary>
```bash
codex mcp add ens --url https://ens-mcp.namespace.ninja/mcp
```
</details>
<details>
<summary><b>OpenCode</b></summary>
Add to your `opencode.json`:
```json
{
"mcp": {
"ens": {
"type": "remote",
"url": "https://ens-mcp.namespace.ninja/mcp",
"enabled": true
}
}
}
```
</details>
<details>
<summary><b>Antigravity</b></summary>
Open the MCP Store panel (from the "..." dropdown in the side panel), then add a custom server with:
```
https://ens-mcp.namespace.ninja/mcp
```
</details>
<details>
<summary><b>Windsurf</b></summary>
Add to `~/.codeium/windsurf/mcp_config.json`:
```json
{
"mcpServers": {
"ens": {
"serverUrl": "https://ens-mcp.namespace.ninja/mcp"
}
}
}
```
</details>
<details>
<summary><b>Zed</b></summary>
Add to your Zed settings:
```json
{
"context_servers": {
"ens": {
"url": "https://ens-mcp.namespace.ninja/mcp"
}
}
}
```
</details>
<details>
<summary><b>Gemini CLI</b></summary>
Add to `~/.gemini/settings.json`:
```json
{
"mcpServers": {
"ens": {
"httpUrl": "https://ens-mcp.namespace.ninja/mcp"
}
}
}
```
</details>
<details>
<summary><b>Warp</b></summary>
Go to **Settings** > **MCP Servers** > **Add MCP Server** and add:
```json
{
"ens": {
"url": "https://ens-mcp.namespace.ninja/mcp"
}
}
```
</details>
<details>
<summary><b>Kiro</b></summary>
Add to `~/.kiro/settings/mcp.json`:
```json
{
"mcpServers": {
"ens": {
"url": "https://ens-mcp.namespace.ninja/mcp"
}
}
}
```
</details>
<details>
<summary><b>Roo Code</b></summary>
Add to your Roo Code MCP config:
```json
{
"mcpServers": {
"ens": {
"type": "streamable-http",
"url": "https://ens-mcp.namespace.ninja/mcp"
}
}
}
```
</details>
<details>
<summary><b>Other Clients</b></summary>
For clients that support remote MCP:
```json
{
"mcpServers": {
"ens": {
"url": "https://ens-mcp.namespace.ninja/mcp"
}
}
}
```
For clients that need mcp-remote:
```json
{
"mcpServers": {
"ens": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://ens-mcp.namespace.ninja/mcp"]
}
}
}
```
</details>
<details>
<summary><b>Self-Hosting</b></summary>
You can also self-host the ENS MCP Server using the npm package.
**Stdio Transport:**
```bash
npx -y ens-mcp
```
**HTTP Transport:**
```bash
npx -y ens-mcp --http --port 8080
```
The server will be available at `http://localhost:8080/mcp`.
**Environment Variables:**
| Variable | Description | Default |
|----------|-------------|---------|
| `RPC_URL` | Ethereum mainnet RPC URL | Viem Provided Public RPC |
| `SUBGRAPH_URL` | ENS subgraph URL | ENSNode Public Subgraph |
Example with custom RPC and Subgraph:
```bash
RPC_URL=https://your-rpc-provider.com SUBGRAPH_URL=https://your-subgraph-provider.com npx -y ens-mcp
```
</details>
## 💬 Example Natural Language Queries
Once ENS MCP is installed, you can ask things like:
```markdown
1️⃣ Basic Lookup
> Who owns vitalik.eth?
2️⃣ Resolver & Expiry
> What is the resolver and expiry date of vitalik.eth?
3️⃣ Records & Addresses
> Give me the ETH address and Twitter handle for vitalik.eth.
4️⃣ Reverse Lookup
> What ENS names are owned by 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?
5️⃣ Subnames
> List all subdomains under base.eth.
6️⃣ Portfolio Analysis
> Show me all ENS names owned by this address and tell me which ones are expiring soon.
7️⃣ Conditional Acquisition Strategy
> I want to get example.eth. How much does it cost for 2 years? And if it’s not available, give me the owner details and socials so I can contact them.
8️⃣ Names for Address
> What are the names owned by 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045?
9️⃣ Subnames for Name
> What are the subnames under vitalik.eth?
1️⃣0️⃣ Name History
> when was the last time vitalik.eth changed its content hash?
```
## Available Tools
| Tool | Description |
| ---- | ----------- |
| `is_name_available` | Check whether an ENS name is currently available for registration |
| `get_name_price` | Get the registration price for a name at a given duration (in seconds) |
| `get_profile_details` | Fetch full ENS profile: owner, resolver, expiry, text records, address records, and contenthash |
| `get_names_for_address` | List all ENS names held by a given address |
| `get_subnames_for_name` | Retrieve all subdomains registered under a parent ENS name |
| `get_name_history` | Retrieve the event history of any ENS name |
| `get_subgraph_records` | Query all record keys associated with a name |
## Contributing
Contributions are welcome. Feel free to open a PR.
---
Built with ❤️ by [Namespace](https://namespace.ninja/) Ninjas 🥷
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues