What is MCP Ethereum Address Info Server?
MCP Ethereum Address Info Server is a server that provides information about Ethereum addresses across multiple chains using the Model Context Protocol (MCP). It includes a Server-Sent Events (SSE) endpoint for real-time updates.
How to use MCP Ethereum Address Info Server?
To use the server, clone the repository, install dependencies, set up environment variables, and run the server. You can then interact with various endpoints to get address information and subscribe to real-time updates.
Key features of MCP Ethereum Address Info Server?
- Provides real-time updates for Ethereum addresses.
- Multiple endpoints for health checks, address info, and SSE.
- Easy setup and usage with curl commands.
Use cases of MCP Ethereum Address Info Server?
- Monitoring Ethereum address activity in real-time.
- Integrating with applications that require up-to-date Ethereum address information.
- Testing and developing tools that interact with Ethereum addresses.
FAQ from MCP Ethereum Address Info Server?
- Can I get real-time updates for multiple addresses?
Yes! You can subscribe to updates for multiple addresses using the SSE endpoint.
- Is there a health check endpoint?
Yes! You can check the server's health using the
/health
endpoint.
- How do I subscribe to address updates?
After connecting to the SSE endpoint, you will receive a client ID which you can use to subscribe to specific address updates.
MCP Ethereum Address Info Server
This server provides information about Ethereum addresses across multiple chains using the Model Context Protocol (MCP). It includes a Server-Sent Events (SSE) endpoint for real-time updates.
Table of Contents
- Setup
- Running the Server
- Available Endpoints
- Using the SSE Endpoint
- Testing with Curl
- Example Workflow
Setup
-
Clone the repository:
git clone <repository-url> cd mcp-0x-address
-
Install dependencies:
npm install
-
Create a
.env
file with the following variables:MCP_PORT=3002
Running the Server
Start the HTTP MCP server:
npm run start:http
This will start the server on port 3002 (or the port specified in your .env
file).
Available Endpoints
The server provides the following endpoints:
GET /health
- Server health checkPOST /mcp
- MCP endpoint for tool callsGET /sse
- Server-Sent Events endpoint for real-time updatesGET /sse/clients
- Get information about connected SSE clientsPOST /sse/subscribe/:clientId
- Subscribe to address updatesPOST /sse/unsubscribe/:clientId
- Unsubscribe from address updates
Using the SSE Endpoint
The SSE endpoint allows clients to receive real-time updates from the server. Here's how to use it:
- Connect to the SSE endpoint
- Get your client ID from the connection response
- Subscribe to specific addresses
- Receive real-time updates for those addresses
Testing with Curl
1. Connect to the SSE Endpoint
curl -N http://localhost:3002/sse
This will establish a connection to the SSE endpoint and start receiving events. The connection will remain open until you manually terminate it.
2. Check Connected Clients
curl http://localhost:3002/sse/clients
3. Subscribe to Address Updates
After connecting to the SSE endpoint, you'll receive a client ID. Use that ID to subscribe to address updates:
curl -X POST \
http://localhost:3002/sse/subscribe/YOUR_CLIENT_ID \
-H "Content-Type: application/json" \
-d '{"addresses": ["0x742d35Cc6634C0532925a3b844Bc454e4438f44e", "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"]}'
Replace YOUR_CLIENT_ID
with the client ID you received when connecting to the SSE endpoint.
4. Unsubscribe from Address Updates
curl -X POST \
http://localhost:3002/sse/unsubscribe/YOUR_CLIENT_ID \
-H "Content-Type: application/json" \
-d '{"addresses": ["0x742d35Cc6634C0532925a3b844Bc454e4438f44e"]}'
5. Trigger an Address Update
To trigger an address update (which will be sent to subscribed clients), call the get-address-info
tool:
curl -X POST \
http://localhost:3002/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get-address-info",
"arguments": {
"address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e"
}
}
}'
6. Check Server Health
curl http://localhost:3002/health
7. Test the Ping Tool
curl -X POST \
http://localhost:3002/mcp \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "ping",
"arguments": {}
}
}'
Example Workflow
Here's a complete workflow for testing the SSE functionality:
-
Start the server:
npm run start:http
-
In a new terminal, connect to the SSE endpoint:
curl -N http://localhost:3002/sse
You'll receive a response like:
data: {"type":"connection","clientId":"client-1234567890abcdef","message":"Connected to MCP SSE endpoint","timestamp":"2023-01-01T00:00:00.000Z"}
-
Note the
clientId
from the response. -
In another terminal, subscribe to address updates:
curl -X POST \ http://localhost:3002/sse/subscribe/client-1234567890abcdef \ -H "Content-Type: application/json" \ -d '{"addresses": ["0x742d35Cc6634C0532925a3b844Bc454e4438f44e"]}'
-
Trigger an address update:
curl -X POST \ http://localhost:3002/mcp \ -H "Content-Type: application/json" \ -d '{ "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "get-address-info", "arguments": { "address": "0x742d35Cc6634C0532925a3b844Bc454e4438f44e" } } }'
-
In the terminal where you're connected to the SSE endpoint, you'll see updates for the address.
Automated Testing Script
For a more automated test, you can use this bash script:
#!/bin/bash
# Start SSE connection in the background and capture the output
curl -N http://localhost:3002/sse > sse_output.txt &
SSE_PID=$!
# Wait a moment for the connection to establish
sleep 2
# Extract the client ID from the output
CLIENT_ID=$(grep -o '"clientId":"[^"]*"' sse_output.txt | head -1 | cut -d'"' -f4)
if [ -z "$CLIENT_ID" ]; then
echo "Failed to get client ID"
kill $SSE_PID
exit 1
fi
echo "Connected with client ID: $CLIENT_ID"
# Subscribe to an address
curl -X POST \
http://localhost:3002/sse/subscribe/$CLIENT_ID \
-H "Content-Type: application/json" \
-d '{"addresses": ["0x742d35Cc6634C0532925a3b844Bc454e4438f44e"]}'
echo "Subscribed to address. Waiting for updates..."
echo "Press Ctrl+C to stop"
# Keep the script running to see updates
tail -f sse_output.txt
# Clean up on exit
trap "kill $SSE_PID; rm sse_output.txt" EXIT
Save this as test_sse.sh
, make it executable with chmod +x test_sse.sh
, and run it with ./test_sse.sh
.