Supports testing and interacting with all server endpoints through curl commands, including connecting to SSE streams, subscribing to address updates, and triggering address information requests.
Manages environment variables for the server configuration, including port settings through a .env file.
Provides information about Ethereum addresses across multiple chains, including real-time updates through Server-Sent Events (SSE). Allows querying address details with tools like 'get-address-info' and receiving live updates for subscribed addresses.
Supports repository cloning for installation and setup of the MCP server.
Handles dependency management and provides scripts for starting the server.
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
Related MCP server: MCP Ethers Wallet
Setup
Clone the repository:
git clone <repository-url> cd mcp-0x-addressInstall dependencies:
npm installCreate a
.envfile with the following variables:MCP_PORT=3002
Running the Server
Start the HTTP MCP server:
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
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
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:
Replace YOUR_CLIENT_ID with the client ID you received when connecting to the SSE endpoint.
4. Unsubscribe from Address Updates
5. Trigger an Address Update
To trigger an address update (which will be sent to subscribed clients), call the get-address-info tool:
6. Check Server Health
7. Test the Ping Tool
Example Workflow
Here's a complete workflow for testing the SSE functionality:
Start the server:
npm run start:httpIn a new terminal, connect to the SSE endpoint:
curl -N http://localhost:3002/sseYou'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
clientIdfrom 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:
Save this as test_sse.sh, make it executable with chmod +x test_sse.sh, and run it with ./test_sse.sh.